Chiến lược dừng lỗ đảo ngược động lượng CK


Ngày tạo: 2023-11-27 18:13:58 sửa đổi lần cuối: 2023-11-27 18:13:58
sao chép: 1 Số nhấp chuột: 674
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ đảo ngược động lượng CK

Tổng quan

Chiến lược này sử dụng kênh CK để xác định xu hướng giá và thiết lập đường dừng động, thực hiện hành động đảo ngược khi giá đảo ngược, thuộc chiến lược giao dịch ngắn.

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

Chiến lược sử dụng kênh CK để xác định xu hướng giá và kháng cự hỗ trợ. Nó tính toán đường kênh trên và đường kênh dưới, tạo ra tín hiệu giao dịch khi giá vượt qua đường kênh. Ngoài ra, chiến lược cũng theo dõi sự di chuyển của đường kênh, thực hiện vị trí đảo ngược khi đường kênh đảo ngược, thuộc chiến lược giao dịch đảo ngược.

Cụ thể, chiến lược dựa trên giá cao nhất, giá thấp nhất tính toán đường dẫn lên xuống. Nếu đường dẫn lên bắt đầu giảm và đường dẫn xuống bắt đầu tăng, thì được coi là giá đảo ngược, làm vị trí trống. Ngược lại, nếu đường dẫn xuống bắt đầu giảm và đường dẫn lên bắt đầu tăng, thì được coi là giá đảo ngược, làm nhiều vị trí.

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

  1. Sử dụng hai kênh để xác định điểm đảo ngược giá, hoạt động ngược chính xác
  2. Kiểm soát rủi ro bằng cách sử dụng phương pháp dừng động để có thể dừng lỗ kịp thời
  3. Lập luận chiến lược đơn giản, rõ ràng và dễ hiểu

Rủi ro chiến lược

  1. Đường dừng lỗ có thể bị phá vỡ khi giá thị trường biến động mạnh, dẫn đến tổn thất lớn hơn
  2. Có thể giao dịch nhiều hơn, chi phí giao dịch tăng lên
  3. Cần chọn các tham số thích hợp để kiểm soát dây dừng, tránh quá nới lỏng hoặc quá chặt

Tối ưu hóa chiến lược

  1. Tối ưu hóa các tham số Stop Loss Line để nó hợp lý và hiệu quả hơn
  2. Kết hợp các chỉ số xu hướng để đánh giá độ tin cậy của tín hiệu đảo ngược, tránh hoạt động đảo ngược trong xu hướng
  3. Thêm mô-đun tự động giao dịch và tự động dừng lỗ, giảm chi phí giao dịch

Tóm tắt

Chiến lược tổng thể của chiến lược này rất rõ ràng và dễ hiểu, sử dụng hai kênh để xác định giá đảo ngược, thực hiện hoạt động ngược; và thiết lập dừng lỗ động để kiểm soát rủi ro, thuộc chiến lược giao dịch ngắn hạn điển hình. Hiệu quả của chiến lược cũng có thể được tối ưu hóa hơn nữa, chủ yếu là điều chỉnh tham số dừng lỗ và hỗ trợ các chỉ số kỹ thuật khác để xác định thời gian hoạt động.

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

//@version=4
//

//study(title="Chande Kroll Stop", shorttitle="CK Stop", overlay=true)
strategy(title="Chande Kroll Stop", shorttitle="Chande Kroll Stop回測", overlay=true, initial_capital=100000, calc_on_every_tick=true,default_qty_type=strategy.percent_of_equity, default_qty_value=10)
br_red = #e91e63,Red = #f41818,n_green = #91dc16,dk_green = #004d40,lt_green = #16dc78,lt_blue = #0dbdd8,dk_blue = #0a3577,Blue = #034fed,br_orange = #f57c00,dk_orange = #e65100,dk_gray = #434651,dk_pink = #7c1df0,lt_pink = #e743f5,Purple = #5b32f3,lt_purple = #6b5797

hiP = input(9, "",inline="h")
hix = input(1,"" ,inline="h", step=0.1)
hiQ = input(7,"" ,inline="h")
loP = input(9,"" ,inline="h1")
lox = input(1,"" ,inline="h1", step=0.1)
loQ = input(5,"" ,inline="h1")
Xr=input(false,"反向操作:買/賣",inline="T"),
first_high_stop = highest(high, hiP) - hix * atr(hiP)
first_low_stop = lowest(high, loP) + lox * atr(loP)

stop_short = highest(first_high_stop, hiQ)
stop_long = lowest(first_low_stop, loQ)

cklow = stop_short
ckhigh = stop_long


Xdn = cklow < cklow[1] and ckhigh < ckhigh[1]
Xup = cklow > cklow[1] and ckhigh > ckhigh[1]
longcol = Xup ? lt_green : Xdn ? br_red : #2a2e39
shortcol = Xup? lt_green : Xdn ? br_red : #2a2e39
plot(stop_long, color=longcol)
plot(stop_short, color=shortcol)


plotshape(Xup and not Xup[1] , title="CK Stop Buy", text='CK', style=shape.triangleup, size=size.tiny, location=location.belowbar, color=lt_green, textcolor=lt_green,display=display.none)
plotshape(Xdn and not Xdn[1], title="CK Stop Sell", text='CK', style=shape.triangledown, size=size.tiny, location=location.abovebar, color=br_red, textcolor=br_red,display=display.none)

//       , default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=true)

tl=input(true,"Sig",inline="T"), sbg=input(true,"Bgtrend",inline="T"), vbuild="FIREHORSE XRPUSDT"
Xp = 0.0, Xp:=Xdn? -1 : Xup? 1 : Xp[1], Xdf = Xr? Xup and Xp[1] == -1 : Xdn and Xp[1] == 1 ,Xuf = Xr?  Xdn and Xp[1] == 1: Xup and Xp[1] == -1 
FY=input(2021,"年",inline="btf"),FM=input(9,"月",inline="btf"),FD=input(01,"日",inline="btf"),
TY = input(2032,"年",inline="to"),TM=input(01,"月",inline="to"),TDy=input(01,"日",inline="to"), 
testTF = time>=timestamp(FY,FM,FD,00,00) and time <= timestamp(TY,TM,TDy,23,59)?  true:false


plotchar(tl? Xuf:na,vbuild+" 生門","△",location.bottom, #14e540,10,0," " ,#14e540,1,size.tiny)// ︽  ︾
plotchar(tl? Xdf:na,vbuild+" 傷門","▽",location.top,  #9b0842,10,0," ", #9b0842,1,size.tiny)  
bgcolor(sbg ? Xp==1 ? #0d47a1 :na: na, transp=90),
alertcondition(Xuf,vbuild+ "Buy", "Long 💹 \n"+vbuild),  alertcondition(Xdf, vbuild+ " Sell","Short 🈹\n"+vbuild)

if Xuf
    alert("Long " + tostring(close)+"\nLong "+input("My Long  Msg","Long Alert Msg")+vbuild, alert.freq_once_per_bar) 
if Xdf
    alert("Short " + tostring(close)+"\nShort"+input("My Short Msg","Short Alert Msg")+vbuild, alert.freq_once_per_bar) 


if testTF
    strategy.entry("Long ", strategy.long,  comment=" Long ",when=Xuf), strategy.entry("Short", strategy.short, comment=" Short",when=Xdf )