ダブルインディケーター戦略 (Dual Indicator Strategy) は,単純な移動平均値 (SMA) と移動平均収束差 (MACD) の指標を組み合わせた定量的な取引戦略である.複数の技術指標を利用することで,取引信号の精度を高めることを目的としている.
ダブルインディケーター戦略の核心は,SMAとMACDという2つの指標に基づいています.この戦略は,7~15~60期SMAと標準MACDパラメータ設定12/26/9を採用しています.
7期間のSMAが15期間のSMAと60期間のSMAを上回り,15期間のSMAが60期間のSMAを上回ると,SMAインジケーターから0.5の確率で上昇信号とみなされます.
同時に,MACD線がシグナル線を横切ると,MACD指標から0.5の確率で上昇信号とみなされます.
2つの指標の上昇信号の確率が1に足ると,ロングポジションが開かれます.
逆に,7期SMAが15期SMAと60期SMAを下回り,15期SMAが60期SMAを下回ると,SMA指標から0.5の確率で下落信号とみなされます.
一方,MACD線がシグナル線を下に横切ると,MACD指標から0.5の確率で下落信号とみなされます.
この2つの指標からの下落信号の確率が1に足ると,ショートポジションが開かれます.
さらに,この戦略は2つの異なる取利益ポイントを採用します.価格が9%上昇または減少したとき,ポジションの50%を閉鎖し,価格が21%上昇または減少したとき,残りのポジションを閉鎖します.
現行のポジションに逆のシグナルが発生した場合,新しいシグナルに基づいて新しいポジションを開く前に,現行のポジションを最初に閉じる.
ダブルインディケーター戦略の最大の利点は,SMAとMACDの両方の指標の強みを利用することです.SMAは価格傾向の変化を効果的に追跡し,市場のノイズをフィルターすることができます.MACDは短期的なトレンド逆転の機会を特定できます.両方を組み合わせることで,取引信号の信頼性が向上します.
さらに,異なるパラメータ設定のSMAを採用することで,長期から中期間の傾向が認識され,メリット戦略は部分的な利益を固定し,リスクを制御します.
ダブルインディケーター戦略の潜在的なリスクはいくつか注意する必要がある.技術指標のみに依存しているため,誤った信号が発生することがあります.また,不正な取利益設定は,主要なトレンドを見逃し,早期離脱につながる可能性があります.
戦略は,SMA期間のパラメータを調整したり,より信頼性の高いシグナルを確保するために追加のフィルタリング指標を組み込むことで最適化することができます. 傾向の動きを把握するために,市場変動に基づいて,収益率も動的に調整する必要があります.
二重指標戦略のいくつかの側面はさらに最適化できる:
RSI,ボリンジャー帯などの他の技術指標を追加してテストします
マシン学習アルゴリズムで 複数の変数を用いて 信号判断モデルを作ってみましょう
異なる製品と時間枠に基づいてパラメータ調整を実行します.
ストップ・ロスを組み込み,単一の取引損失を厳格に制御する.
持続的なトレンドを走るための 利潤戦略を最適化します
戦略の安定性と収益性は,体系的なバックテストと最適化によって継続的に向上できます.
ダブルインディケーター戦略は,SMAとMACDの強みを組み合わせて,リスクを効果的に制御しながら信号の精度を向上させる.強力な最適化可能性と汎用性により,堅牢で適応性の高い定量的な取引戦略である.継続的なデータ主導の改善により,戦略は強力な取引システムへと進化することができる.
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA & MACD Dual Direction Strategy", shorttitle="SMDDS", overlay=true, initial_capital=1000) // SMA settings sma7_length = input.int(7, title="7 Candle SMA Length") sma15_length = input.int(15, title="15 Candle SMA Length") sma60_length = input.int(60, title="60 Candle SMA Length") // MACD settings fast_length = input.int(12, title="Fast Length") slow_length = input.int(26, title="Slow Length") signal_length = input.int(9, title="Signal Length") // Leverage leverage = 10 // Calculate the SMAs sma7 = ta.sma(close, sma7_length) sma15 = ta.sma(close, sma15_length) sma60 = ta.sma(close, sma60_length) // Calculate the MACD line and Signal line [macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_length) // SMA-based Probabilities smaBullishProb = (sma7 > sma15 and sma7 > sma60 and sma15 > sma60) ? 0.5 : 0.0 smaBearishProb = (sma7 < sma15 and sma7 < sma60 and sma15 < sma60) ? 0.5 : 0.0 // MACD-based Probabilities macdBullishProb = ta.crossover(macdLine, signalLine) ? 0.5 : 0.0 macdBearishProb = ta.crossunder(macdLine, signalLine) ? 0.5 : 0.0 // Combined Probabilities combinedBullishProb = smaBullishProb + macdBullishProb combinedBearishProb = smaBearishProb + macdBearishProb // Trade logic using `if` conditions if combinedBullishProb == 1.0 strategy.close("Short") strategy.entry("Long", strategy.long, qty=leverage) if combinedBearishProb == 1.0 strategy.close("Long") strategy.entry("Short", strategy.short, qty=leverage) // Exit conditions based on profit points longTargetProfit1 = close * 1.09 longTargetProfit2 = close * 1.21 shortTargetProfit1 = close * 0.91 shortTargetProfit2 = close * 0.79 strategy.exit("Long TP1", from_entry="Long", limit=longTargetProfit1, qty_percent=0.5) strategy.exit("Long TP2", from_entry="Long", limit=longTargetProfit2) strategy.exit("Short TP1", from_entry="Short", limit=shortTargetProfit1, qty_percent=0.5) strategy.exit("Short TP2", from_entry="Short", limit=shortTargetProfit2) // Visualization (optional) plot(sma7, color=color.green, title="7 Candle SMA") plot(sma15, color=color.blue, title="15 Candle SMA") plot(sma60, color=color.red, title="60 Candle SMA") hline(0, "Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram")