Chiến lược giao dịch động lực hệ thống hai đường

Tác giả:ChaoZhang, Ngày: 2023-11-22 15:26:28
Tags:

Tổng quan

Chiến lược này kết hợp các chỉ số MACD và Stoch RSI để xây dựng một hệ thống giao dịch hai đường ray để theo dõi xu hướng và đánh giá quá bán / quá mua. Chiến lược cũng xây dựng các chỉ số trên khung thời gian hàng ngày và 4 giờ để đưa ra các đánh giá nhiều khung thời gian để giảm khả năng đánh giá sai.

Nguyên tắc chiến lược

Chiến lược kết hợp các chỉ số MACD và Stoch RSI, là các loại chỉ số kỹ thuật khác nhau, để cấu hình. MACD là chỉ số động lực đánh giá tốc độ thay đổi giá; Stoch RSI là chỉ số mua quá mức / bán quá mức đánh giá sức mạnh giá tương đối.

Chiến lược đầu tiên xây dựng các chỉ số MACD và Stoch RSI trên các khung thời gian hàng ngày và 4 giờ tương ứng cho xu hướng và đánh giá mua quá mức / bán quá mức. Khi các tín hiệu được kích hoạt trên cả hai khung thời gian, các hoạt động mua / bán tương ứng được thực hiện.

Cụ thể, chỉ số MACD được xây dựng với các đường DIF và DEA tạo thành các đường chéo vàng / chết để đánh giá; chỉ số Stoch RSI được xây dựng với các đường K và D tạo thành các đường chéo vàng / chết để đánh giá. Khi cả hai cặp chỉ số có đường chéo vàng, các tín hiệu mua được tạo ra; khi cả hai đều có đường chéo chết, các tín hiệu bán được tạo ra.

Do đó, bằng cách áp dụng toàn diện hệ thống hai chỉ số và các phán đoán nhiều khung thời gian, chiến lược đánh giá tốc độ giá và sức mạnh tương đối kỹ lưỡng, giúp cải thiện độ chính xác quyết định và đạt được lợi nhuận tốt hơn.

Phân tích lợi thế

Chiến lược này có những lợi thế sau:

  1. Kết hợp hệ thống hai chỉ số để đánh giá toàn diện và chính xác quyết định cao hơn
  2. Áp dụng nhiều khung thời gian để giảm khả năng đánh giá sai
  3. Sử dụng theo dõi xu hướng và phán đoán mua quá mức / bán quá mức để xem xét cả tốc độ giá và sức mạnh tương đối
  4. Các thông số chỉ số linh hoạt có thể điều chỉnh cho các sản phẩm và môi trường thị trường khác nhau
  5. Cấu trúc mã sạch dễ hiểu và mở rộng

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Có những rủi ro thị trường hệ thống không thể tránh hoàn toàn
  2. Các thiết lập tham số chỉ số không phù hợp có thể dẫn đến quá mức giao dịch hoặc bỏ lỡ các cơ hội
  3. Các chỉ số kép vẫn có thể cung cấp các tín hiệu sai đồng thời, nhưng ít có khả năng hơn các chỉ số đơn
  4. Không thể đối phó với những thay đổi thị trường mạnh mẽ như sự kiện thiên nga đen

Các biện pháp đối phó:

  1. Tối ưu hóa các thông số và điều chỉnh các điều kiện giao dịch để giảm các đánh giá sai
  2. Bao gồm nhiều chỉ số hơn cho các phán quyết kết hợp
  3. Thêm các cơ chế dừng lỗ để kiểm soát rủi ro mất mát đơn

Hướng dẫn tối ưu hóa

Chiến lược này cũng có thể được cải thiện trong các khía cạnh sau:

  1. Bao gồm nhiều chỉ số hơn cho các chiến lược đa chỉ số
  2. Thêm thuật toán học máy cho tối ưu hóa tham số động
  3. Kết hợp các chỉ số tâm lý, tin tức v.v. để đánh giá toàn diện hơn về tình hình thị trường
  4. Thêm dừng lỗ, lấy chiến lược lợi nhuận để tối ưu hóa quản lý tiền
  5. Mở rộng sang nhiều sản phẩm thương mại hơn để khám phá các cơ hội tốt hơn

Kết luận

Bằng cách kết hợp ứng dụng của hệ thống hai chỉ số và nhiều khung thời gian phán đoán, chiến lược này đánh giá tốc độ giá và sức mạnh tương đối kỹ lưỡng, có thể nắm bắt hiệu quả xu hướng thị trường và cải thiện các thiếu sót của các chỉ số duy nhất. Nó cũng có những lợi thế như điều chỉnh tham số linh hoạt, dễ hiểu và mở rộng. [phát âm]


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


Thêm nữa