概要: この戦略は,異なる期間の3つの移動平均値に基づいて,黄金クロスと死亡クロス取引を実施する.短期MAが長期MAを超えると長期MAが伸び,短期MAが長期MAを下回ると短くなります.トレンド方向はトレンドMA線によって決定されます.
戦略論理:
3つのMAを定義します.短期間MA,長期間MA,傾向MA.期間はそれぞれ20,200,50です.
購入シグナルは,短期間MAが長期間MAを超えると生成される.売却シグナルは,短期間MAが長期間MAを下回ると生成される.
ショートとロングMAがトレンドMAよりも高いかどうかを確認します.そうでない場合は,トレンドに反して取引を避けるためにシグナルをフィルタリングします.
ストップ・ロスを設定し,エントリー価格の割合として利益を取ります.バックテストに基づいてパラメータを最適化します.
入力信号を視覚化するために MA 交差点を描画する.
利点:
シンプルで直感的な戦略論理 分かりやすく実行できます
中期トレンドを効果的に把握し その勢いで取引することができます
トレンドとフィルタリングする MA は,トレンドに反する取引を避けます.
承認期間は,異なる市場状況に合わせて調整できます.
リスクをコントロールするために ストップ・ロスを調整し 利益を取ることができます
リスク:
急激な不安定な動きがストップロスを引き起こす可能性があります.
トレンドが逆転すると 損失は大きくなります
パラメータの調整が正しくない場合,過剰取引や機会を逃す可能性があります.
取引コストを考慮する必要があります.
改善点:
偽信号を避けるため ATR のような 揮発性フィルターを追加します
マシン学習を使って パーマータを動的に最適化します
トレンドを決定するためにMACDのようなより多くの指標を追加します.
利益を確保するためにストップロスを実行します
最適のストップ・ロストと 利益のレベルを見つけるためのバックテストです
結論は
戦略は,明確な論理と簡単な実行でトレンドを効果的に捉える.トレンドフィルター,ストップ・ロスト,テイク・プロフィートでリスクを制御する.パラメータチューニングは市場条件に最適化する必要があります.より多くの指標がパフォーマンスを向上させることができます.中期トレンド取引に適しています.バックテストとデモ取引でうまく機能しています.ライブ取引では,ウィップソーとトレンド逆転リスクに注意してください.全体的に実用的な価値があります.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("XAU M15", overlay=true) // Define input parameters long_length = input.int(64, title="Long MA Length") short_length = input.int(1, title="Short MA Length") trend_length = input.int(200, title="Trend MA Length") // Calculate moving averages long_ma = ta.sma(close, long_length) short_ma = ta.sma(close, short_length) trend_ma = ta.sma(close, trend_length) // Plot moving averages on chart plot(long_ma, color=color.blue, title="Long MA") plot(short_ma, color=color.red, title="Short MA") plot(trend_ma, color=color.green, title="Trend MA") // Entry conditions enterLong = ta.crossover(long_ma, short_ma) and long_ma > trend_ma and short_ma > trend_ma enterShort = ta.crossunder(long_ma, short_ma) and long_ma < trend_ma and short_ma < trend_ma if (enterLong) strategy.entry("Long", strategy.long) if (enterShort) strategy.entry("Short", strategy.short) // Exit conditions exitLong = ta.crossunder(long_ma, short_ma) exitShort = ta.crossover(long_ma, short_ma) if (exitLong) strategy.close("Long") if (exitShort) strategy.close("Short") // Set stop loss and take profit levels long_stop_loss_percentage = input(1, title="Long Stop Loss (%)") / 100 long_take_profit_percentage = input(3, title="Long Take Profit (%)") / 100 short_stop_loss_percentage = input(1, title="Short Stop Loss (%)") / 100 short_take_profit_percentage = input(3, title="Short Take Profit (%)") / 100 strategy.exit("Take Profit/Stop Loss", "Long", stop=close * (1 - long_stop_loss_percentage), limit=close * (1 + long_take_profit_percentage)) strategy.exit("Take Profit/Stop Loss", "Short", stop=close * (1 + short_stop_loss_percentage), limit=close * (1 - short_take_profit_percentage)) plotshape(series=enterLong, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny) plotshape(series=enterShort, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)