Estrategia de negociación de media móvil de doble vía


Fecha de creación: 2024-02-29 14:54:25 Última modificación: 2024-02-29 14:54:25
Copiar: 1 Número de Visitas: 668
1
Seguir
1617
Seguidores

Estrategia de negociación de media móvil de doble vía

Descripción general

La estrategia de doble vía de movimiento de la media es una estrategia de comercio de tendencias que sigue las señales de cruce de las dos medias móviles. La estrategia utiliza a la vez el promedio móvil (EMA) y el promedio móvil ponderado (WMA) como indicadores de la señal de comercio.

Principio de estrategia

La fuente de la señal de negociación de esta estrategia es el tenedor de oro con un EMA de corto plazo de 10 y un WMA de largo plazo de 20 años. Cuando el corto plazo pasa por el WMA de largo plazo, indica que el movimiento se invierte hacia arriba desde abajo, haciendo más; cuando el corto plazo pasa por el WMA de largo plazo, indica que el movimiento se invierte hacia arriba desde abajo, haciendo vacío.

La estrategia primero determina la dirección de la operación, y establece un stop loss a una distancia de 1 ATR por encima o por debajo del precio de entrada, al mismo tiempo que establece dos paradas, la primera parada está a una distancia de 1 ATR por encima o por debajo del precio de entrada, y la segunda parada está a una distancia de 2 ATR por encima o por debajo del precio de entrada. Cuando se activa la primera parada, la posición restante se estabiliza con la segunda parada y el modo de stop loss móvil.

La lógica del stop loss móvil es que, siempre que el precio más alto o el precio más bajo toque el primer punto de parada, se activa, se actualiza en tiempo real según la línea K, se mueve el stop loss hasta el máximo de ganancias y el precio de entrada como prevención de la pérdida, para bloquear las ganancias.

Las ventajas

La estrategia utiliza la función de doble suavización de ruido de las medias móviles, que elimina eficazmente las fluctuaciones aleatorias en el mercado, identifica las señales de tendencia en la línea media y larga y evita ser bloqueado. La configuración de dos paradas de lotes al mismo tiempo aumenta el margen de ganancias de la estrategia y maximiza las ganancias. El mecanismo de parada móvil también permite que la estrategia pueda bloquear las ganancias y reducir las pérdidas.

El riesgo

Las medias móviles son por sí mismas bastante retrasadas y pueden generar un riesgo de señales perdidas; el cruce de dos medias móviles puede generar una gran cantidad de falsas señales en algunos mercados, lo que conlleva pérdidas. La configuración de stop loss es una parte importante de la estrategia, y si el stop loss es demasiado pequeño, es fácil de romper y causar pérdidas.

Además, el stop loss móvil puede no ser una buena protección en momentos de fluctuaciones en el mercado.

Dirección de optimización

  1. Se pueden probar EMA y WMA de diferentes parámetros para encontrar la combinación óptima de parámetros. El EMA de línea corta o el WMA de línea larga pueden afectar el rendimiento de la estrategia.

  2. Se puede elegir el multiplicador ATR o el punto fijo de stop dependiendo de las características de la variedad y el estilo de negociación.

  3. Se puede probar el efecto de la parada de movimiento parcial de la posición y la parada de movimiento total de la posición.

  4. Se puede evaluar la filtración mediante la introducción de otros indicadores, ayudando a EMA y WMA a mejorar la calidad de la señal.

Resumir

Las estrategias de movilidad de dos vías son más robustas en general y se desempeñan mejor en situaciones de tendencia. La optimización de parámetros, la optimización de stop loss y la mejora de la calidad de la señal pueden mejorar aún más el rendimiento de la estrategia en el mercado. Esta es una idea de estrategia con potencial que vale la pena investigar y invertir en el mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gpadihar

//@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=3019)
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 and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)

// 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=50)
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=50)
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)