資源の読み込みに... 荷物...

モメントベースのSMIクロスオーバー信号適応予測戦略

作者: リン・ハーンチャオチャン開催日:2024年12月27日15時38分01秒
タグ:SMIエイマ

img

概要

この戦略はストカスティック・モメンタム・インデックス (SMI) をベースとした適応型取引システムである.SMI指標とその信号ラインのクロスオーバーを分析し,キーポジションで自動的に買取・売却信号を生成することで,市場のトレンドを予測する.この戦略は,データをスムーズにし,信号信頼性を向上させるために二重指数移動平均 (EMA) を採用する.このシステムは,特に中長期取引に適しており,主要市場トレンド逆転点を効果的に把握する.

戦略の原則

戦略の核心は,SMI計算を通じて価格の勢いを測定することにある.まず,特定の期間中の最高値帯と最低値帯を決定し,その後,この範囲との関係で閉じる価格の位置を正常にします.相対範囲と価格帯の両方にダブルEMAスムージングを適用することで,より安定したSMI値を生成します.SMI線が信号線 (SMIsEMA) と金色の十字を作るとき,購入信号が起動し,死亡十字は販売信号を誘発します.過剰購入と過剰販売ゾーン (+40/-40) は信号信頼性を確認するために設定されます.

戦略 の 利点

  1. クリア・シグナル・ジェネレーション:クロスオーバー・シグナルをトレード・トリガーとして利用し,主観的な判断を排除する
  2. 強力なノイズ抵抗性: 市場ノイズを効果的にフィルタリングするために二重EMAスムージングを使用
  3. 高い適応性:パラメータ最適化によって異なる市場環境に適応できる
  4. 総合的なリスク管理: 極端な市場状況で誤った判断を避けるため,過剰購入/過剰販売ゾーンを設定する
  5. 高可視化: グラデントの記入を使用して,市場の条件を直感的に表示します

戦略リスク

  1. 遅延リスク:複数の移動平均計算により信号生成が遅れている.
  2. 振動リスク:横向市場では誤った信号を生む可能性があります.
  3. パラメータ感度:異なるパラメータの組み合わせは,大きく異なる結果をもたらすことができます
  4. 市場環境依存: 傾向のある市場ではより良いパフォーマンスを発揮し,変動する市場では効果が低い

オプティマイゼーションの方向性

  1. 音量指標を組み込む 音量変化を組み合わせることで信号の有効性を検証する
  2. トレンドフィルターを追加: 長期間の移動平均値を使用して全体的なトレンド方向性を確認します.
  3. パラメータ調整を最適化: 市場の変動に基づいてパラメータを動的に調整する
  4. ストップ・ロスのメカニズムを強化する: 利益を守るため,ストップ・ロスを実施する
  5. リスク管理を改善する: ポジションサイズとマネーマネジメントモジュールを追加する

概要

この戦略は,SMI指標に基づいた成熟した取引戦略であり,技術指標クロスオーバーを通じて強力な実用性を持つ取引信号を生成する.この戦略の主要な利点は,明確な信号と強いノイズ抵抗性にあるが,固有の遅延がある.ボリューム検証とトレンドフィルタリングなどの最適化により,戦略の安定性と信頼性がさらに向上することができる.この戦略は,特に中長期のトレンドを追跡するのに適しており,体系的な取引システムを構築したい投資家に優れた選択肢である.


/*backtest
start: 2024-12-19 00:00:00
end: 2024-12-26 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Iban_Boe

//@version=6
strategy("SMI Strategy with Signals", "SMI Strategy", overlay=false)

// Parámetros del SMI
lengthK   = input.int(14, "%K Length",  minval=1, maxval=15000)
lengthD   = input.int(3,  "%D Length",  minval=1, maxval=4999)
lengthEMA = input.int(3,  "EMA Length", minval=1, maxval=4999)

// Función de doble EMA
emaEma(source, length) => ta.ema(ta.ema(source, length), length)

// Cálculos del SMI
highestHigh = ta.highest(lengthK)
lowestLow = ta.lowest(lengthK)
highestLowestRange = highestHigh - lowestLow
relativeRange = close - (highestHigh + lowestLow) / 2
smi = 200 * (emaEma(relativeRange, lengthD) / emaEma(highestLowestRange, lengthD))
smiSignal = ta.ema(smi, lengthEMA)

// Gráficos del SMI
smiPlot = plot(smi, "SMI", color=color.blue)
plot(smiSignal, "SMI-based EMA", color=color.orange)

// Level lines
hline(40, "Overbought Line", color=color.green)
hline(-40, "Oversold Line", color=color.red)
hline(0, "Middle Line", color=color.gray)

midLinePlot = plot(0, color = na, editable = false, display = display.none)
fill(smiPlot, midLinePlot, 120,  40,   top_color = color.new(#4caf4f, 50),    bottom_color = color.new(color.green, 100), title = "Overbought Gradient Fill")
fill(smiPlot, midLinePlot, -40, -120,  top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 50),    title = "Oversold Gradient Fill")

// Señales de compra y venta
buySignal = ta.crossover(smi, smiSignal) // Detect crossover
sellSignal = ta.crossunder(smi, smiSignal) // Detect crossover

// Graficar señales de compra/venta
plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Señal de Compra")
plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Señal de Venta")

// Lógica de la estrategia
if (buySignal)
    strategy.entry("Compra", strategy.long)

if (sellSignal)
    strategy.entry("Venta", strategy.short)

// Alertas
alertcondition(buySignal, title="Alerta de Compra", message="¡Señal de Compra Detectada!")
alertcondition(sellSignal, title="Alerta de Venta", message="¡Señal de Venta Detectada!")



関連性

もっと