Estrategia de negociación de canales de media móvil doble

El autor:¿ Qué pasa?, fecha: 2024-02-29 14:54:25
Las etiquetas:

img

Resumen general

La estrategia de comercio de canal de media móvil dual es una estrategia de comercio de tendencia que rastrea los cruces entre las medias móviles dobles. La estrategia utiliza el promedio móvil exponencial (EMA) y el promedio móvil ponderado (WMA) como indicadores de señal de comercio. Cuando la EMA a corto plazo cruza por encima de la WMA a largo plazo, la estrategia va a largo. Cuando la EMA a corto plazo cruza por debajo de la WMA a largo plazo, la estrategia va a corto.

Estrategia lógica

Las señales comerciales de esta estrategia provienen de la cruz de oro y la cruz de la muerte entre la EMA a corto plazo de 10 períodos y la WMA a largo plazo de 20 períodos. Cuando la EMA a corto plazo cruza por encima de la WMA a largo plazo, indica que el mercado se está invirtiendo hacia arriba, por lo que va largo. Cuando la EMA a corto plazo cruza por debajo de la WMA a largo plazo, indica que el mercado se está invirtiendo hacia abajo, por lo que va corto.

Después de determinar la dirección de la negociación, la estrategia establece el stop loss por debajo o por encima del precio de entrada en un período de 1 ATR, con dos ganancias - el primer take profit se establece a 1 ATR por encima o por debajo del precio de entrada, y el segundo take profit se establece a 2 ATR por encima o por debajo del precio de entrada. Cuando se activa el primer take profit, se cerrará el 50% de la posición. La posición restante seguirá corriendo hacia el segundo take profit o con un trailing stop loss.

La lógica de stop loss de seguimiento - se activará una vez que el precio más alto o el precio más bajo haya alcanzado el primer nivel de ganancia.

Ventajas

La estrategia utiliza la función de reducción de ruido de doble suavizado de las medias móviles para filtrar de manera efectiva las fluctuaciones aleatorias en el mercado e identificar señales de tendencia a mediano y largo plazo, evitando así quedar atrapados en los golpes. Además, las dos etapas de toma de ganancias aumentan la zona de ganancias de la estrategia y maximizan las ganancias.

Los riesgos

Las medias móviles tienen un mayor retraso, lo que supone el riesgo de que se pierdan señales.

La configuración del stop loss es un componente importante de la estrategia. Si el stop loss es demasiado pequeño, es propenso a ser golpeado por el ruido del mercado. Si el stop loss es demasiado grande, puede no controlar los riesgos de manera efectiva.

Además, cuando el mercado fluctúa violentamente, el trailing stop puede no funcionar muy bien en la protección.

Direcciones de optimización

  1. Prueba EMA y WMA con diferentes parámetros para encontrar la combinación óptima de parámetros.

  2. El valor de las pérdidas de los instrumentos de inversión se determinará en función de las características del producto y de los estilos de negociación.

  3. Prueba de los efectos de la parada parcial de posición y de la parada de posición completa.

  4. Introducir otros indicadores para el filtrado de señales para ayudar a la EMA y a la WMA, a fin de mejorar la calidad de la señal.

Resumen de las actividades

En general, la estrategia de comercio de canal de media móvil dual es relativamente robusta y tiene un buen rendimiento en los mercados de tendencia. Al optimizar los parámetros, los mecanismos de stop loss y mejorar la calidad de la señal, el rendimiento comercial real de esta estrategia puede mejorarse aún más. Esta es una idea de estrategia prometedora que vale la pena investigar en profundidad y aplicar en el comercio real.


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



Más.