Chiến lược theo dõi xu hướng dựa trên việc phá vỡ kênh

Tác giả:ChaoZhang, Ngày: 2023-11-23 14:04:59
Tags:

img

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng được thiết kế dựa trên lý thuyết đột phá kênh. Nó xây dựng một kênh sử dụng giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định và tạo ra các tín hiệu giao dịch khi giá phá vỡ kênh. Chiến lược này phù hợp với thị trường xu hướng và có thể nắm bắt hướng xu hướng của giá để theo dõi xu hướng.

Chiến lược logic

Chiến lược đầu tiên tính toán giá cao nhất và giá thấp nhất trong một khoảng thời gian dài để xây dựng dải trên và dải dưới của kênh. Khi giá đóng phá vỡ dải trên, một vị trí dài được mở. Khi giá đóng phá vỡ dải dưới, một vị trí ngắn được mở. Vị trí sẽ được đóng khi giá giảm trở lại kênh.

Chiến lược cũng vẽ một chỉ số EMA với chiều dài * 2 để xác định hướng xu hướng. Khi giá vượt qua dải trên, nếu EMA đang có xu hướng tăng, quyết định dài được tăng cường.

Phân tích lợi thế

  • Chiến lược có thể nắm bắt xu hướng giá và phù hợp với các thị trường xu hướng với tiềm năng lợi nhuận cao.
  • Sử dụng các kênh đột phá để tạo ra tín hiệu có thể làm giảm sự đột phá sai và cải thiện chất lượng tín hiệu.
  • Kết hợp với EMA để tránh giao dịch chống lại xu hướng và đảm bảo theo dõi xu hướng chính.

Phân tích rủi ro

  • Các chiến lược phá vỡ có xu hướng tạo ra các giao dịch thường xuyên trong quá trình củng cố giá, có thể gây ra chi phí giao dịch cao.
  • Chiến lược không thể thoát khỏi các vị trí ngay lập tức khi xu hướng đảo ngược, có thể dẫn đến tổn thất lớn.
  • Chiến lược nhạy cảm với các thiết lập tham số và các tham số khác nhau có thể dẫn đến kết quả hoàn toàn khác nhau.

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

  • Kết hợp các chỉ số khác như MACD, RSI để tránh đột phá sai.
  • Sử dụng các thuật toán học máy để tự động tối ưu hóa các thông số và cải thiện độ bền.
  • Thiết lập stop loss để kiểm soát tối đa drawdown.

Tóm lại

Tóm lại, đây là một chiến lược theo dõi xu hướng đơn giản dựa trên việc phá vỡ kênh để nắm bắt xu hướng. Nó có khả năng theo dõi xu hướng mạnh mẽ và có thể đạt được lợi nhuận tốt trong các thị trường xu hướng. Nhưng nó cũng có một số rủi ro và cần tối ưu hóa hơn nữa để cải thiện sự ổn định. Thông qua điều chỉnh tham số, thiết lập dừng lỗ và kết hợp với các chỉ số khác, chiến lược này có thể được áp dụng cho giao dịch trực tiếp.


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

//@version=3


initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9


strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity) 

length = input(title="Length",  minval=1, maxval=1000, defval=length_val)

upBound = highest(high, length)
downBound = lowest(low, length)

//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
    strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
    strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
    
position = strategy.position_size
    
    
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)

message = ""

if (position > 0) 
    message = "BTCUSD L: " + tostring(strategy.position_size)
    na(position)
    
if (position < 0) 
    message = "BTCUSD S: " + tostring(strategy.position_size)
    na(position)

alertcondition(variance(strategy.position_size,2) > 0, "test", message )

Thêm nữa