Chiến lược giao dịch xu hướng dựa trên nhiều yếu tố

Tác giả:ChaoZhang, Ngày: 2024-01-17 14:02:22
Tags:

img

Tóm lại

Chiến lược này kết hợp chỉ số Divergence Convergence Moving Average (MACD) và chỉ số Stochastic Relative Strength Index (Stoch RSI) để xác định hướng xu hướng thị trường, đi dài khi xu hướng tăng và đi ngắn khi xu hướng giảm.

Chiến lược logic

Chiến lược này sử dụng các chỉ số MACD và Stoch RSI để xác định hướng xu hướng thị trường.

Chỉ số MACD bao gồm đường EMA nhanh, đường EMA chậm và sự khác biệt giữa chúng, phản ánh sự hội tụ và phân kỳ của các đường trung bình động ngắn hạn và dài hạn. Khi đường nhanh vượt qua trên đường chậm, đó là tín hiệu mua. Khi đường nhanh vượt qua dưới đường chậm, đó là tín hiệu bán.

Chỉ số Stoch RSI kết hợp điểm mạnh của cả chỉ số RSI và Stoch để hiển thị mức mua quá mức và bán quá mức trên thị trường. Khi Stoch RSI lớn hơn đường tín hiệu Stoch RSI, đó là tín hiệu mua. Khi thấp hơn đường tín hiệu, đó là tín hiệu bán.

Chiến lược này sử dụng MACD và Stoch RSI trên khung thời gian hàng ngày và 4 giờ để xác định xu hướng thị trường. Khi cả hai chỉ số tạo ra tín hiệu mua trên biểu đồ hàng ngày và 4 giờ, đi dài. Khi cả hai tạo ra tín hiệu bán, đi ngắn. Điều này có thể lọc hiệu quả các tín hiệu sai và cải thiện độ tin cậy.

Ưu điểm

  1. Kết hợp hai yếu tố để đánh giá chuyển động thị trường có thể lọc các tín hiệu sai hiệu quả và cải thiện độ chính xác tín hiệu

  2. Xác nhận tín hiệu trên khung thời gian cao và thấp (ngày và 4H) tránh bị chém

  3. Tiếp theo xu hướng tránh thị trường hỗn loạn

  4. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện

Rủi ro và giải pháp

  1. Không có khả năng xác định hiệu quả các điểm đảo ngược xu hướng có thể gây ra việc dừng lỗ
  • Tối ưu hóa các thông số hoặc thêm các chỉ số khác để đánh giá
  1. Hợp đồng duy nhất không thể đa dạng hóa rủi ro hệ thống trên thị trường
  • Tăng các hợp đồng hoặc cổ phiếu khác để đa dạng hóa
  1. Không thể xác định tác động của các sự kiện đột ngột lớn
  • Kết hợp phân tích cơ bản để nâng cao nhận thức về rủi ro

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

  1. Điều chỉnh các thông số MACD và Stoch RSI để tối ưu hóa các điểm vào và ra

  2. Thêm các chiến lược dừng lại để khóa lợi nhuận

  3. Thêm kích thước vị trí vào kiểm soát theo rủi ro giao dịch

  4. Thêm nhiều yếu tố để đánh giá để cải thiện độ chính xác tín hiệu

  5. Sử dụng các phương pháp học máy để tối ưu hóa các tham số một cách năng động

Tóm lại

Chiến lược này xác định hướng xu hướng thông qua mô hình hai yếu tố và xác nhận tín hiệu trên các khung thời gian. Đây là một chiến lược theo xu hướng tương đối ổn định và đáng tin cậy, với một số khả năng quản lý rủi ro và không gian cho lỗi. Hiệu suất của nó có thể được tăng thêm bằng cách thêm tối ưu hóa tham số, dừng lỗ, kích thước vị trí và các mô-đun khác.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='[RS]Khizon (UGAZ) 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('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 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