Chiến lược thoái lui đột phá kênh Keltner


Ngày tạo: 2023-12-27 14:49:39 sửa đổi lần cuối: 2023-12-27 14:49:39
sao chép: 0 Số nhấp chuột: 762
1
tập trung vào
1621
Người theo dõi

Chiến lược thoái lui đột phá kênh Keltner

Tổng quan

Chiến lược này dựa trên chỉ số Keltner Channel để thiết kế một chiến lược giao dịch rút lui. Chiến lược này được thiết kế bằng cách so sánh mối quan hệ giữa giá và đường lên xuống của Keltner Channel, để đánh giá thời gian giá có thể đảo ngược, và thực hiện các hoạt động giao dịch nhị phân thích hợp.

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

Chiến lược này sử dụng chỉ số Keltner Channel để xác định xu hướng giá. Keltner Channel bao gồm đường trung bình và độ sóng trung bình thực tế ((ATR)). Đường trên của kênh tương đương với đường trung bình cộng N lần ATR; đường dưới tương đương với đường trung bình trừ đi N lần ATR.

Ngoài ra, chiến lược này đánh giá cơ hội rút lui dựa trên giá chạm lại hoặc phá vỡ ranh giới kênh. Ví dụ, sau khi giá tăng vượt qua đường ray xuống, nó lại giảm chạm đường ray xuống mà không chạm đường ray lên, đây là một cơ hội để thực hiện nhiều lần rút lui.

Phân tích lợi thế

Đây là một chiến lược giao dịch sử dụng tính năng thu hồi giá.

  1. Sử dụng kênh Keltner để xác định xu hướng giá, nó có thể lọc tiếng ồn hiệu quả.
  2. Các chiến lược rút lui có thể được áp dụng để có thể tiến vào sân trước khi quay trở lại và nắm bắt được tình hình lớn hơn.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Trong một thị trường dài hạn, có thể không có nhiều cơ hội rút tiền và không thể kiếm được lợi nhuận.
  2. Nếu các tín hiệu hút ngược không chính xác, có thể gây thiệt hại.

Phản ứng:

  1. Tối ưu hóa các tham số, điều chỉnh chiều rộng kênh, thích ứng với môi trường thị trường.
  2. Tăng cường quản lý vị trí, giảm tổn thất đơn lẻ.

Hướng tối ưu hóa

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

  1. Bộ lọc đột phá dựa trên khối lượng giao dịch, tránh đột phá giả mạo.
  2. Cải chỉnh kích thước vị trí theo biến động.
  3. Đổi lại phương thức dừng lỗ, di chuyển dừng lỗ để khóa thêm lợi nhuận.

Tóm tắt

Chiến lược này kết hợp các phương pháp đánh giá xu hướng và rút lại giao dịch, có lợi thế độc đáo trong việc nắm bắt các tình huống đảo ngược. Bằng cách điều chỉnh tham số và mở rộng chức năng, bạn có thể tăng thêm sự ổn định và lợi nhuận của chiến lược.

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

//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)

price = close

// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation

buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)

tradeSize = input(defval=1, minval=1, title="Trade size")

if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
    strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
    if( crossover(price, bottom) )
        strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")

if( 0 != SL )
    strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
    strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
   
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
    strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
    if ( crossunder(price, top) )
        strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
    
    
if( crossunder(price, EMA) and closeOnEMATouch )
    strategy.close("SELL")