Estrategia de stop loss de reversión de impulso de CK


Fecha de creación: 2023-11-27 18:13:58 Última modificación: 2023-11-27 18:13:58
Copiar: 1 Número de Visitas: 674
1
Seguir
1617
Seguidores

Estrategia de stop loss de reversión de impulso de CK

Descripción general

Esta estrategia utiliza el canal CK para determinar la tendencia de los precios y establecer una línea de stop loss dinámica para realizar operaciones de reversión cuando se produce una reversión de los precios, pertenece a la estrategia de negociación en línea corta.

Principio de estrategia

La estrategia utiliza el canal CK para determinar la tendencia de los precios y la resistencia de soporte. Calcula la línea de canal superior y la línea de canal inferior, y genera una señal de negociación cuando el precio rompe la línea de canal. Además, la estrategia también sigue el movimiento de la línea de canal y toma posiciones invertidas cuando la línea de canal se invierte, pertenece a la estrategia de negociación inversa.

En concreto, la estrategia se basa en el precio más alto y el precio más bajo para calcular la línea de canal de arriba a abajo. Si la línea de canal de arriba comienza a bajar y la línea de canal de abajo comienza a subir, se juzga como una reversión de precios, hacer una posición en blanco. Por el contrario, si la línea de canal de abajo comienza a bajar y la línea de canal de arriba comienza a subir, se juzga como una reversión de precios, hacer una posición en blanco.

Ventajas estratégicas

  1. El uso de dos canales para determinar el punto de inflexión del precio, con precisión en la operación inversa
  2. El uso de un método de pérdida dinámica para controlar el riesgo, que puede detener los pérdidas a tiempo
  3. La lógica de la estrategia es simple, clara y fácil de entender.

Riesgo estratégico

  1. La línea de pérdida puede romperse cuando los precios del mercado fluctúan fuertemente, lo que aumenta las pérdidas
  2. Es probable que haya más transacciones y más costos
  3. Se deben elegir los parámetros adecuados para controlar la línea de parada y evitar que sea demasiado floja o demasiado apretada.

Optimización de la estrategia

  1. Optimizar los parámetros de la línea de parada para que sean más razonables y efectivos
  2. Combinación de indicadores de tendencia para determinar la fiabilidad de las señales de reversión y evitar el cambio de tendencia
  3. Aumento de módulos de trading automático y stop loss automático para reducir los costos de transacción

Resumir

La estrategia general es clara y fácil de entender, utiliza dos canales para determinar la reversión de los precios y la operación inversa; y establece un stop loss dinámico para controlar el riesgo, es una estrategia típica de operaciones en línea corta. El efecto de la estrategia también se puede optimizar aún más, principalmente mediante la adaptación de los parámetros de stop loss, y ayuda a otros indicadores técnicos a determinar el momento de la operación.

Código Fuente de la Estrategia
/*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 )