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

移動平均のクロスオーバーに基づくリスク/報酬比最適化戦略

作者: リン・ハーンチャオチャン開催日:2024年12月27日 15:46:05
タグ:マルチSMARRSLTP

img

概要

この戦略は,固定リスク・リターン比によって最適化された移動平均クロスオーバー信号に基づいた自動化された取引システムである.この戦略は,ポジションリスク管理のために事前に設定されたストップ・ロストとテイク・プロフィートのレベルを組み合わせ,市場のトレンド方向性を決定するために,Fast MAとSlow MAのクロスオーバーを使用する.

戦略原則

コアロジックは,2つの移動平均値 (10期と30期) によって生成されるクロスオーバー信号に依存する. 急速MAが遅いMAを上回るときに長い信号,遅いMAが下回るときに短い信号を生成する. 各エントリ後,システムは,事前に設定された2%の損失パーセントに基づいて自動ストップロスのレベルを計算し,2.5のリスク・リターン比率に基づいて利益目標を設定する.このアプローチは,各取引が一貫したリスク・リターン特性を持つことを保証する.

戦略 の 利点

  1. システム的なリスク管理: 固定ストップ損失率とリスク・リターン比率によって標準化された資本管理を達成する
  2. 目的的な取引メカニズム:MAクロスオーバーに基づいたシグナルシステムは主観的な判断の偏見を排除する
  3. ストップ・ロスの割合やリスク・リターン比などのキーパラメータを柔軟に調整できます
  4. 高度な自動化:信号生成から位置管理までの自動化されたプロセスは,人間のエラーを減らす

戦略リスク

  1. 乱雑市場リスク: MAのクロスオーバー信号は,様々な市場で頻繁に誤ったブレイクを生む可能性があります.
  2. スリップリスク: 急速な市場での実際の実行価格は,シグナル価格から大幅に偏りうる.
  3. 固定ストップ・ロスのリスク: 単一のストップ・ロスの割合は,すべての市場条件に適合しない可能性があります.
  4. 委員会費用:頻繁な取引は高額な取引コストをもたらす可能性があります

戦略の最適化方向

  1. トレンドフィルターを実装する: 偽信号をフィルタリングするために,より長い期間の移動平均値または他のトレンド指標を追加する
  2. ダイナミックストップ・ロスのメカニズム: 市場変動に基づいてストップ・ロスの割合を調整し,より適応性を高める
  3. ボリューム確認: ブレイクアウトの有効性を検証するためのボリューム指標を組み込む
  4. 入力タイミングの最適化: ポジションに入れる前にMAクロスオーバー後の引き下げを待つ

概要

この戦略は,完全な取引システムを構築するために,古典的な技術分析方法と近代的なリスク管理コンセプトを組み合わせます. 特定の制限があるにもかかわらず,継続的な最適化と改善により,戦略は異なる市場条件で安定したパフォーマンスを維持できます. 鍵は,現在の市場環境に最も適した構成を見つけるために実際の取引結果に基づいてパラメータ設定を常に調整することです.


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

//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)

//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")

fastLength  = input.int(10, "Fast MA Length")
slowLength  = input.int(30, "Slow MA Length")

stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR           = input.float(2.5, "Risk to Reward Ratio", step=0.1)

//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)

// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)

// Entry Conditions
longCondition  = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)

//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0

if (strategy.position_size == 0) // not in a position
    if longCondition
        // Long entry
        entryPrice := price
        strategy.entry("Long", strategy.long)

    if shortCondition
        // Short entry
        entryPrice := price
        strategy.entry("Short", strategy.short)

if strategy.position_size > 0
    // We are in a long position
    if strategy.position_avg_price > 0 and strategy.position_size > 0
        longStop  = strategy.position_avg_price * (1 - stopLossPerc/100)
        longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
        strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)

if strategy.position_size < 0
    // We are in a short position
    if strategy.position_avg_price > 0 and strategy.position_size < 0
        shortStop  = strategy.position_avg_price * (1 + stopLossPerc/100)
        shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
        strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)

//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")


関連性

もっと