Esta estratégia usa o canal CK para determinar as tendências de preços e define linhas de stop loss dinâmicas para fazer operações reversas quando ocorre uma inversão de preço.
A estratégia usa o canal CK para determinar as tendências de preços e suporte/resistência. Ele calcula as linhas superiores e inferiores do canal. Quando o preço atravessa as linhas do canal, são gerados sinais de negociação. Além disso, a estratégia também rastreia o movimento das linhas do canal e assume posições reversas quando as linhas do canal se invertem, o que pertence às estratégias de negociação de reversão.
Especificamente, a estratégia calcula as linhas do canal superior e inferior com base nos preços mais altos e mais baixos. Se a linha do canal superior começar a cair e a linha do canal inferior começar a subir, ela é determinada como uma reversão de preço para ficar curto. Pelo contrário, se a linha do canal inferior começar a cair e a linha do canal superior começar a subir, ela é determinada como uma reversão de preço para ficar longo.
A ideia geral da estratégia é clara e fácil de entender. Ele usa canais duplos para determinar inversões de preço e realizar operações reversas. E define stop loss dinâmico para controlar riscos. Ele pertence a estratégias comerciais típicas de curto prazo. O efeito da estratégia pode ser otimizado ainda mais, principalmente ajustando os parâmetros de stop loss e ajudando outros indicadores técnicos a determinar o tempo de entrada e saída.
/*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 )