CK Momentum Reversal Stop Loss Chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-27 18:13:58
Tags:

img

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 các đường dừng lỗ năng động để thực hiện các hoạt động đảo ngược khi sự đảo ngược giá xảy ra.

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

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

Cụ thể, chiến lược tính toán các đường kênh trên và dưới dựa trên giá cao nhất và thấp nhất. Nếu đường kênh trên bắt đầu giảm và đường kênh dưới bắt đầu tăng, nó được xác định là một sự đảo ngược giá để đi ngắn. Ngược lại, nếu đường kênh dưới bắt đầu giảm và đường kênh trên bắt đầu tăng, nó được xác định là một sự đảo ngược giá để đi dài.

Ưu điểm của Chiến lược

  1. Sử dụng kênh kép để xác định các điểm đảo ngược giá cho các hoạt động đảo ngược chính xác
  2. Sử dụng stop loss động để kiểm soát rủi ro và nhận ra stop loss kịp thời
  3. Chiến lược logic là đơn giản và rõ ràng, dễ hiểu và thực hiện

Rủi ro của chiến lược

  1. Khi giá thị trường biến động mạnh mẽ, đường dừng lỗ có thể bị phá vỡ, dẫn đến tổn thất lớn hơn
  2. Giao dịch thường xuyên hơn có thể làm tăng chi phí giao dịch
  3. Cần phải chọn các thông số thích hợp để kiểm soát các đường dừng mất mát, tránh quá lỏng hoặc quá chặt chẽ

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

  1. Tối ưu hóa các thông số đường dừng lỗ để làm cho 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 các hoạt động đảo ngược trong xu hướng
  3. Tăng giao dịch tự động và các module dừng lỗ tự động để giảm chi phí giao dịch

Tóm lại

Ý tưởng tổng thể của chiến lược là rõ ràng và dễ hiểu. Nó sử dụng hai kênh để xác định sự đảo ngược giá và thực hiện các hoạt động đảo ngược. Và nó thiết lập stop loss động để kiểm soát rủi ro. Nó thuộc về các chiến lược giao dịch ngắn hạn điển hình. Hiệu ứng chiến lược có thể được tối ưu hóa hơn nữa, chủ yếu bằng cách điều chỉnh các thông số stop loss và hỗ trợ các chỉ số kỹ thuật khác để xác định thời gian vào và ra.


/*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 )



Thêm nữa