Chiến lược dừng lỗ và dừng lãi của kênh Ketner


Ngày tạo: 2023-09-15 14:41:46 sửa đổi lần cuối: 2023-09-15 14:41:46
sao chép: 0 Số nhấp chuột: 801
1
tập trung vào
1617
Người theo dõi

Tổng quan về chiến lược

Chiến lược dừng lỗ ctna channel là một chiến lược định lượng để tối ưu hóa quyết định giao dịch dựa trên phương pháp phân tích ctna channel, thêm các quy tắc dừng lỗ. Chiến lược này theo dõi mối quan hệ giữa giá và đường dẫn lên và xuống, đi vào nhiều hướng làm空 khi đột phá xảy ra và cân bằng rủi ro và lợi nhuận theo điểm dừng lỗ ctna tối ưu.

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

  1. Tính toán đường ray trung tâm, đường ray trên và đường ray dưới của kênh Kettner.

  2. Khi giá chạm đường lên, hãy xem xét nhiều cơ hội; khi chạm đường xuống, hãy xem xét cơ hội.

  3. Khi giá phá vỡ đường đua, nhiều người tham gia; khi phá vỡ đường đua, không có người tham gia.

  4. Cài đặt điểm dừng để giá vào tăng một tỷ lệ nhất định, điểm dừng để giá vào giảm một tỷ lệ nhất định.

Điểm mạnh của chiến lược này là giới thiệu quy tắc dừng lỗ, dừng lỗ kịp thời khi lỗ quá lớn trong quá trình tiến triển; dừng lại kịp thời trước khi kết thúc làn sóng. Đồng thời cũng cung cấp tín hiệu nhập lại, tham gia vào giao dịch xu hướng bền vững.

Các tham số có thể được tối ưu hóa cho các giống khác nhau để đạt được sự cân bằng lợi nhuận rủi ro tối ưu.

Lợi thế chiến lược

  • KTN đánh giá xu hướng

  • Stop Loss Stop Loss tối ưu hóa lợi nhuận

  • Bước vào và ra có thể trơn tru, tránh phá vỡ giả

  • Chính sách linh hoạt, các tham số có thể điều chỉnh

  • Có thể kết hợp với các chỉ số khác

Cảnh báo rủi ro

  • Cần tăng tỷ lệ dừng lỗ một cách thích hợp

  • Vẫn còn một số rủi ro

  • Có thể bị phá vỡ và gây thiệt hại

  • Hạn lỗi dừng quá nhỏ có thể gây ra sự cố thường xuyên

Tóm tắt

Chiến lược dừng lỗ của kênh Kettner được tối ưu hóa so với giao dịch kênh truyền thống, kiểm soát rủi ro giao dịch trong khi theo dõi xu hướng. Bằng cách lặp lại và điều chỉnh tham số, hiệu quả chiến lược tốt có thể được đạt được. Chiến lược này đáng để nghiên cứu sâu và kiểm tra trong phòng thí nghiệm, có thể tăng dần sự ổn định của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-08-15 00:00:00
end: 2023-08-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Optimized Keltner Channels Strategy for BTC", overlay=true)
length = input(9, minval=1)
mult = input(1.0, "Multiplier")
src = input(close, title="Source")
exp = input(true, "Use Exponential MA")
BandsStyle = input("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style")
atrlength = input(18, "ATR Length")
sl = input(defval=22, minval=0, title="Stop Loss (%)")
tp = input(defval=21, minval=0, title="Take Profit (%)")

esma(source, length)=>
	s = sma(source, length)
	e = ema(source, length)
	exp ? e : s
ma = esma(src, length)
rangema = BandsStyle == "True Range" ? rma(tr(true), length) : BandsStyle == "Average True Range" ? atr(atrlength) : rma(high - low, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
c = color.blue
u = plot(upper, color=color.green, title="Upper")
plot(ma, color=#0094FF, title="Basis")
l = plot(lower, color=color.red, title="Lower")
fill(u, l, color=#0094FF, transp=95, title="Background")
crossUpper = crossover(src, upper)
crossLower = crossunder(src, lower)
bprice = 0.0
bprice := crossUpper ? close+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? close-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 (src < ma or high >= bprice )
cancelScond = crossScond and (src > ma or low <= sprice )
if (cancelBcond)
	strategy.cancel("KltChLE")
if (crossUpper)
	strategy.entry("KltChLE", strategy.long, stop=bprice, comment="Long")
if (cancelScond)
	strategy.cancel("KltChSE")
if (crossLower)
	strategy.entry("KltChSE", strategy.short, stop=sprice, comment="Short")

strategy.exit("long exit", "KltChLE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick)
strategy.exit("Short exit", "KltChSE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick)

plot(bprice, color=color.green)
plot(sprice, color=color.red)