Стратегия генерирует сигнал покупки с помощью перекрёстков быстрых EMA с покупкой средней линии и медленными SMA с продажей средней линии, а также использует динамические стопы ATR для контроля риска, чтобы превзойти стратегию покупки и удержания через небольшое количество сделок.
Рассчитывается быстрая EMA-покупка средней линии и медленная SMA-покупка средней линии, когда быстрая линия пересекает медленную и достигает определенной силы покупки.
Вычислить быструю EMA, продающую среднюю линию, и медленную SMA, продающую среднюю линию, которые генерируют сигнал продажи, когда быстрая линия пересекает медленную.
Дневная средняя величина N, умноженная на множитель, используется для динамического отслеживания стоп-лосса и контроля риска.
Запуск стратегии, покупка и продажа во время обратной оценки.
Каждая акция оптимизирует различные комбинации параметров, чтобы найти оптимальный.
Эта стратегия сочетает в себе преимущества движущихся средних показателей для определения тенденций и перекрестных сигналов и динамического отслеживания стоп-убытков ATR, оптимизируя параметры для адаптации к особенностям каждой разновидности, с целью получения избыточной прибыли за счет небольшого количества точных сделок, превышающих покупку и удержание.
Скрещивание быстрых EMA и медленных SMA создает торговые сигналы, позволяющие идентифицировать тренды.
ATR-стоп корректирует свои стоп-позиции в зависимости от рыночных колебаний, чтобы эффективно контролировать риск.
Оптимизация параметров каждой акции может повысить доходность.
Простая логика и правила торговли, легко реализуемая и проверяемая.
Отслеживание полностью завершено, можно проверить эффективность стратегии.
Поиск стабильности превышает покупку и удержание избыточных доходов.
Оптимизированные параметры не обязательно будут использоваться в будущем и могут нуждаться в регулярной оптимизации.
Пересечение EMA и SMA может привести к ошибочному сигналу или задержке сигнала.
ATR-стоп может быть слишком радикальным, и можно уместно расширить зону остановки.
Слишком низкая частота сделок может привести к тому, что вы упустите лучшие возможности.
Необходимо учитывать влияние на стоимость сделки.
Продолжайте тестировать различные комбинации параметров, чтобы найти оптимальные.
Попробуйте ввести другие показатели для фильтрации сигнала.
Оптимизация циклических параметров ATR, балансировка чувствительности стоп-стоп.
Оценить эффективность надлежащего смягчения пределов убытков.
Рассмотрите методы автоматического поиска оптимальных параметров в сочетании с машинным обучением.
Исследование эффективности увеличения частоты открытия складов.
Эта стратегия, которая сочетает в себе преимущества равнолинейного перекрестного генерирования сигналов и контроля риска ATR, является простой и практичной стратегией сверхпокупки и удержания, которая оптимизирована для каждого параметра. Хотя оптимизированные параметры не гарантируют будущего эффекта, стратегия имеет четкую логику торговли в целом, практически работает, заслуживает дальнейшего совершенствования и тестирования, и имеет хорошее вдохновение.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//created by XPloRR 04-03-2018
strategy("XPloRR MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)
testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
ema1Period = input(12, "Fast EMA Buy")
sma1Period = input(54, "Slow SMA Buy")
strength1 = input(52, "Minimum Buy Strength")
ema2Period = input(18, "Fast EMA Sell")
sma2Period = input(55, "Slow SMA Sell")
strength2 = input(100, "Minimum Sell Strength")
delta = input(8, "Trailing Stop (#ATR)")
testPeriod() => true
ema1val=ema(close,ema1Period)
sma1val=sma(close,sma1Period)
ema1strength=10000*(ema1val-ema1val[1])/ema1val[1]
ema2val=ema(close,ema2Period)
sma2val=sma(close,sma2Period)
ema2strength=10000*(ema2val-ema2val[1])/ema2val[1]
plot(ema1val,color=blue,linewidth=1)
plot(sma1val,color=orange,linewidth=1)
plot(ema2val,color=navy,linewidth=1)
plot(sma2val,color=red,linewidth=1)
long=crossover(ema1val,sma1val) and (ema1strength > strength1)
short=crossunder(ema2val,sma2val) and (ema2strength < -strength2)
stopval=ema(close,6)
atr=sma((high-low),15)
inlong=0
buy=0
stop=0
if testPeriod()
if (inlong[1])
inlong:=inlong[1]
buy:=close
stop:=iff((stopval>(stop[1]+delta*atr)),stopval-delta*atr,stop[1])
if (long) and (not inlong[1])
strategy.entry("buy",strategy.long)
inlong:=close
buy:=close
stop:=stopval-delta*atr
plot(buy,color=iff(close<inlong,red,lime),style=columns,transp=90,linewidth=1)
plot(stop,color=iff((short or (stopval<stop)) and (close<inlong),red,lime),style=columns,transp=60,linewidth=1)
if testPeriod()
if (short or (stopval<stop)) and (inlong[1])
strategy.close("buy")
inlong:=0
stop:=0
buy:=0