この戦略は,高速移動平均値がスロー移動平均値を超えると購入信号を生成する.同時に,平均値の真の範囲に基づいて,販売信号を設定するために,ストップ損失価格を計算する.この戦略は,市場動向を効果的に追跡し,利益を得るときに適時に損失を削減することができます.
この戦略は,トレンドフォローとストップ損失管理の利点を組み合わせます.中長期トレンドを追跡し,ストップ損失を通じて単一の取引損失を制御することができます.
ストップ損失幅をバランスするためにパラメータを最適化できます.入力のタイミングを改善するために他の指標も組み合わせることができます.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //created by XPloRR 24-02-2018 strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100) testStartYear = input(2005, "Start Year") testStartMonth = input(1, "Start Month") testStartDay = input(1, "Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2050, "Stop Year") testStopMonth = input(12, "Stop Month") testStopDay = input(31, "Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Background", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) emaPeriod = input(12, "Exponential MA") smaPeriod = input(45, "Simple MA") stopPeriod = input(12, "Stop EMA") delta = input(6, "Trailing Stop #ATR") testPeriod() => true emaval=ema(close,emaPeriod) smaval=sma(close,smaPeriod) stopval=ema(close,stopPeriod) atr=sma((high-low),15) plot(emaval, color=blue,linewidth=1) plot(smaval, color=orange,linewidth=1) plot(stopval, color=lime,linewidth=1) long=crossover(emaval,smaval) short=crossunder(emaval,smaval) //buy-sell signal stop=0 inlong=0 if testPeriod() if (long and (not inlong[1])) strategy.entry("buy",strategy.long) inlong:=1 stop:=emaval-delta*atr else stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1])) inlong:=nz(inlong[1]) if ((stopval<stop) and (inlong[1])) strategy.close("buy") inlong:=0 stop:=0 else inlong:=0 stop:=0 plot(stop,color=green,linewidth=1)