Тенденция скользящей средней корпуса в соответствии со стратегией

Автор:Чао Чжан, Дата: 2023-09-16 18:41:33
Тэги:

Обзор

Стратегия 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)

///////////////////////////////////////////////////////////////////////////////////////////

Больше