동적 이동 평균에 기초한 전략을 따르는 경향

저자:차오장, 날짜: 2024-01-02 10:44:53
태그:

img

전반적인 설명

이 전략은 동적인 이동 평균 지표에 기반하여 실시간으로 가격 트렌드를 추적하고 이동 평균이 깨지면 거래 신호를 생성합니다. 이 전략의 장점은 간단한 매개 변수 설정, 명확한 신호 규칙 및 중장기 보유에 적합합니다.

전략 논리

이 전략은 ALMA, EMA, SMA 등을 포함한 동적 이동 평균 지표를 활용합니다. 원리는 가격이 이동 평균보다 높을 때 길게 이동하고 아래로 넘어갈 때 짧게 이동하는 것입니다. 즉, 이동 평균은 가격 트렌드에 대한 바로미터로 작용하며 트렌드 반전이 발생하면 신호가 생성 될 수 있습니다.

특히, 전략은 높은 가격과 낮은 가격으로 형성된 이동 평균을 사용합니다. 낮은 가격 MA는 긴 신호의 신호 라인으로 작용하며 높은 가격 MA는 쇼트 라인으로 작용합니다. 닫기 가격이 낮은 가격 MA보다 상승하면 길게 이동합니다. 닫기 가격이 높은 가격 MA 이하로 떨어지면 짧게 이동합니다.

MA로 가격 트렌드를 판단하고 브레이크아웃 원칙과 결합하여 신호를 생성함으로써 간단하고 실용적인 트렌드 다음 전략이 형성됩니다.

장점

  • MA 지표와 함께 간단한 매개 변수 설정, 조작하기 쉽습니다
  • 거짓 신호 없이 명확한 신호 규칙
  • 시장 변화에 적응하기 위한 유연한 MA 유형
  • 조정 가능한 MA 기간은 다른 트렌드 사이클에 적합합니다.
  • 멀티 타임프레임 신호 검증이 신뢰성을 향상시킵니다.

위험 과 해결책

  • MA 지연은 몇 가지 기회를 놓칠 수 있습니다.
    • MA 기간을 단축하거나 EMA를 사용
  • 단기적인 큰 스윙 위험
    • 유연성을 위한 스톱 로스 공간을 넓혀라
  • 장기 보유 위험, 적시에 수익을 확보 할 수 없습니다.
    • 다른 지표를 결합하고, 최고를 추구하고 최저를 죽이는 것을 피하십시오.

최적화 방향

  • 기호 특성에 따라 MA 유형 및 매개 변수를 조정
  • 전략을 개선하기 위해 보조 지표를 추가합니다.
  • 스톱 로스 및 수익 메커니즘을 추가합니다.
  • 시간 프레임에 걸쳐 신호 신뢰성을 평가
  • 더 나은 매개 변수를 찾기 위해 기계 학습을 활용

결론

이 전략은 MA로 트렌드 방향을 판단하고 브레이크아웃 원칙에 따라 신호를 생성합니다. 사용하기 쉽고 중장기 보유에 적합합니다. 또한 시장 변화에 적응하기 위해 매개 변수를 조정할 수 있습니다. 단기 변동 및 장기 보유로 인한 위험은 스톱 로스/프로프트 테킹으로 관리해야합니다. 더 많은 지표를 통합하고 기계 학습을 통해 최적의 매개 변수를 찾는 것으로 개선할 여지가 있습니다.


/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

더 많은