複数波トレンドクロスオーバーリスク管理定量戦略

EMA SMA
作成日: 2024-12-13 10:51:31 最終変更日: 2024-12-13 10:51:31
コピー: 0 クリック数: 341
1
フォロー
1617
フォロワー

複数波トレンドクロスオーバーリスク管理定量戦略

概要

この戦略は,ダイナミックなリスク管理機構を組み合わせたWaveTrend指標に基づいた定量取引システムである.戦略は,価格変動の傾向強さを計算し,オーバーバイオーバーセール領域でシグナルフィルタリングを行い,同時に,ストップ・ロス,ストップ・ストップ,ストップ・ロスの追跡などのリスク管理手段を適用し,全方位取引管理を実現する.

戦略原則

策略の核心は,HLC3価格によるWaveTrend指標の計算である.まずはn1周期の指数移動平均 (((EMA) を基準線として計算し,次に価格と基準線の偏差を計算し,0.015を係数として再帰処理を行う.最終的に,2つの波線wt1とwt2が得られ,それぞれ速線と遅線を表す.取引信号は,この2つの線とオーバーバイのオーバーセルのレベルの交差に基づいて生成され,同時に多層のリスク管理システムと結合される.

戦略的優位性

  1. 信号システムは良好なトレンド追跡能力を備えており,二重超買い超売りレベルによって信号の信頼性を高めています.
  2. 固定ストップ,固定ストップ,ダイナミックストップを含む完全なリスク管理システム
  3. パラメータは,異なる市場状況に応じて最適化するために,調整可能である
  4. 波動率自己適応の仕組みと組み合わせた戦略の適応性向上
  5. 層次的に設計された信号システムにより,偽信号の影響を効果的に軽減

戦略リスク

  1. 激しい波動のある市場において,頻繁にストップダメージが発生する可能性がある状況
  2. パラメータを正しく設定しない場合,取引コストが高くなります.
  3. 横盤市場では偽信号が多く発生する可能性がある.
  4. リスクと利益の不均衡を避けるために,合理的なストップとストップの割合を設定する必要があります.
  5. 追跡ストップは,急速な反転のトレードで,より大きな引き下げにつながる可能性があります.

戦略最適化の方向性

  1. 取引の信頼性を高めるため,信号確認のための取引量指標の導入
  2. ストップ・ロスのパラメータを最適化して,異なる市場環境に適応させる
  3. トレンド強度フィルターを増やし,横軸市場の取引頻度を減らす
  4. ダイナミック・ストップ・メカニズムの追加を検討し,市場の変動に応じてストップ・ポジションを自動的に調整する
  5. タイムフィルターを導入し,不利な取引時にポジションを開くのを避ける

要約する

この戦略は,WaveTrend指標と完善したリスク管理システムを組み合わせることで,より包括的な量化取引戦略を実現している.戦略の核心的な優点は,その適応性があり,リスクが制御可能であることにあるが,それでも,実際の市場状況に応じて,トレーダーがパラメータの最適化と戦略の改善を行う必要がある.継続的な最適化と完善により,この戦略は,実際の取引で安定した収益を期待している.

ストラテジーソースコード
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="WaveTrend [LazyBear] with Risk Management", shorttitle="WT_LB_RM", overlay=true)

// Input Parameters
n1 = input.int(10, "Channel Length")
n2 = input.int(21, "Average Length")
obLevel1 = input.int(60, "Over Bought Level 1")
obLevel2 = input.int(53, "Over Bought Level 2")
osLevel1 = input.int(-60, "Over Sold Level 1")
osLevel2 = input.int(-53, "Over Sold Level 2")

// Risk Management Inputs
stopLossPercent = input.float(50.0, "Stop Loss (%)", minval=0.1, maxval=100)
takeProfitPercent = input.float(5.0, "Take Profit (%)", minval=0.1, maxval=100)
trailingStopPercent = input.float(3.0, "Trailing Stop (%)", minval=0.1, maxval=100)
trailingStepPercent = input.float(2.0, "Trailing Stop Step (%)", minval=0.1, maxval=100)

// WaveTrend Calculation
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
 
wt1 = tci
wt2 = ta.sma(wt1, 4)

// Plotting Original Indicators
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)
plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80)

// Buy and Sell Signals with Risk Management
longCondition = ta.crossover(wt1, osLevel1) or ta.crossover(wt1, osLevel2)
shortCondition = ta.crossunder(wt1, obLevel1) or ta.crossunder(wt1, obLevel2)

// Strategy Entry with Risk Management
if (longCondition)
    entryPrice = close
    stopLossPrice = entryPrice * (1 - stopLossPercent/100)
    takeProfitPrice = entryPrice * (1 + takeProfitPercent/100)
    
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", 
                  stop=stopLossPrice, 
                  limit=takeProfitPrice, 
                  trail_price=close * (1 + trailingStopPercent/100), 
                  trail_offset=close * (trailingStepPercent/100))

if (shortCondition)
    entryPrice = close
    stopLossPrice = entryPrice * (1 + stopLossPercent/100)
    takeProfitPrice = entryPrice * (1 - takeProfitPercent/100)
    
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", 
                  stop=stopLossPrice, 
                  limit=takeProfitPrice, 
                  trail_price=close * (1 - trailingStopPercent/100), 
                  trail_offset=close * (trailingStepPercent/100))