2つのタイムフレームのトレンドをフォローする取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-12 14:22:39
タグ:

2つのタイムフレームのトレンドをフォローする取引戦略

この取引戦略は,トレンドを早期に把握するために,複数のタイムフレームでトレンド方向性を特定します. MACDとストカスティックRSI (SRSI) をインジケーターとして使用し,日時および4時間のタイムフレームで一貫した信号が誘発されたときに取引を開始します.

戦略論理:

  1. MACDとSRSIを日表で計算する.MACDが信号を超越し,SRSI%Kが信号を超越した場合,それは上昇信号とみなされます.

  2. 4時間チャートでMACDとSRSIを計算します.MACDが信号の上を横切り,SRSI%Kが信号上を横切ると,上昇信号とみなされます.

  3. 日経と4時間の上昇シグナルが同時に現れる時だけ 長期取引をする.

  4. 日帰りと4時間の上昇シグナルが消えたら,ロングポジションを閉じる.

  5. 日帰りと4時間のダウンシグナル (MACDとSRSIの交差点) が同時に表示される場合は,ショートシグナルを表示します.

  6. 日帰りと4時間の下落シグナルが消えた場合,ショートポジションを閉じる.

  7. 2つの信号を継続的に監視して 傾向を追跡します

この戦略の利点は,シグナル信頼性を向上させ,不安定な期間中に誤ったシグナルを避けるため,二重フィルターを使用して,トレンドが発達する早い段階でトレンドに入れるということです.

しかし,潜在的なリスクは,強いトレンドが2つ目の確認の前に1つのタイムフレームに構築され,したがって初期エントリが欠けていることである.MACD長さのようなパラメータは,誤った信号を最小限に抑えながらトレンドを早期に把握するために最適化する必要があります.過度に敏感なパラメータは過剰な取引を引き起こす可能性があります.

概して,ダブルタイムフレームトレンドフォロー戦略は,初期段階でのトレンド動きを把握することを目的としている.ダブル確認は,ウィップソーを避けるのに役立ちますが,時には初期エントリを見逃す可能性があります.慎重なパラメータチューニングとリスク管理が必要です.


/*backtest
start: 2023-08-12 00:00:00
end: 2023-09-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy(title='[RS]Khizon (DWTI) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD)
trade_size = 10000
//  ||  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=14)
srsi_signal_smooth = input(title='SRSI Signal Smoothing:',  defval=14)
//  ||  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(0, style=circles, color=daily_trigger?blue:na, linewidth=4, transp=65)
plot(0, style=circles, color=h4_trigger?navy:na, linewidth=2, transp=0)

sel_open = daily_trigger and h4_trigger
buy_open = not daily_trigger and not h4_trigger

strategy.entry('sel', long=false,  comment='sel', when=sel_open)
strategy.entry('buy', long=true,  comment='buy', when=buy_open)


もっと