この記事では,ストキャストモメンタムインデックス (SMI) 指標に基づいて株のトレンドを追跡する戦略を紹介しています.この戦略は"モメンタムサーファー戦略"と呼ばれています.SMIで買い過ぎと売り過ぎのエリアを特定し,トレンド逆転から利益を得るためにロング/ショートに入ります.
SMIインジケーターは,過剰購入および過剰販売ゾーンを特定するために使用されます.赤色のエリアの値は,株が過剰販売されていることを示し,緑色のエリアは過剰購入状態を表します.取引信号は,SMIとEMAラインのクロスオーバーから生成されます.
具体的には,SMIが EMAを超越し,SMIが -40 値以下でoversold レベルを突破すると,ロング信号が起動し,SMIが EMAを下回り,SMIが 40値以上でoversold レベルを突破すると,ショート信号が起動する.
この戦略は,価格逆転を把握し,低価格で高値で低価格で高値で高値で低価格で高値で高値で低価格で高値で高値で低価格で高値で高値で高値で高値で高値で高値で高値で低値で高値で高値で高値で高値で低値で高値で高値で高値で低値で高値で低値で高値で高値で高値で高値で低値で高値で高値で低値で高値で低値で低値で低値で高値で低値で低値で低値で低値で低値で高値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値で低値する.
最も大きな利点は,トレンドを追跡する能力にあります.入口と出口点を決定するためにSMIを使用しているため,シグナルは価格逆転に完璧に一致します.
また,SMI自体は価格を平滑させる特徴を有する.単純な移動平均値と比較して,価格変化により安定的に反応する.取引信号は,市場の騒音に容易に影響を受けることなく,より信頼性がある.
要するに,この戦略は,SMIの強みを有効に活用し,株価の動向を追跡し,アルゴ取引に適した利益を生む.
この戦略はSMI指標に大きく依存しており,それに関連したリスクもあります.
まず,SMIはパラメータ調節に敏感である.間違ったパラメータは信号品質を著しく損なう可能性がある.最適を見つけるには広範なテストが必要である.
また,SMIを含む誤った信号に対してインシミュレータが免疫的ではない.不必要な損失を引き起こす高い変動中にウィップソーが発生することがあります.SMIを他の指標と組み合わせることで,信号を確認し,エラーを減らすのに役立ちます.
最後に,システム的な市場リスクを軽減することはありません.市場全体が熊市状態に陥ると,深刻な損失が避けられません.この制限はすべての技術戦略に適用されます.
この戦略は,次の側面からさらに改善できます.
シンジケートシステムを形成するために他の指標を組み込む.信号の信頼性と収益性を高めるのに役立ちます.基本的な要因と変動指標を追加することができます.
機械学習を利用して,SMIパラメータを,大きな歴史的データに基づいて自動的に最適化します.
合理的なストップロスは単一の取引損失を大幅に削減し,リスクを回避します.
資源の総質を改善するために,定量的な資源審査規則を組み合わせる. 十分な資源の選択は,堅牢な戦略の基礎となる.
この記事では,SMI指標でトレンドを追跡するモメントサーファー戦略を紹介します.その最大の強みは逆転を捉え,トレンドをスムーズにフォローすることにあります.パラメータの感度や信号品質などのリスクが存在します.それを強化するためのいくつかの方法を提案します.全体的に言えば,この戦略はアルゴ取引に魅力的で,実際の取引検証に値します.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Stochastics Momentum Index Strategy", shorttitle="Stoch_MTM_Doan", overlay=true) // Input parameters a = input.int(10, "Percent K Length") b = input.int(3, "Percent D Length") ob = input.int(40, "Overbought") os = input.int(-40, "Oversold") // Range Calculation ll = ta.lowest(low, a) hh = ta.highest(high, a) diff = hh - ll rdiff = close - (hh+ll)/2 avgrel = ta.ema(ta.ema(rdiff,b),b) avgdiff = ta.ema(ta.ema(diff,b),b) // SMI calculations SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0 SMIsignal = ta.ema(SMI,b) emasignal = ta.ema(SMI, 10) // Color Definition for Stochastic Line col = SMI >= ob ? color.green : SMI <= os ? color.red : color.white plot(SMIsignal, title="Stochastic", color=color.white) plot(emasignal, title="EMA", color=color.yellow) level_40 = ob level_40smi = SMIsignal > level_40 ? SMIsignal : level_40 level_m40 = os level_m40smi = SMIsignal < level_m40 ? SMIsignal : level_m40 plot(level_40, "Level ob", color=color.red) plot(level_40smi, "Level ob SMI", color=color.red, style=plot.style_line) plot(level_m40, "Level os", color=color.green) plot(level_m40smi, "Level os SMI", color=color.green, style=plot.style_line) //fill(level_40, level_40smi, color=color.red, transp=ob, title="OverSold") //fill(level_m40, level_m40smi, color=color.green, transp=ob, title="OverBought") // Strategy Tester longCondition = ta.crossover(SMIsignal, emasignal) and (SMI < os) if (longCondition) strategy.entry("Buy", strategy.long) shortCondition = ta.crossunder(SMIsignal, emasignal) and (SMI > ob) if (shortCondition) strategy.entry("Sell", strategy.short)