이동평균 크로스오버에 기초한 전략을 따르는 경향

저자:차오장, 날짜: 2023-10-24 11:02:52
태그:

img

전반적인 설명

이 전략은 주로 이동 평균의 황금 십자와 죽은 십자 및 이동 평균의 촛불 돌파구를 사용하여 긴 및 짧은 결정을 내린다. 짧은 기간 이동 평균이 더 긴 기간 이동 평균을 넘을 때 긴 기간이 길어지고 짧은 기간 이동 평균이 더 긴 기간 이동 평균을 넘을 때 짧은 기간이 짧아진다. 촛불 닫기 가격이 이동 평균을 넘을 때 입구 신호로 사용됩니다.

원칙

  1. 서로 다른 기간을 가진 EMA1와 EMA2라는 두 개의 이동 평균을 계산합니다. EMA1는 짧은 기간이 있고 EMA2는 긴 기간이 있습니다.

  2. EMA1가 EMA2를 넘어가는지 확인합니다.

  3. EMA1가 EMA2 아래로 넘어가는지 확인합니다.

  4. 엔트리 신호로 닫기 가격이 EMA1을 통과하는지 여부를 결정합니다.

  5. 출구 메커니즘: 고정 스톱 손실을 설정하거나 스톱 손실을 설정하기 위해 Donchian 채널을 사용하십시오.

주요 기능:

  • ema ((): 기하급수적인 이동 평균을 계산합니다.
  • 크로스오버 (crossover): EMA1가 EMA2를 가로지르는지 여부를 결정합니다.
  • crossunder ((): EMA1가 EMA2보다 낮을지 결정합니다.
  • rise (() / falling ((): 가격 상승 또는 하락 여부를 결정
  • valuewhen(: 조건에 따라 다른 값을 반환

장점

  1. 간단한 논리, 이해하기 쉽고 실행하기 쉽습니다.

  2. 트렌드를 효과적으로 추적하기 위해 이동 평균의 트렌드를 따르는 특성을 활용하십시오.

  3. 촛불 닫기 가격 돌파구를 결합하면 잘못된 돌파구를 피합니다.

  4. 다양한 이동 평균 조합의 유연한 사용, 다른 기간에 적응할 수 있습니다.

  5. 스톱 로스 메커니즘은 위험을 통제합니다.

위험성

  1. 빈번한 황금색 십자가와 시장 연장 과정에서 죽은 십자가는 화살표를 일으킨다.

  2. 고정된 스톱 로즈 포인트는 시장 변화에 따라 조정하기에는 너무 딱딱할 수 있습니다.

  3. 이동평균은 지연하고 전환점에 반전 신호를 놓칠 수 있습니다.

  4. 거짓 돌파구를 필터링하는 데 필요한 이동 평균 기울기의 정확한 판단

  5. 매개 변수 선택에 주의가 필요합니다. 부적절한 빈도 또는 지연은 전략 성과에 영향을 줄 수 있습니다.

최적화

  1. MACD 제로 라인 크로스오버는 트렌드 및 필터 통합을 결정하는 데 도움이 될 수 있습니다.

  2. 고정 스톱 손실을 개선하기 위해 동적 스톱 손실 라인을 위해 Donchian 채널을 추가합니다.

  3. 부진한 트렌드를 판단하기 위해 볼링거 밴드를 추가하여 시장 통합 중에 비효율적인 거래를 피합니다.

  4. 이동 평균 매개 변수 조합을 최적화하고 다른 기간 전략의 실제 성능을 테스트합니다.

  5. 지연을 줄이기 위해 고정 이동 평균을 추가하는 것을 고려하십시오.

결론

이 전략의 전반적인 논리는 간단하고 명확하며, 고전적인 이동 평균 크로스오버 거래 기법을 활용하고, 잘못된 신호를 효과적으로 필터하기 위해 진입을 위해 촛불 브레이크아웃을 결합합니다. 최적화 공간에는 트렌드 강도, 동적 스톱 등에 대한 다른 지표의 사용이 포함됩니다. 일반적으로, 이동 평균에 기반한 트렌드 다음 전략은 고전적이고 직관적이며, 최적화를위한 귀중한 탐구 공간이 있습니다.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='Mega crypto bot strategy', shorttitle='megacryptobot_Strategy', overlay=true, pyramiding=0, initial_capital=10000, 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=black, 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=10) 
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=1, 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  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, 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(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, 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=2, title="Hull MA")

//============ signal Generator ==================================//
period = input('720')
ch1 = request.security(syminfo.tickerid, period, open)
ch2 = request.security(syminfo.tickerid, period, close)
longCondition = crossover(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

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

더 많은