Стратегия по постоянному добавлению покупательских сигналов

Вопрос или проблема

Я работаю над стратегией индексного инвестирования, в которой я хочу добавлять X сумму каждый раз, когда цена закрытия падает на Y% от максимума за месяц. Это всего лишь эксперимент, в целом это своего рода умная стратегия по покупке на спаде, я выйду из позиции только в последний торговый день, чтобы проверить результативность. Я пытался найти образцы скриптов, где я мог бы продолжать добавлять деньги, но продавать только один раз за день, но без успеха. Может кто-нибудь помочь мне с этим? Ниже приведён скрипт, над которым я работаю.

//@version=5
strategy(title="Стратегия индексного SIP", shorttitle="Стратегия индексного SIP", overlay = true, pyramiding=1, default_qty_type=strategy.percent_of_equity,default_qty_value=100, precision=2, process_orders_on_close  = true)


// ====== ЛОГИКА ПОКУПКИ

length   = input.int(22, minval=1)
h        = ta.highest(high, length)
percDip   = input.int(5, minval=1)


source = close
downPer= ((h - close)/h)*100

diffConditionBuy = false
if downPer > percDip
    diffConditionBuy := true

// ТОЧКА ДОПОЛНЕНИЯ --  
if diffConditionBuy == true
    strategy.entry("x", strategy.long, comment="Покупка")

// ====== ЛОГИКА ПРОДАЖИ
isLastTradingDay = ((timenow-time)<300000000)
diffConditionSell = isLastTradingDay

// ТОЧКА ВЫХОДА
if diffConditionSell == true
    strategy.close_all("Выход сегодня")

Ответ или решение

Ваша стратегия "умного падения" (Smart DIP Strategy) основана на добавлении средств в индекс при сниженном уровне закрытия. Давайте улучшить ваш код, чтобы он продолжал добавлять средства при выполнении условий и продавал только в последний торговый день месяца.

Приведенный вами код уже близок к желаемой реализации, однако, чтобы реализовать функционал добавления средств в позицию (покупку) при каждом сигнале, нужно внести несколько изменений. Четче определим параметры и условия для добавления и выхода.

Вот обновленный код:

//@version=5
strategy(title="Index SIP Strategy", shorttitle="Index SIP Strategy", overlay=true, pyramiding=100, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2, process_orders_on_close=true)

// ====== BUY LOGIC
length   = input.int(22, minval=1) // Период для нахождения максимума
h        = ta.highest(high, length) // Находим максимум за период
percDip  = input.int(5, minval=1) // Процент падения

source = close
downPer = ((h - close) / h) * 100 // Рассчитываем процент снижения от максимума

// Условия для добавления позиции
if downPer > percDip
    strategy.entry("Buy", strategy.long, comment="Добавить средства")

// ====== SELL LOGIC
isLastTradingDay = (dayofweek(timenow) == dayofweek.monday and hour(timenow) == 15 and minute(timenow) == 30) // Здесь указываем последний день торговли
diffConditionSell = isLastTradingDay

// EXIT POINT
if diffConditionSell
    strategy.close_all("Продажа в последний день")

Объяснение внесенных изменений:

  1. Изменение параметров для pyramiding: Увеличил параметр pyramiding до 100. Это число определяет, сколько раз можно увеличивать позицию. Заметьте, что в вашем случае лучше установить его достаточно высокой, чтобы вы могли добавлять позиции в соответствии с вашим подходом.

  2. Условия для входа в сделку: Теперь каждая ошибка (сигнал) о покупке добавляется к одной и той же позиции при выполнении условия. Таким образом, вы будете добавлять к своему капиталу каждый раз, когда цена упадет на более чем указанный процент от недавнего максимума.

  3. Условия для выхода из сделки: Я улучшил условие для последнего торгового дня, чтобы было более понятно, что продажа происходит в определённое время последнего дня (вы можете настроить, в какой день вы хотите продавать, например, за несколько минут до закрытия рынка).

  4. Корректировка параметров на вход: Настройте default_qty_value, чтобы он определял, какая часть капитала используется для каждой новой покупки.

Этот код обслуживает стратегию добавления средств по сигналам падения и продажу в определенные дни. Подкорректируйте дополнительные элементы под ваш рынок и брокеры, так как правила могут отличаться.

Оцените материал
Добавить комментарий

Капча загружается...