ゴールデンクロス・ムービング・アベレージ戦略は,移動平均値に基づいたトレンドフォロー戦略である.異なる期間の移動平均値を計算して市場の傾向方向を決定し,それに応じて取引信号を生成する.具体的には,50日,100日,200日移動平均値を計算する.短期移動平均値が長期移動平均値を超えると,購入信号が生成される.短期移動平均値が長期移動平均値を下回ると,販売信号が生成される.
この戦略のコア信号は,移動平均の黄金十字から来ます.いわゆる黄金十字は,短期移動平均が長期移動平均を超越することを指し,市場は上昇傾向に入っていることを示します.この戦略は,50日移動平均を短期MAと200日移動平均を長期MAとして使用します.両MAが黄金十字を形成するときに購入し,50日移動平均が100日移動平均を下回ると販売します.
移動平均を設定することで,市場動向の曲線点をより良く把握できる.短期MAは価格変化に迅速に対応し,最近の価格動向を反映する.長期MAは短期変動に敏感ではなく,主要なトレンド方向を決定することができる.両MAの間に形成された黄金十字は,トレンド逆転を効果的に確認し,取引信号を生成することができる.
この戦略の利点は次のとおりです.
強いトレンドフォロー能力. 双向移動平均戦略は,主要市場トレンドをフォローし,短期的な市場騒音に打たれることを避け,強いトレンドフォロー能力を有します.
明確な取引シグナル.この戦略は,取引シグナルを生成するために移動平均の関係に完全に依存し,シグナル生成と解釈を非常に直接的で曖昧なものにして,主観的な判断の誤りを避ける.
バックテストの実施が簡単です.典型的なトレンドフォロー戦略として,戦略の有効性を評価するためにバックテストのために迅速に実装できます.
移動平均期,取引製品,およびタイムフレームなどのパラメータは,より良いパラメータ組み合わせを見つけるために最適化され,拡張することができます.
この戦略にはいくつかのリスクもあります:
変動平均値に固有の遅れがあるため,重要な転換点を正確に特定できず,最良の買い機会を逃す可能性があります.
短期的には複数の黄金十字が偽信号を形成し,投資家が間違った判断をする可能性があります.
突発的な出来事のリスク 大事な突発的な出来事によって 移動平均戦略が対処できないような 劇的な市場変動が起こる可能性があります
市場が長期間にわたって範囲に限定されている場合,戦略は過度に無効な信号を生成し,頻繁な取引が結果となり,全体的な収益性は低い.
これらのリスクは,移動平均のパラメータを調整し,ストップ損失を設定し,または他の指標と組み合わせることで軽減できます.
戦略は以下の側面で最適化できます.
最適な組み合わせを見つけるために移動平均パラメータを最適化する.より多くのサイクルパラメータをテストすることができる.三倍指数移動平均のような適応移動平均も導入できる.
単一の損失を制御するためにストップ損失戦略を追加します. 遅延ストップ損失と比例ストップ損失の両方がさらなる損失拡大を防ぐことができます.
他の指標を組み合わせてシグナルをフィルタリングします.ダブル移動平均信号は,トレンドが強いときにのみシグナルが生成されることを確認するために,ボリュームと変動などの指標と組み合わせることができます.
戦略を最適化するために機械学習技術を活用する.アルゴリズムは,戦略の収益性を継続的に改善するために,より最適なパラメータセットと取引ルールを自動的に検索することができます.
ゴールデンクロス・ムービング・アベレージ戦略は,二重移動平均の間の関係を計算して,中期から長期間のトレンド機会を把握しようとすることで,主要市場傾向方向を決定する.利点は,実装し最適化しやすい明確なシグナルルールである.中期から長期間の投資家には適している.また,この戦略の遅れの制限と潜在的な誤ったシグナルも注意し,潜在的なリスクを軽減するために組み合わせと最適化措置を講じるべきである.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="MA Cross", overlay=true) short = sma(close, 50) short1 = sma(close[5], 50) medium = sma(close, 100) long = sma(close, 200) long1 = sma(close[5], 200) plot(short, color = color.red) plot(long, color = color.green) trendUp = (cross(short, long) and (long1 > short1) ? true : false) x = if (trendUp) (long1 - short1)*5 else 0 //start = timestamp(2000, 01, 01, 00, 00) // backtest start window //finish = timestamp(2020, 02, 09, 23, 59) // backtest finish window //window() => time >= start and time <= finish ? true : false //strategy.entry("long", true, 1000, limit = high, when = window() and trendUp) //strategy.close("long", when = window() and close < medium) strategy.entry("long", true, 1, limit = high, when = trendUp) strategy.close("long", when = close < medium)