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

多市場適応型多指標傾向 戦略をフォローする

作者: リン・ハーンチャオチャン,日付: 2024-12-12 15:23:28
タグ:CMFDPOROCWMAATR

img

概要

チェイキン・マネー・フロー (CMF),デトレンデッド・プライス・オシレーター (DPO),コポック・カーブを組み合わせて市場動向を把握し,異なる市場特性に適応するための変動調整因数を用いる.包括的なポジション管理とリスク管理システムを含む.市場変動に基づいて取引規模を動的に調整する.

戦略の原則

戦略の核心論理は,複数の指標の協力を通じて,トレンド方向と取引タイミングを確認することです.

  1. CMF指標を使用して,マネーフローを測定し,市場情勢を判断します.
  2. 長期的傾向の影響を取り除き,中短期的な価格変動に焦点を当てます.
  3. トレンドターニングポイントを把握するために修正されたコポック指標を採用
  4. 3つの指標が一致するときにのみ取引信号を生成します
  5. ATR を使ってストップ・ロストとテイク・プロフィートのレベルを動的に計算する.
  6. ローバーと変動のパラメータを異なる市場特性に基づいて自動的に調整する (株式,外為,先物)

戦略 の 利点

  1. 複数の指標のクロスバリダーションは誤った信号を効果的にフィルタリングします
  2. 異なる市場環境に適した高度な適応性
  3. 波動性に基づく動的ポジションサイズ付きの包括的なポジション管理システム
  4. リスクを制御し,利益を保護するためのストップ・ロスト・メカニズムと,利益を引き出すメカニズムを含みます.
  5. リスクの多様化のために多種多様な取引を支援する
  6. 維持し最適化しやすい明確な取引論理

戦略リスク

  1. 複数の指標システムでは,急速に動いている市場で遅れがある可能性があります.
  2. パラメータの最適化によりオーバーフィッティングが発生する
  3. 市場体制の変化中に誤った信号が発生する可能性があります.
  4. ストレートストップ・ロスの設定は,頻繁にストップを起こす可能性があります.
  5. 取引コストは戦略収益に影響を与える リスク管理の勧告
  • パラメータの正規性チェック
  • リアルタイム位置監視
  • 適切なレバレッジ制御
  • 抽出制限

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

  1. 市場変動状態判断を導入し,異なる変動環境で異なるパラメータセットを使用する
  2. 戦略の適応性を向上させるため,より多くの市場特有の識別指標を追加する
  3. ストップ・ロストとテイク・プロフィートのメカニズムを最適化し,トレーリング・ストップの実施を検討する
  4. 周期調整のための自動パラメータ最適化システムを開発
  5. 取引コスト分析モジュールを追加
  6. リスク警告メカニズムを導入する

概要

この戦略は,複数の指標とリスク管理メカニズムを通じてリターンとリスクをバランスする包括的なトレンドフォローシステムである.この戦略は,最適化のための大きな余地を持つ強力な拡張性を持っています.ライブ取引で小規模で開始し,徐々に取引規模を増加させ,戦略のパフォーマンスを継続的に監視し,パラメータを適時に調整することをお勧めします.


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

//@version=5
strategy("Multi-Market Adaptive Trading Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Input parameters
i_market_type = input.string("Crypto", "Market Type", options=["Forex", "Crypto", "Futures"])
i_risk_percent = input.float(1, "Risk Per Trade (%)", minval=0.1, maxval=100, step=0.1)
i_volatility_adjustment = input.float(1.0, "Volatility Adjustment", minval=0.1, maxval=5.0, step=0.1)
i_max_position_size = input.float(5.0, "Max Position Size (%)", minval=1.0, maxval=100.0, step=1.0)
i_max_open_trades = input.int(3, "Max Open Trades", minval=1, maxval=10)

// Indicator Parameters
i_cmf_length = input.int(20, "CMF Length", minval=1)
i_dpo_length = input.int(21, "DPO Length", minval=1)
i_coppock_short = input.int(11, "Coppock Short ROC", minval=1)
i_coppock_long = input.int(14, "Coppock Long ROC", minval=1)
i_coppock_wma = input.int(10, "Coppock WMA", minval=1)
i_atr_length = input.int(14, "ATR Length", minval=1)

// Market-specific Adjustments
volatility_factor = i_market_type == "Forex" ? 0.1 : i_market_type == "Futures" ? 1.5 : 1.0
volatility_factor *= i_volatility_adjustment
leverage = i_market_type == "Forex" ? 100.0 : i_market_type == "Futures" ? 20.0 : 3.0

// Calculate Indicators
mf_multiplier = ((close - low) - (high - close)) / (high - low)
mf_volume = mf_multiplier * volume
cmf = ta.sma(mf_volume, i_cmf_length) / ta.sma(volume, i_cmf_length)

dpo_offset = math.floor(i_dpo_length / 2) + 1
dpo = close - ta.sma(close, i_dpo_length)[dpo_offset]

roc1 = ta.roc(close, i_coppock_short)
roc2 = ta.roc(close, i_coppock_long)
coppock = ta.wma(roc1 + roc2, i_coppock_wma)

atr = ta.atr(i_atr_length)

// Define Entry Conditions
long_condition = cmf > 0 and dpo > 0 and coppock > 0 and ta.crossover(coppock, 0)
short_condition = cmf < 0 and dpo < 0 and coppock < 0 and ta.crossunder(coppock, 0)

// Calculate Position Size
account_size = strategy.equity
risk_amount = math.min(account_size * (i_risk_percent / 100), account_size * (i_max_position_size / 100))
position_size = (risk_amount / (atr * volatility_factor)) * leverage

// Execute Trades
if (long_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close - (atr * 2 * volatility_factor)
    tp_price = close + (atr * 3 * volatility_factor)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price)

if (short_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close + (atr * 2 * volatility_factor)
    tp_price = close - (atr * 3 * volatility_factor)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price)

// Plot Indicators
plot(cmf, color=color.blue, title="CMF")
plot(dpo, color=color.green, title="DPO")
plot(coppock, color=color.red, title="Coppock")
hline(0, "Zero Line", color=color.gray)

// Alerts
alertcondition(long_condition, title="Long Entry", message="Potential Long Entry Signal")
alertcondition(short_condition, title="Short Entry", message="Potential Short Entry Signal")

// // Performance reporting
// if barstate.islastconfirmedhistory
//     label.new(bar_index, high, text="Strategy Performance:\nTotal Trades: " + str.tostring(strategy.closedtrades) + 
//               "\nWin Rate: " + str.tostring(strategy.wintrades / strategy.closedtrades * 100, "#.##") + "%" +
//               "\nProfit Factor: " + str.tostring(strategy.grossprofit / strategy.grossloss, "#.##"))

関連性

もっと