Cette stratégie utilise le canal CK pour déterminer les tendances des prix et définit des lignes de stop loss dynamiques pour effectuer des opérations inverses lorsque l'inversion des prix se produit.
La stratégie utilise le canal CK pour déterminer les tendances des prix et le support / résistance. Elle calcule les lignes supérieures et inférieures du canal. Lorsque le prix traverse les lignes du canal, des signaux de trading sont générés. En outre, la stratégie suit également le mouvement des lignes du canal et prend des positions inverses lorsque les lignes du canal s'inversent, ce qui appartient aux stratégies de trading d'inversion.
Plus précisément, la stratégie calcule les lignes supérieures et inférieures du canal en fonction des prix les plus élevés et les plus bas. Si la ligne supérieure du canal commence à baisser et que la ligne inférieure du canal commence à augmenter, elle est déterminée comme un renversement de prix pour aller court. Au contraire, si la ligne inférieure du canal commence à baisser et la ligne supérieure du canal commence à augmenter, elle est déterminée comme un renversement de prix pour aller long.
L'idée générale de la stratégie est claire et facile à comprendre. Elle utilise des canaux doubles pour déterminer les renversements de prix et effectuer des opérations inverses. Et elle définit un stop loss dynamique pour contrôler les risques. Elle appartient aux stratégies de trading à court terme typiques. L'effet de la stratégie peut être encore optimisé, principalement en ajustant les paramètres de stop loss et en aidant d'autres indicateurs techniques à déterminer le moment d'entrée et de sortie.
/*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 )