Chiến lược hỗn hợp nhiều khung thời gian MACD StochRSI

Tác giả:ChaoZhang, Ngày: 2023-09-13 12:05:46
Tags:

Chiến lược này kết hợp các chỉ số MACD và StochRSI trên nhiều khung thời gian để cải thiện độ tin cậy trong tín hiệu giao dịch.

Chiến lược logic:

  1. Tính toán MACD và StochRSI trên các khoảng thời gian hàng ngày và 4 giờ.

  2. Nhập dài khi cả hai tín hiệu tăng đều phù hợp với hàng ngày và 4 giờ.

  3. Nhập ngắn khi cả hai tín hiệu giảm đều phù hợp với hàng ngày và 4 giờ.

  4. Giữ vị trí cho đến khi các tín hiệu ngược lại xuất hiện trên cả hai khung thời gian.

  5. Xác nhận chéo thông qua nhiều khung thời gian cải thiện độ chính xác.

Ưu điểm:

  1. Phân tích nhiều khung thời gian cải thiện sự ổn định tín hiệu.

  2. MACD và StochRSI xác minh lẫn nhau.

  3. Các quy tắc nhập và xuất rõ ràng giúp kiểm tra và thực hiện dễ dàng hơn.

Rủi ro:

  1. Sự kết hợp nhiều khung thời gian trễ các mục giao dịch.

  2. Tối ưu hóa tham số phức tạp qua các giai đoạn.

  3. Khả năng giao dịch ít hơn Không thể tận dụng đầy đủ tất cả các cơ hội thị trường.

Tóm lại, cách tiếp cận nhiều khung thời gian này có thể cải thiện chất lượng tín hiệu nhưng đòi hỏi tối ưu hóa cân bằng và chậm so với lợi nhuận điều chỉnh rủi ro.


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

//@version=2
// strategy(title='[RS]Khizon (DGAZ) 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 BTC:',  defval=1)
buy_trade = input(title='Perform buy trading?',  defval=true)
sel_trade = input(title='Perform sell trading?',  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('NGAS', '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('NGAS', '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 daily_trigger and h4_trigger
buy_open = buy_trade and not daily_trigger and not h4_trigger
sel_close = not buy_trade and not daily_trigger and not h4_trigger
buy_close = not sel_trade and daily_trigger and 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)

Thêm nữa