Chiến lược theo dõi kênh Keltner

Tác giả:ChaoZhang, Ngày: 2023-12-25 13:14:24
Tags:

img

Tổng quan

Chiến lược này được thiết kế dựa trên chỉ số Keltner Channel để tạo ra các tín hiệu giao dịch khi giá vượt qua các dải trên và dưới của kênh.

Chiến lược logic

Chiến lược sử dụng SMA và ATR để xây dựng kênh Keltner.

Phạm vi trên = SMA + ATR * Multiplier Phạm vi dưới = SMA - ATR * Multiplier

Khi giá vượt qua dải trên, một tín hiệu mua được tạo ra. Khi giá vượt qua dải dưới, một tín hiệu bán được tạo ra.

Vì nó chỉ đi dài, nếu một tín hiệu bán xuất hiện, nó sẽ hủy các lệnh trước và làm phẳng vị trí.

Lý do là:

  1. Xây dựng Keltner Channel với SMA và ATR
  2. Khi giá phá vỡ trên dải trên, đặt giá nhập cảnh và đi dài
  3. Khi giá phá vỡ dưới dải dưới, làm phẳng vị trí dài trước đó

Phân tích lợi thế

Những lợi thế của chiến lược này:

  1. Logic đơn giản và rõ ràng, dễ hiểu và thực hiện
  2. Keltner Channel là trực quan để xác định xu hướng
  3. Chỉ đi dài tránh theo đuổi rủi ro dừng lỗ
  4. Các lệnh có điều kiện cho các mục chính xác

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Các giao dịch mở/khép thường xuyên trong thời gian biến động thị trường
  2. Không thể tận dụng những cơ hội ngắn ngủi
  3. Thiếu cơ chế thoát, cần can thiệp bằng tay

Giải pháp:

  1. Tối ưu hóa các tham số kênh để giảm tín hiệu sai
  2. Thêm mô-đun ngắn cho giao dịch hai chiều
  3. Thêm các cơ chế thoát như di chuyển dừng lỗ, dừng kéo theo

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

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số như thời gian kênh, ATR nhân vv
  2. Thêm mô-đun ngắn dựa trên băng tần thấp hơn
  3. Kết hợp các cơ chế dừng lỗ như ATR trailing stop
  4. Xem xét nhiều bộ lọc hơn để tránh tín hiệu sai
  5. Hiệu quả thử nghiệm trên các sản phẩm khác nhau

Kết luận

Chiến lược này có hiệu quả nắm bắt xu hướng thị trường với các quy tắc Keltner Channel đơn giản. Logic là rõ ràng và dễ hiểu. Mặc dù thiếu lối ra và mô-đun ngắn, nó có tiềm năng lớn cho các cải tiến như điều chỉnh tham số, thêm dừng, đi ngắn v.v.


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

//@version=3
strategy("Keltner Channel Strategy", overlay=true)
source = close

useTrueRange = input(true)
length = input(20, minval=1)
mult = input(1.0)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

if (cancelBcond)
    strategy.cancel("KltChLE")

if (crossUpper)
    strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE")

if (cancelScond)
    strategy.cancel("KltChSE")

if (crossLower)
    strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Thêm nữa