Эта стратегия сочетает в себе медленные движущиеся средние Хайкена Аши и экспоненциальные скользящие средние для выявления тенденций и совершения длинных/коротких сделок на трендовых рынках.
В стратегии используются следующие показатели:
Медленный Хайкен-Аши: специальный тип свечи, рассчитанный с использованием средней цены предыдущей панели, фильтруя рыночный шум и выявляя тенденции.
Экспоненциальная скользящая средняя: сглаженные средние цены с применением экспоненциального взвешивания.
Конкретная логика торговли:
Идите длинные, когда цена пересекает 100-дневную EMA, идите короткие, когда цена пересекает 100-дневную EMA.
Выходные позиции, когда открытая цена Хайкена Аши
Стратегия сочетает в себе сигналы, следующие за трендом, и сигналы, указывающие на обратный тренд, которые позволяют отслеживать большие колебания цен на рынках с тенденцией, избегая чрезмерных потерь при обратном тренде.
EMA определяет общее направление тенденции рынка, предотвращая отвлечение от локальных колебаний.
Кроссоверы Хайкена Аши позволяют ранне обнаружить потенциальные изменения.
Адаптивный фильтр KAMA уменьшает ложные сигналы.
Неожиданные, большие перебои в средней средней стоимости могут привести к увеличению потерь.
Сигналы отмены могут задерживаться.
Недостаточная параметризация EMA отрицательно влияет на производительность.
Включить дополнительные индикаторы, такие как MACD и полосы Боллинджера, чтобы избежать одновременных ошибок EMA/Heiken Ashi.
Динамически оптимизировать параметры EMA на основе волатильности рынка, соответственно ужесточая остановки/увеличивая терпимость к скольжению.
Использование машинного обучения для автоматической настройки параметров, фильтрации правил и повышения надежности.
Стратегия относительно проста и практична в целом, сочетая в себе как элементы тренда, так и элементы обратного движения.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-19 10:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("NoScoobies Slow Heiken Ashi and Exponential Moving average Strategy 2.2", overlay=true) //SHA p=input(6,title='Period') fastend=input(0.666,step=0.001) slowend=input(0.0645,step=0.0001) kama(close,amaLength)=> diff=abs(close[0]-close[1]) signal=abs(close-close[amaLength]) noise=sum(diff, amaLength) efratio=noise!=0 ? signal/noise : 1 smooth=pow(efratio*(fastend-slowend)+slowend,2) kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close)) kama hakamaper=1 Om=sma(open,p) Hm=sma(high,p) Lm=sma(low,p) Cm=sma(close,p) vClose=(Om+Hm+Lm+Cm)/4 vOpen= kama(vClose[1],hakamaper) vHigh= max(Hm,max(vClose, vOpen)) vLow= min(Lm,min(vClose, vOpen)) asize=vOpen-vClose size=abs(asize) //MMAR exponential = input(true, title="Exponential MA") src = close ma05 = exponential ? ema(src, 05) : sma(src, 05) ma10 = exponential ? ema(src, 10) : sma(src, 10) ma15 = exponential ? ema(src, 15) : sma(src, 15) ma20 = exponential ? ema(src, 20) : sma(src, 20) ma25 = exponential ? ema(src, 25) : sma(src, 25) ma30 = exponential ? ema(src, 30) : sma(src, 30) ma35 = exponential ? ema(src, 35) : sma(src, 35) ma40 = exponential ? ema(src, 40) : sma(src, 40) ma45 = exponential ? ema(src, 45) : sma(src, 45) ma50 = exponential ? ema(src, 50) : sma(src, 50) ma55 = exponential ? ema(src, 55) : sma(src, 55) ma60 = exponential ? ema(src, 60) : sma(src, 60) ma65 = exponential ? ema(src, 65) : sma(src, 65) ma70 = exponential ? ema(src, 70) : sma(src, 70) ma75 = exponential ? ema(src, 75) : sma(src, 75) ma80 = exponential ? ema(src, 80) : sma(src, 80) ma85 = exponential ? ema(src, 85) : sma(src, 85) ma90 = exponential ? ema(src, 90) : sma(src, 90) ma95 = exponential ? ema(src, 95) : sma(src, 95) ma100 = exponential ? ema(src, 100) : sma(src, 100) longcondition=src>ma100 shortcondition=src<ma100 long=longcondition and size<size[1] and (vOpen<vClose or vOpen>vClose) short=shortcondition and size<size[1] and (vOpen>vClose or vOpen<vClose) close_long=longcondition and crossunder(open, vClose) close_short=shortcondition and crossover(open, vClose) _close=close_long[2] or close_short[2] if long strategy.entry("LONG", strategy.long) strategy.close("LONG", when = _close) if short strategy.entry("SHORT", strategy.short) strategy.close("SHORT", when = _close)