ダブル・ムービング・平均クロスオーバー戦略は,ムービング・平均値に基づいたトレンドフォロー戦略である.異なる期間のムービング・平均値を計算し,クロスオーバーを特定することによって取引信号を生成する.この戦略は,シグナルを形成するために,高速移動平均値と遅い移動平均値を使用する.高速MAが遅いMAを超えると,上昇傾向をとり,購入する.高速MAが遅いMAを下回ると,下落傾向をとり,販売する.
この戦略は主にMAクロスオーバーを頼りに取引信号を生成する.具体的には,次のステップを含む.
速度のMAと遅さのMAを計算します.速度のMAは10,遅さのMAは50です.
MA関係を識別する.速いMAが遅いMAを越えたときに購入信号が生成される.速いMAが遅いMAを下回ったときに販売信号が生成される.
買い・売りシグナルを発行します. 買い・売りシグナルが出るとロング,売り・売りシグナルが出るとショートします.
ストップ・ロスを設定し,利益を得ます.取引に入ると,入力パーセントに基づいてストップ・ロスを設定し,リスクを管理するために利益を得ます.
この戦略は,異なるタイムフレームにおける価格傾向の変化を比較することによって,市場が現在上昇傾向か下落傾向にあるかどうかを決定する.これは典型的なトレンドフォロー戦略である.MAsは市場のノイズをフィルタリングし,より信頼性の高い取引信号を生成する.
中期から長期間の傾向を効果的に把握し,MAsの固有の傾向を追求する性質を利用する.
シンプルで明快なクロスオーバー信号を 簡単に実装できます
パラメータ最適化のために,快速と遅い期間をカスタマイズできます.
ストップ・ロスを通して 個々の取引での損失を制限します
波及市場での 暴動や過剰取引に 傾向がある
短期的な機会を逃すこともあります
突発的なニュースには 考慮されません
リスク管理のメカニズムがないため,リスクの許容範囲を超えた損失をもたらす可能性があります.
リスク管理
統合中に誤った信号を減らすために,MA期間を最適化する.
MA遅延に対処するために他の指標をフィルターとして追加します.
ニュース分析の補完です
ストップ・ロストとポジション・サイジングを導入して損失を制限する.
チャンネルやパターンのような他の分析ツールと組み合わせて信号の質を向上させます
最適な組み合わせを見つけるために,高速MAと遅いMAのパラメータを最適化します.高速MAの10-30日と遅いMAの20-120日がよく機能します.
固定分数位置サイズ付けは,トレンドでの利益を改善することができます.
突発的な出来事を扱うための論理を組み込む ダウンニュース後に取引を停止するなど
バックテストと紙取引は,システムのパフォーマンスを評価し,継続的に改善します.
ダブル・ムービング・平均クロスオーバー戦略は,高速・遅いMAクロスオーバーを比較することでトレンド方向を特定する.これはシンプルで実践的なトレンドフォローアプローチである.効果的ではあるが,パラメータチューニング,フィルター追加,その他のツールを組み込むなどの最適化によって解決できるいくつかの制限がある.適切なリスク制御により,この戦略は良いリターンを提供することができる.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Simple Moving Average Crossover", overlay=true) // Input parameters fast_length = input(10, title="Fast MA Length") slow_length = input(50, title="Slow MA Length") stop_loss_pct = input(1, title="Stop Loss Percentage", minval=0, maxval=5) / 100 // Calculate moving averages fast_ma = sma(close, fast_length) slow_ma = sma(close, slow_length) // Plot moving averages plot(fast_ma, color=color.blue, title="Fast MA") plot(slow_ma, color=color.red, title="Slow MA") // Strategy logic long_condition = crossover(fast_ma, slow_ma) short_condition = crossunder(fast_ma, slow_ma) // Execute trades if (long_condition) strategy.entry("Long", strategy.long) if (short_condition) strategy.entry("Short", strategy.short) // Set stop loss long_stop_price = close * (1 - stop_loss_pct) short_stop_price = close * (1 + stop_loss_pct) strategy.exit("Stop Loss/Profit", from_entry="Long", stop=long_stop_price) strategy.exit("Stop Loss/Profit", from_entry="Short", stop=short_stop_price)