이 전략은 동적인 이동 평균 지표에 기반하여 실시간으로 가격 트렌드를 추적하고 이동 평균이 깨지면 거래 신호를 생성합니다. 이 전략의 장점은 간단한 매개 변수 설정, 명확한 신호 규칙 및 중장기 보유에 적합합니다.
이 전략은 ALMA, EMA, SMA 등을 포함한 동적 이동 평균 지표를 활용합니다. 원리는 가격이 이동 평균보다 높을 때 길게 이동하고 아래로 넘어갈 때 짧게 이동하는 것입니다. 즉, 이동 평균은 가격 트렌드에 대한 바로미터로 작용하며 트렌드 반전이 발생하면 신호가 생성 될 수 있습니다.
특히, 전략은 높은 가격과 낮은 가격으로 형성된 이동 평균을 사용합니다. 낮은 가격 MA는 긴 신호의 신호 라인으로 작용하며 높은 가격 MA는 쇼트 라인으로 작용합니다. 닫기 가격이 낮은 가격 MA보다 상승하면 길게 이동합니다. 닫기 가격이 높은 가격 MA 이하로 떨어지면 짧게 이동합니다.
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)