CK-Strategie zur Umkehrung des Momentums

Schriftsteller:ChaoZhang, Datum: 2023-11-27 18:13:58
Tags:

img

Übersicht

Diese Strategie verwendet den CK-Kanal, um Preistrends zu bestimmen und setzt dynamische Stop-Loss-Linien, um bei einer Preisumkehr umgekehrte Operationen durchzuführen.

Strategieprinzip

Die Strategie verwendet den CK-Kanal, um Preistrends und Unterstützung/Widerstand zu bestimmen. Sie berechnet die oberen und unteren Kanallinien. Wenn der Preis durch die Kanallinien bricht, werden Handelssignale generiert. Darüber hinaus verfolgt die Strategie auch die Bewegung der Kanallinien und nimmt umgekehrte Positionen ein, wenn die Kanallinien umkehren, was zu Umkehrhandelsstrategien gehört.

Insbesondere berechnet die Strategie die oberen und unteren Kanallinien basierend auf den höchsten und niedrigsten Preisen. Wenn die oberen Kanallinien zu fallen beginnen und die unteren Kanallinien zu steigen beginnen, wird es als Preisumkehrung bestimmt, kurz zu gehen. Im Gegenteil, wenn die unteren Kanallinien zu fallen beginnen und die oberen Kanallinien zu steigen beginnen, wird es als Preisumkehrung bestimmt, lang zu gehen.

Vorteile der Strategie

  1. Verwendung von Doppelkanälen zur Bestimmung von Preisumkehrpunkten für genaue Umkehroperationen
  2. Einführung dynamischer Stop-Loss-Verfahren zur Risikokontrolle und zeitnahe Stop-Loss-Verwirklichung
  3. Die Strategie ist einfach und klar, leicht zu verstehen und umzusetzen

Risiken der Strategie

  1. Wenn die Marktpreise heftig schwanken, kann die Stop-Loss-Linie gebrochen werden, was zu größeren Verlusten führt
  2. Häufiger Handel kann die Transaktionskosten erhöhen
  3. Notwendigkeit, geeignete Parameter zu wählen, um die Stop-Loss-Linie zu steuern, vermeiden zu locker oder zu eng

Optimierung der Strategie

  1. Optimieren Sie die Parameter der Stop-Loss-Linie, um sie vernünftiger und effektiver zu machen
  2. Einbeziehung von Trendindikatoren zur Beurteilung der Zuverlässigkeit von Umkehrsignalen, Vermeidung von Umkehroperationen während des Trends
  3. Erhöhung des automatischen Handels und automatischer Stop-Loss-Module zur Senkung der Transaktionskosten

Zusammenfassung

Die Gesamtidee der Strategie ist klar und leicht verständlich. Sie verwendet doppelte Kanäle, um Preisumkehrungen zu bestimmen und umgekehrte Operationen durchzuführen. Und sie setzt dynamischen Stop-Loss fest, um Risiken zu kontrollieren. Sie gehört zu typischen kurzfristigen Handelsstrategien. Der Strategieeffekt kann weiter optimiert werden, hauptsächlich durch Anpassung der Stop-Loss-Parameter und Unterstützung anderer technischer Indikatoren zur Bestimmung des Ein- und Ausstiegszeitpunkts.


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



Mehr