ダブルSMAモメント戦略は,技術分析に基づく取引戦略で,簡単な2つの移動平均 (SMA) 指標に基づいて購入・売却信号を生成する.これは,株式の短期・中期価格モメントを把握することを目的としている.
この戦略は,短時間と長時間を持つ2つのSMA指標を使用します.高速SMA (9期間の長さ) と遅いSMA (45期間の長さ) です.
ストラテジーは,株の閉じる価格が高速線と遅いSMA線の両方の上を横断すると,上向きの開始を示し,ロング・ポジションを入力します.
この戦略は,価格が両SMA線を下回るとショート/セール信号を生成し,ダウントレンドの開始を示します.ここでショートポジションに入ります.
ストップロスのレベルは,前日の高値 (ショート取引) と前日の低値 (ロング取引) に動的に設定されます.
この戦略の主な利点は以下の通りです.
しかし,すべての技術分析戦略と同様に,頻繁に誤った信号が表示される範囲限定およびウィップソー市場では劣悪なパフォーマンスを発揮することがあります.追加的な確認のためにRSIなどの他の指標を追加することで強化できます.
この戦略の主なリスクは,
Whipsawsと誤ったシグナルへの傾向:SMAクロスオーバーのみに依存しているため,戦略は横向または不安定な市場中にウィップソーと誤ったシグナルに直面し,不必要な取引コストを生み出します.これはRSIなどの他の指標と組み合わせることで軽減できます.
突発的なトレンド逆転に脆弱:SMAクロスオーバーエントリ後の急速な逆転は,トレンドが形成される前にすぐにストップ損失レベルに達することができます.このリスクは,SMA長さを最適化したり,他のフィルターを追加することによって軽減することができます.
パラメータ調整による過剰最適化リスク: 曲線が歴史的なデータに適合するためにSMA長度および他のパラメータの広範な最適化は,ライブ取引のパフォーマンスが低下する可能性があります.長期間の堅牢なバックテストは不可欠です.
この戦略を強化する方法は以下の通りです.
信号のタイミングと正確性を改善するために,追加の取引確認のためのRSIのような他の指標を追加
市場変動により良く適応するために,ATRやチェンデリア出口のようなダイナミックストップロスの配置方法を組み込む
異なる株の過去変動と取引時間枠に基づいて SMA 長さの最適化
収益を最大化し,引き上げを制限するために健全なマネーマネジメントとポジションサイズのルールを追加する
概要すると,ダブルSMAモメンタム戦略は,短期から中期間のトレンドの取引に直接的なアプローチを提供しています.そのアプローチは基本的なものの,追加のフィルター,ダイナミックストップ,慎重な最適化などの精製は,リスク調整回帰を改善するのに役立ちます.株の上昇傾向と下落傾向の間に選択的に使用され,利益のある動きを捉えることができます.
/*backtest start: 2023-01-10 00:00:00 end: 2024-01-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy", overlay=true) // Input parameters fast_length = input(9, title="Fast SMA Length") slow_length = input(45, title="Slow SMA Length") // Calculate moving averages fast_sma = ta.sma(close, fast_length) slow_sma = ta.sma(close, slow_length) // Buy condition buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma) // Sell condition sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma) // Calculate stop loss levels prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on) prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on) // Plot signals on the chart plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit conditions long_stop_loss = sell_condition ? prev_low : na short_stop_loss = buy_condition ? prev_high : na strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss) strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss) strategy.entry("Long", strategy.long, when=buy_condition) strategy.entry("Short", strategy.short, when=sell_condition)