Стратегия Hull Moving Average Trend Following использует Hull Moving Average для определения направления тренда рынка и генерации сигналов купли и продажи.
Стратегия использует как скользящую среднюю, так и простую скользящую среднюю для определения направления тренда. Когда более короткий период Hull MA пересекает более длинный период Hull MA, он генерирует сигнал покупки. Когда более короткий Hull MA пересекает ниже более длинного, он генерирует сигнал продажи.
Простая скользящая средняя определяет направление тренда в режиме реального времени. Когда более короткая EMA пересекается выше более длинной EMA, это указывает на восходящий тренд. Когда более короткая EMA пересекается ниже более длинной EMA, это указывает на нисходящий тренд. Сделки принимаются только тогда, когда сигналы Hull MA и EMA согласны на бычьем или медвежьем уклоне.
Кроме того, стратегия использует K-линейные телесные каналы для измерения колебаний рынка и избегания торговли в консолидации.
Hull MA более чувствителен к изменениям цен и ранним сдвигам тенденций.
Использование как Hull MA, так и EMA исключает ложные сигналы.
К-линейные каналы избегают чрезмерной торговли на боковых рынках.
Следование тенденции позволяет устойчиво получать прибыль по мере продления тенденции.
Движущиеся средние имеют задержки и могут пропустить оптимальные точки входа в обратный тренд.
Неточное обнаружение консолидации может привести к плохим сделкам.
Низкая частота торгов приводит к большому влиянию от одиночных проигрышных сделок.
Не в состоянии использовать краткосрочные колебания.
Оптимизировать периоды MA для своевременного генерирования сигналов тренда.
Для определения консолидации используют другие показатели, такие как RSI и BBANDS.
Осуществлять агрессивное управление капиталом, чтобы ограничить процент потерь на одну сделку.
Дополнительные стратегии для краткосрочной прибыли.
Стратегия Hull Moving Average Trend Following эффективно отслеживает средне- и долгосрочные тенденции посредством комбинированного использования Hull MA и EMA. Она накапливает прибыль на протяжении всех тенденций прибыли и выходит раньше, чем перемены. Это простая и практичная стратегия торговли количеством, которую стоит рекомендовать.
/*backtest start: 2023-08-16 00:00:00 end: 2023-09-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // strategy(title='HULLMiguel 2019/ Strategy v3', shorttitle='HULLMiguel_2019_Strategy', overlay=true, pyramiding=0, default_qty_value=1000, initial_capital=1000, currency=currency.USD) //Candle body resistance Channel-----------------------------// len = 34 src = input(close, title="Candle body resistance Channel") out = sma(src, len) last8h = highest(close, 13) lastl8 = lowest(close, 13) bearish = cross(close,out) == 1 and falling(close, 1) bullish = cross(close,out) == 1 and rising(close, 1) channel2=input(false, title="Bar Channel On/Off") ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0) ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=blue, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0) //fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel") //-----------------Support and Resistance RST = input(title='Support / Resistance length:', defval=15) RSTT = valuewhen(high >= highest(high, RST), high, 0) RSTB = valuewhen(low <= lowest(low, RST), low, 0) RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0) RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0) //--------------------Trend colour ema------------------------------------------------// src0 = close, len0 = input(13, minval=1, title="EMA 1") ema0 = ema(src0, len0) direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0 plot_color = direction > 0 ? lime: direction < 0 ? red : na plot(ema0, title="EMA", style=line, linewidth=3, color = plot_color) //-------------------- ema 2------------------------------------------------// src02 = close, len02 = input(21, minval=1, title="EMA 2") ema02 = ema(src02, len02) direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0 plot_color2 = direction2 > 0 ? green: direction2 < 0 ? red : na plot(ema02, title="EMA Signal 2", style=line, linewidth=2, color = plot_color2) //=============Hull MA// show_hma = input(false, title="Display Hull MA Set:") hma_src = input(close, title="Hull MA's Source:") hma_base_length = input(16, minval=1, title="Hull MA's Base Length:") hma_length_scalar = input(10, minval=0, title="Hull MA's Length Scalar:") hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length))) plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=5, title="Hull MA") dif_close_hull= (close-hullma(hma_src, hma_base_length+hma_length_scalar*6))/close Percent_dif = (dif_close_hull/(hullma(hma_src, hma_base_length+hma_length_scalar*6))) //direction3 = Percent_dif>0 ? +1 : Percent_dif<0 ? -1 : 0 //plot_color3 = direction3 > 0 ? lime: direction3 < 0 ? red : na //plot(dif_close_hull, title="dif close hull", style=line, linewidth=6, color = plot_color3) //============ signal Generator ==================================// Piriod=input('720') ch1 = security(syminfo.tickerid, Piriod, open) ch2 = security(syminfo.tickerid, Piriod, close) plot(ch1, title="EMA Signal 2", style=line, linewidth=1, color = blue) //longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open)) //plot((close-ema02)/ema02+close) longCondition = direction > 0 and direction2> 0 if (longCondition) strategy.entry("BUY", strategy.long) //shortCondition = crossunder(security(tickerid, Piriod, close),security(tickerid, Piriod, open)) shortCondition = direction < 0 and direction2 < 0 if (shortCondition) strategy.entry("SELL", strategy.short) ///////////////////////////////////////////////////////////////////////////////////////////