双方向システムモメンタム・トレーディング戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-22 15:26:28
タグ:

概要

この戦略は,MACDとストックRSI指標を組み合わせて,トレンド追跡と過売/過買い判断のためのダブルレール取引システムを構築する.また,戦略は,過売/過買い判断の確率を減らすために,多時間枠判断を行うために,日用および4時間のタイムフレームで指標を構築する.

戦略原則

この戦略は,異なるタイプの技術指標であるMACDとストックRSIインジケーターを組み合わせて構成する.MACDは価格変動速度を判断するモメントインジケーターであり,ストックRSIは相対的な価格強さを判断する過剰購入/過剰売却インジケーターである.

この戦略は,まず,トレンドとオーバーバイト/オーバーセール判断のために,それぞれ1日および4時間のタイムフレームでMACDおよびストックRSI指標を構築する.両方のタイムフレームでシグナルが起動すると,対応する購入/売却オペレーションが行われます.

MACDインデカターは,DIFとDEA線がゴールデン/デッドクロスを形成し,STOCHのRSIインデカターは,KとD線がゴールデン/デッドクロスを形成し,判断する.両方のインデカターペアがゴールデンクロスを有すると,買い信号が生成され,両方がデッドクロスを有すると,売り信号が生成される.

したがって,二重指標システムと複数のタイムフレーム判断を包括的に適用することで,戦略は価格の速度と相対的な強さを徹底的に判断し,意思決定の正確性を向上させ,より良い収益を得ることに役立ちます.

利点分析

この戦略には以下の利点があります.

  1. 総合的な判断とより正確な決定のための二重指標システムを組み合わせる
  2. 誤った判断の確率を減らすために複数の時間枠を適用する
  3. 傾向追跡と過買い/過売り判断を採用し,価格の速度と相対的な強さを考慮する
  4. 柔軟な指標パラメータ 異なる製品と市場環境に調整可能
  5. クリーンなコード構造 分かりやすく拡張

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 完全に回避できないシステム的な市場リスクがあります
  2. 適正でない指標パラメータ設定は,過剰取引または機会を逃す可能性があります.
  3. 双重指標は同時に誤った信号を与える可能性はあるが,単一指標よりも低い
  4. ブラック・スワン事件のような急激な市場変化に対応できない

対策:

  1. パラメータを最適化し,誤った判断を減らすために取引条件を調整する
  2. 統合判断のためのより多くの指標を組み込む
  3. 単一の損失リスクを制御するためのストップ損失メカニズムを追加する

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

この戦略は,次の側面でも改善できます.

  1. 多指標戦略により多くの指標を組み込む
  2. 動的パラメータ最適化のための機械学習アルゴリズムを追加
  3. 市場情勢をより包括的に判断するために,情勢指標,ニュースなどを組み合わせる
  4. ストップ損失を追加し,お金の管理を最適化するために利益戦略を取る
  5. より良い機会を発見するためにより多くの取引製品に拡大

結論

この戦略は,二重指標システムとマルチタイムフレーム判断を組み合わせることで,価格の速度と相対的な強さを徹底的に判断し,市場の傾向を効果的に把握し,単一の指標の欠陥を改善することができます.また,柔軟なパラメータチューニング,理解しやすさと拡張などの利点があります.マルチ指標の組み合わせ,ダイナミックパラメータ最適化,センチメント指標の組み込みなどによるさらなる拡張は,戦略のパフォーマンスを高めるのに役立ちます. [翻訳]


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 10:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[RS]Khizon (UWTI) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD)
//  ||  Inputs:
macd_src = input(title='MACD Source:',  defval=close)
macd_fast = input(title='MACD Fast Length:',  defval=12)
macd_slow = input(title='MACD Slow Length:',  defval=26)
macd_signal_smooth = input(title='MACD Signal Smoothing:',  defval=9)
srsi_src = input(title='SRSI Source:',  defval=close)
srsi_rsi_length = input(title='SRSI RSI Length:',  defval=14)
srsi_stoch_length = input(title='SRSI Stoch Length:',  defval=14)
srsi_smooth = input(title='SRSI Smoothing:',  defval=3)
srsi_signal_smooth = input(title='SRSI Signal Smoothing:',  defval=3)
//  ||  Strategy Inputs:
trade_size = input(title='Trade Size in USD:', type=float, defval=1)
buy_trade = input(title='Perform buy trading?', type=bool, defval=true)
sel_trade = input(title='Perform sell trading?', type=bool, defval=true)
//  ||  MACD(close, 12, 26, 9):     ||---------------------------------------------||
f_macd_trigger(_src, _fast, _slow, _signal_smooth)=>
    _macd = ema(_src, _fast) - ema(_src, _slow)
    _signal = sma(_macd, _signal_smooth)
    _return_trigger = _macd >= _signal ? true : false
//  ||  Stoch RSI(close, 14, 14, 3, 3)  ||-----------------------------------------||
f_srsi_trigger(_src, _rsi_length, _stoch_length, _smooth, _signal_smooth)=>
    _rsi = rsi(_src, _rsi_length)
    _stoch = sma(stoch(_rsi, _rsi, _rsi, _stoch_length), _smooth)
    _signal = sma(_stoch, _signal_smooth)
    _return_trigger = _stoch >= _signal ? true : false
//  ||-----------------------------------------------------------------------------||
//  ||-----------------------------------------------------------------------------||
//  ||  Check Directional Bias from daily timeframe:
daily_trigger = security('USOIL', 'D', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))
h4_trigger = security('USOIL', '240', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))

plot(title='D1T', series=daily_trigger?0:na, style=circles, color=blue, linewidth=4, transp=65)
plot(title='H4T', series=h4_trigger?0:na, style=circles, color=navy, linewidth=2, transp=0)

sel_open = sel_trade and not daily_trigger and not h4_trigger
buy_open = buy_trade and daily_trigger and h4_trigger
sel_close = not buy_trade and daily_trigger and h4_trigger
buy_close = not sel_trade and not daily_trigger and not h4_trigger
strategy.entry('sel', long=false, qty=trade_size, comment='sel', when=sel_open)
strategy.close('sel', when=sel_close)
strategy.entry('buy', long=true, qty=trade_size, comment='buy', when=buy_open)
strategy.close('buy', when=buy_close)


もっと