
Die Strategie verwendet den CK-Kanal, um die Preisentwicklung zu bestimmen, und setzt eine dynamische Stop-Loss-Linie, um bei einer Preisumkehr rückwärts zu handeln. Sie gehört zu den Short-Line-Handelsstrategien.
Die Strategie verwendet die CK-Kanal, um die Preisentwicklung und die Resistenz der Unterstützung zu bestimmen. Die Strategie berechnet die oberen und unteren Kanallinien und erzeugt ein Handelssignal, wenn der Preis die Kanallinie überschreitet. Darüber hinaus verfolgt die Strategie die Bewegung der Kanallinie und nimmt bei einer Umkehrung der Kanallinie eine umgekehrte Position ein.
Die Strategie basiert auf den Höchst- und Mindestpreisen und berechnet die Up-Down-Channel-Linie. Wenn die Up-Channel-Linie zu sinken beginnt und die Down-Channel-Linie zu steigen beginnt, wird dies als Preisumkehr beurteilt, um eine Position zu schließen. Umgekehrt, wenn die Down-Channel-Linie zu sinken beginnt und die Up-Channel-Linie zu steigen beginnt, wird dies als Preisumkehr beurteilt, um eine Position zu schließen.
Die Strategie ist klar und verständlich, verwendet zwei Kanäle, um zu entscheiden, ob der Preis umgekehrt ist, und umgekehrt handelt. Die Dynamik des Stop-Losses zur Risikokontrolle ist eine typische Short-Line-Handelsstrategie. Die Strategie kann weiter optimiert werden, hauptsächlich durch Anpassung der Stop-Loss-Parameter und Unterstützung anderer technischer Indikatoren, um die Zeit der Operation zu bestimmen.
/*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 )