헐 이동 평균 추세 추종 전략


생성 날짜: 2023-09-16 18:41:33 마지막으로 수정됨: 2023-09-16 18:41:33
복사: 0 클릭수: 696
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

헐 이동 평균 트렌드 추적 전략은 헐 이동 평균을 사용하여 시장의 경향 방향을 판단하고 구매 및 판매 신호를 발송하는 정량 거래 전략이다. 이 전략은 중장선 트렌드를 포착하고, 트렌드 초기 단계에서 포지션을 구축하고, 트렌드 반전 전에 포지션을 중지한다.

원칙

이 전략은 동시에 헐 이동 평균과 일반 이동 평균을 사용하여 트렌드 방향을 판단한다. 짧은 기간 헐 MA 상에서 긴 기간 헐 MA를 통과할 때 구매 신호이다. 짧은 기간 헐 MA 아래에서 긴 기간 헐 MA를 통과할 때 판매 신호이다.

일반 이동 평균은 즉각적인 트렌드 방향을 판단하는 데 사용됩니다. 짧은 기간의 EMA에서 긴 기간의 EMA를 통과할 때 호불호가, 짧은 기간의 EMA 아래에서 긴 기간의 EMA를 통과할 때 하락이다. 헐 MA 신호와 EMA가 동방향 호불호 또는 하락 할 때만 거래 신호가 발송됩니다.

또한, 이 전략은 K선 실물 채널을 사용하여 시장의 변동량을 판단하여 불안한 시장에서 잘못된 거래를 피합니다. 가격 돌파 채널에서만 입장을 고려하십시오.

장점

  • Hull 이동 평균은 가격 변화에 더 민감하여 트렌드 전환을 더 일찍 잡을 수 있다.

  • 헐 MA와 EMA를 조합하여 가짜 신호를 필터링할 수 있다.

  • K선 채널을 사용하여 흔들림을 판단하여 재조정에서 자주 거래하는 것을 피하십시오.

  • 트렌드 트래킹을 통해 중·장기 트렌드를 지속적으로 파악할 수 있습니다.

위험

  • 이동 평균은 추세가 뒤집어지는 가장 좋은 입구 지점을 놓칠 수 있습니다.

  • “지난 몇 년 동안, 우리는 우리의 경제를 재구성하기 위해 많은 노력을 기울였습니다.

  • 거래의 수가 적고, 단편적 손실에 취약하다.

  • “이런 일이 벌어진다면, 우리는 더 이상 이 문제를 해결하지 못할 것이다.

어떻게 대처해야 할까요?

  • 이동 평균의 주기적 변수를 최적화하고, 신속한 반응 경향을 추구한다.

  • RSI, BBANDS 등과 같은 다른 지표들을 사용하여 진동을 판단하십시오.

  • 적극적인 자금 관리로 단편적 손실 비율을 조절한다.

  • 다른 전략들을 활용하여 단선 수익을 잡을 수 있습니다.

요약하다

헐 이동 평균 트렌드 추적 전략은 헐 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)

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