Estrategia cuantitativa de stop-loss móvil con doble stop-profit y doble stop-loss


Fecha de creación: 2024-01-19 15:07:04 Última modificación: 2024-01-19 15:07:04
Copiar: 3 Número de Visitas: 598
1
Seguir
1617
Seguidores

Estrategia cuantitativa de stop-loss móvil con doble stop-profit y doble stop-loss

Descripción general

Esta estrategia es una estrategia de comercio cuantitativa de Bitcoin basada en paradas dobles, paradas dobles y paradas móviles. La estrategia utiliza el cruce de EMA y WMA como señal de entrada, adopta un método de gestión de riesgos de paradas dobles y paradas dobles, adopta paradas móviles para garantizar una parte de las ganancias después de que se alcance el primer punto de parada y continúa con la búsqueda de más ganancias.

Principio de estrategia

Cuando el EMA se cruza por debajo de la WMA, se hace una entrada adicional; cuando el EMA se cruza por encima de la WMA, se hace una entrada en blanco.

En cuanto a las paradas, hay dos paradas, la primera 20 puntos por encima de la entrada y la segunda 40 puntos por encima de la entrada.

En cuanto al stop loss, también se establecen dos puntos de stop loss, el primer punto de stop loss se establece como 20 puntos por debajo del punto de entrada, y el segundo punto de stop loss se establece como el punto de entrada en sí mismo.

Cuando el precio toque el primer punto de parada, apague el 50% de la posición y mueva el punto de parada al punto de entrada para seguir buscando el segundo punto de parada.

En este sentido, la estrategia tiene tres resultados:

  1. El precio primero toca el punto de parada, perdiendo el 2% del capital;
  2. El precio toca el primer punto de parada y obtiene un beneficio del 1%, luego toca el segundo punto de parada y obtiene un beneficio del 1%;
  3. El precio primero toca el primer punto de parada, obteniendo un 1% de ganancia, luego continúa funcionando y toca el segundo punto de parada, obteniendo finalmente un 3% de ganancia.

Análisis de las ventajas

La mayor ventaja de esta estrategia reside en el sistema de gestión de riesgos. Mediante la configuración de un doble stop y un doble stop loss, se puede tomar un stop móvil para bloquear las ganancias después de obtener una parte de las ganancias y seguir buscando más ganancias. Esto puede mejorar significativamente la rentabilidad.

Otra ventaja es que la estrategia divide los resultados de una sola operación en tres situaciones, lo que reduce la probabilidad de una sola pérdida y hace que los beneficios generales sean más estables. La estrategia común tiene solo dos resultados, ya sea perder el 2% o obtener ganancias superiores al 2%.

Análisis de riesgos

El riesgo de esta estrategia proviene principalmente de la configuración de los puntos de parada. Si los puntos de parada son demasiado amplios, pueden causar una pérdida excesiva en una sola operación. Si los puntos de parada son demasiado estrechos, pueden ser golpeados por el ruido del mercado.

Otro riesgo es el riesgo de pérdidas en la parte de la posición que se mantiene después del primer punto de parada. Si las pérdidas superan las ganancias en el primer punto de parada, se compensará parte o la totalidad de las ganancias. Esto requiere la ejecución estricta de los paros móviles para bloquear las ganancias.

Dirección de optimización

Esta estrategia puede ser optimizada en los siguientes aspectos:

  1. Pruebe diferentes combinaciones de parámetros para encontrar la configuración óptima. Por ejemplo, puede probar 15 puntos, 25 puntos de distancia de parada y pérdida.

  2. Prueba otras combinaciones de indicadores, como KDJ, MACD, etc., para decidir la admisión.

  3. Optimizar la proporción de posiciones en el primer punto de parada para equilibrar la posición, es el 50% adecuado o el 30% o el 70% mejor.

  4. Prueba la configuración de la velocidad de seguimiento de los pérdidas móviles para asegurar que la pérdida sea lo más pequeña posible, con la premisa de garantizar la rentabilidad.

Resumir

Esta estrategia es muy estable en su conjunto, ya que puede aumentar significativamente los niveles de ganancias y reducir el riesgo de cola a través de doble parada, doble parada y parada móvil. También hay un gran espacio para la optimización, y se puede obtener un mejor efecto a través de ajustes de parámetros y combinaciones de indicadores. En general, esta estrategia es adecuada para aquellos inversores que buscan altos rendimientos estables.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-18 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Date Range
start_year    = input(title='Start year'   ,defval=2020)
start_month   = input(title='Start month'  ,defval=1)
start_day     = input(title='Start day'    ,defval=1)
start_hour    = input(title='Start hour'   ,defval=0)
start_minute  = input(title='Start minute' ,defval=0)
end_time      = input(title='set end time?',defval=false)
end_year      = input(title='end year'     ,defval=2019)
end_month     = input(title='end month'    ,defval=12)
end_day       = input(title='end day'      ,defval=31)
end_hour      = input(title='end hour'     ,defval=23)
end_minute    = input(title='end minute'   ,defval=59)

// MA
ema_period = input(title='EMA period',defval=10)
wma_period = input(title='WMA period',defval=20)
ema        = ema(close,ema_period)
wma        = wma(close,wma_period)

// Entry Condition
buy =
 crossover(ema,wma) and
 nz(strategy.position_size) == 0 and Buy
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell

// Pips
pip = input(20)*10*syminfo.mintick

// Trading parameters //
var bool  LS  = na
var bool  SS  = na
var float EP  = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na

if buy or sell and strategy.position_size == 0
    EP  := close
    SL1 := EP - pip     * (sell?-1:1)
    SL2 := EP - pip     * (sell?-1:1)
    TP1 := EP + pip     * (sell?-1:1)
    TP2 := EP + pip * 2 * (sell?-1:1) 
   
// current trade direction    
LS := buy  or strategy.position_size > 0
SS := sell or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL 
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS

if LS and high > TP1
    if open <= TP1
        SL2:=min(EP,TSL)
    
if SS and low < TP1
    if open >= TP1
        SL2:=max(EP,TSS)

// Closing conditions
close_long  = LS and open < SL2
close_short = SS and open > SL2

// Buy
strategy.entry("buy"  , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)

// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)

// Plots
a=plot(strategy.position_size >  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size <  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) 
c=plot(strategy.position_size >  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
d=plot(strategy.position_size <  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
e=plot(strategy.position_size >  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
f=plot(strategy.position_size <  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
g=plot(strategy.position_size >= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 
h=plot(strategy.position_size <= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 

plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)