Chiến lược giao dịch theo xu hướng khung thời gian kép

Tác giả:ChaoZhang, Ngày: 2023-09-12 14:22:39
Tags:

Chiến lược giao dịch theo xu hướng khung thời gian kép

Chiến lược giao dịch này xác định hướng xu hướng trên nhiều khung thời gian để đi vào xu hướng sớm. Nó sử dụng cả MACD và Stochastic RSI (SRSI) làm chỉ số và tham gia giao dịch khi các tín hiệu nhất quán được kích hoạt trên khung thời gian hàng ngày và 4 giờ.

Chiến lược logic:

  1. Tính toán MACD và SRSI trên biểu đồ hàng ngày. Khi MACD vượt trên tín hiệu và SRSI %K vượt trên tín hiệu, nó được coi là tín hiệu tăng.

  2. Tính toán MACD và SRSI trên biểu đồ 4 giờ. Khi MACD vượt trên tín hiệu và SRSI %K vượt trên tín hiệu, nó được coi là tín hiệu tăng.

  3. Chỉ đi dài khi cả tín hiệu tăng hàng ngày và 4 giờ xuất hiện cùng nhau.

  4. Nếu cả tín hiệu tăng hàng ngày và 4 giờ biến mất, đóng các vị trí dài.

  5. Nếu cả tín hiệu giảm giá hàng ngày và 4 giờ (MACD và SRSI vượt qua bên dưới) xuất hiện cùng nhau, hãy bán ngắn.

  6. Nếu cả tín hiệu giảm hàng ngày và 4 giờ biến mất, đóng các vị trí ngắn.

  7. Luôn theo dõi tín hiệu kép để theo dõi xu hướng.

Ưu điểm của chiến lược này là nhận được xu hướng sớm khi chúng phát triển bằng cách sử dụng bộ lọc kép để cải thiện độ tin cậy tín hiệu và tránh tín hiệu sai trong các giai đoạn hỗn loạn.

Tuy nhiên, một rủi ro tiềm năng là xu hướng mạnh có thể xây dựng trên một khung thời gian trước khi xác nhận vào khung thời gian thứ hai, do đó bỏ lỡ các mục đầu tiên. Các thông số như chiều dài MACD cần được tối ưu hóa để nắm bắt xu hướng sớm trong khi giảm thiểu các tín hiệu sai. Các thông số quá nhạy cảm có thể gây ra giao dịch quá mức.

Nhìn chung, chiến lược Dual Timeframe Trends Following nhằm mục đích nắm bắt các xu hướng xu hướng trong giai đoạn đầu.


/*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)


Thêm nữa