この戦略の主な原則は以下のとおりです.
上記の原則から,この戦略は,動向平均システムの傾向判断とATR指標の変動測定を組み合わせて,トレンドフォローに重点を置き,引き上げリスクを制御することを目的として,トレンドフォロー戦略であることがわかります.
この戦略にはいくつかの利点がありますが,以下のリスクもあります.
上記のリスクに対処するために,戦略は以下の側面から最適化および改善することができます:
この戦略は,次の側面から最適化できます.
上記の最適化は戦略の適応性,強度,収益性を向上させることができるが,過度に最適化は曲線フィッティングにつながり,結果としてサンプル外でのパフォーマンスが低下する可能性があることに注意すべきである.したがって,十分なバックテストと検証は,サンプル内およびサンプル外の両方で実施されるべきである.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="2 Moving Averages", shorttitle="2MA", overlay=true) // Moving Averages len = input(14, minval=1, title="Length MA1") src = input(close, title="Source MA1") ma1 = sma(src, len) len2 = input(50, minval=1, title="Length MA2") src2 = input(close, title="Source MA2") ma2 = sma(src2, len2) // Plotting Moving Averages plot(ma1, color=#0b6ce5, title="MA1") plot(ma2, color=#00ff80, linewidth=2, title="MA2") // ATR Bands atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") upperBand = high + atr(atrLength) * atrMultiplier lowerBand = low - atr(atrLength) * atrMultiplier u =plot(upperBand, color=color.rgb(217, 220, 223, 84), title="ATR Upper Band") l = plot(lowerBand, color=color.rgb(217, 220, 223, 84), title="ATR Lower Band") fill(u, l, color=#471eb821, title="ATR Background") // Conditions for plotting arrows upArrowCondition = ma1 > ma2 and crossover(close, ma1) downArrowCondition = ma1 < ma2 and crossunder(close, ma1) // Plotting arrows plotshape(upArrowCondition, style=shape.arrowup, color=color.rgb(66, 45, 255), size=size.normal, location=location.belowbar, title="Up Arrow") plotshape(downArrowCondition, style=shape.arrowdown, color=color.red, size=size.normal, location=location.abovebar, title="Down Arrow") // Checkbox for trade execution showTrades = input(true, title="Hiển thị giao dịch") // Buy Condition if (upArrowCondition and showTrades) strategy.entry("Buy", strategy.long) // Sell Condition if (downArrowCondition and showTrades) strategy.entry("Sell", strategy.short) // Stop Loss and Take Profit stopLossBuy = low - atr(14) * atrMultiplier takeProfitBuy = close + (close - stopLossBuy) * 2 stopLossSell = high + atr(14) * atrMultiplier takeProfitSell = close - (stopLossSell - close) * 2 strategy.exit("Exit Buy", "Buy", stop=stopLossBuy, limit=takeProfitBuy) strategy.exit("Exit Sell", "Sell", stop=stopLossSell, limit=takeProfitSell)