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

多指標の傾向 利益の最適化による戦略

作者: リン・ハーンチャオチャン,日付: 2024年12月11日 17:22:57
タグ:SARATRマックドSMADMIADX

img

概要

この戦略は,複数の技術指標を組み合わせたトレンドフォローする取引システムである.主にパラボリックSAR,シンプルムービング・平均値 (SMA),およびダイレクト・ムービング・インデックス (DMI) を使用して市場動向とエントリーポイントを決定し,パーセントベースの利益目標とMACDダイバージェンスを通じて出口を最適化する.基本的なコンセプトは,強いトレンドを確認した後,ポジションを入力し,既定の利益目標に達するか,トレンド逆転信号が現れたときに出口することです.

戦略の原則

この戦略は,複数の層のフィルタリングメカニズムを使用しています.

  1. 初期取引信号はSARクロスオーバーによって捕らえられる.
  2. 総動向方向は50期SMAを用いて決定される.
  3. DMI インディケーターはトレンド強さと方向性を確認します
  4. 入場条件は:価格がSARを超え,価格がSMAを超え,上昇傾向のDMI
  5. 2重脱出メカニズム: 3%の目標利益またはMACD下落クロスオーバー
  6. 市場変動基準のATR指標

戦略 の 利点

  1. 複数の技術指標のクロスバリダーションは,誤った信号を減らす
  2. トレンドフォローとモメントインジケーターの組み合わせが成功率を向上させる
  3. 固定利回り目標が一貫した利益を確保する
  4. MACD ダイバージェンス エクシート メカニズムは,トレンド逆転の引き下げを防ぐ
  5. 戦略パラメータは,異なる市場特性に柔軟に調整できます.
  6. ATRモニタリングは,市場状態の基準を提供します.

戦略リスク

  1. 複数の指標が信号遅延を引き起こす可能性があります
  2. 固定金利目標が強烈なトレンドで早期離脱につながる可能性がある
  3. ストップ・ロスのメカニズムの欠如は,リスクリスクを増やす
  4. 変動市場では誤った信号が過剰に発生する可能性があります.
  5. DMI インディケーターは不安定な市場において誤った信号を生む可能性があります

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

  1. ATR ベースの動的ストップを用いた適応型ストップ・ロスのメカニズムを実装する
  2. 高波動期間のポジションサイズ調整のための波動性フィルターを開発する
  3. トレンド逆転の検出を改善するためにMACDパラメータを最適化
  4. 信号の信頼性を向上させる音量確認メカニズムを追加
  5. 市場変動に基づいて動的な利益目標を策定する

概要

この戦略は,複数の技術指標の調整を通じて,比較的完全なトレンドフォローする取引システムを構築する.その強みは,信号確認の信頼性とリスク制御の柔軟性にある.固有の遅延リスクがある一方で,この戦略はパラメータ最適化とダイナミックな管理メカニズムを通じて良い実用的な価値を維持している.継続的な最適化と改善を通じて,この戦略は強力な取引ツールとして機能することができる.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Swing Trading Strategy with DMI", overlay=true)

// Define parameters
sarStart = input.float(0.02, title="SAR Start")
sarIncrement = input.float(0.02, title="SAR Increment")
sarMax = input.float(0.2, title="SAR Max")
atrLength = input.int(10, title="ATR Length")
macdShort = input.int(12, title="MACD Short Length")
macdLong = input.int(26, title="MACD Long Length")
macdSignal = input.int(9, title="MACD Signal Length")
smaLength = input.int(50, title="SMA Length")
dmiLength = input.int(14, title="DMI Length")
adxSmoothing = input.int(14, title="ADX Smoothing") // Smoothing period for ADX
targetProfitPercentage = input.float(3.0, title="Target Profit Percentage")

// Calculate SAR
sar = ta.sar(sarStart, sarIncrement, sarMax)

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Calculate SMA
sma = ta.sma(close, smaLength)
bullishTrend = close > sma

// Calculate DMI
[plusDI, minusDI, adx] = ta.dmi(dmiLength, adxSmoothing) // Specify ADX smoothing period

// Determine if DMI is bullish
dmiBullish = plusDI > minusDI

// Define buy signal
buySignal = ta.crossover(close, sar) and bullishTrend and dmiBullish

// Track buy price and position state
var float buyPrice = na
var bool inPosition = false

// Enter position
if (buySignal and not inPosition)
    buyPrice := close
    inPosition := true
    strategy.entry("Buy", strategy.long)

// Define target price (3% above the buy price)
targetPrice = na(buyPrice) ? na : buyPrice * (1 + targetProfitPercentage / 100)

// Define MACD sell signal
macdSellSignal = ta.crossunder(macdLine, macdSignalLine)

// Define sell signal
sellSignal = inPosition and (close >= targetPrice or macdSellSignal)

// Exit position
if (sellSignal)
    inPosition := false
    strategy.exit("Sell", "Buy", limit=targetPrice)

// Plot SAR on the chart
plot(sar, color=color.red, style=plot.style_cross, linewidth=2)

// Plot SMA (optional, for visualizing the trend)
plot(sma, color=color.blue, title="SMA")

// Plot DMI +DI and -DI
plot(plusDI, color=color.green, title="+DI")
plot(minusDI, color=color.red, title="-DI")

// Plot buy signal on the chart
//plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Plot sell signal on the chart
//plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Optional: Plot background color for buy and sell signals
bgcolor(buySignal ? color.new(color.green, 90) : na, title="Buy Signal Background")
bgcolor(sellSignal ? color.new(color.red, 90) : na, title="Sell Signal Background")


関連性

もっと