Estrategia de trading cuantitativo de cruce de media móvil exponencial doble


Fecha de creación: 2024-01-25 14:04:23 Última modificación: 2024-01-25 14:04:23
Copiar: 0 Número de Visitas: 659
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo de cruce de media móvil exponencial doble

Descripción general

Esta estrategia se llama estrategia de comercio cuantitativo cruzado de la media de los dos índices. La estrategia realiza el comercio automatizado mediante el cálculo de la media móvil exponencial (EMA) y el juicio de puntos de compra y venta cruzados, combinado con el principio de apertura de posición de comercio cuantitativo.

Principio de estrategia

La lógica central de esta estrategia se basa en un promedio móvil de dos índices. El indicador 1 es el EMA a corto plazo de 20 días y el indicador 2 es el EMA a largo plazo de 50 días. Se produce una señal de compra cuando el EMA a corto plazo atraviesa el EMA a largo plazo desde abajo; se produce una señal de venta cuando el EMA a corto plazo atraviesa el EMA a largo plazo desde arriba.

Además, la estrategia también utiliza el indicador cuantitativo de Vortex para ayudar a determinar la tendencia y generar señales de negociación. El indicador de Vortex determina la tendencia de alza y bajada mediante el cálculo de la diferencia entre el precio más alto y el precio de cierre de ayer y el precio más bajo y el precio de cierre de ayer.

Cuando se produce una señal de negociación, se gestiona el riesgo de acuerdo con el módulo de administración de fondos incorporado en la estrategia, en combinación con el principio de la proporción de ganancias y pérdidas. La estrategia permite establecer un nivel de stop loss y un nivel de parada para bloquear ganancias y controlar el riesgo.

Análisis de las ventajas

  • 1. Estrategia de integración de los indicadores cuantitativos de doble cruce EMA y Vortex para aprovechar al máximo las ventajas de los indicadores y mejorar la precisión de la señal
  • 2. Sistemas de comercio automatizados, sin intervención humana y con menor probabilidad de errores humanos
  • 3. La función de parada automática de pérdidas incorporada permite limitar el máximo de pérdidas en una sola transacción
  • 4. El módulo de gestión de fondos controla la proporción de capital invertido en cada transacción, lo que controla el riesgo de la transacción en general

Análisis de riesgos

  • 1. Las señales cruzadas de EMA pueden presentar falsas señales, y el indicador cuantitativo de Vortex no puede filtrar completamente las falsas señales, por lo que existe una cierta probabilidad de pérdidas
  • 2. El incidente de los grandes cisnes negros podría extender directamente las pérdidas por transacciones individuales.
  • 3. Retirar el control de dependencia de la función de parada de pérdidas, si se rompe la parada de pérdidas causará mayores pérdidas

La dirección de la optimización:

  • 1. Se puede probar ajustar los parámetros de EMA para optimizar la señal de cruce
  • 2. Se pueden combinar más indicadores para filtrar señales
  • 3. Los parámetros se pueden optimizar automáticamente con algoritmos de aprendizaje automático

Resumir

En general, esta estrategia es una estrategia típica de cruce de dos EMA, que utiliza el cruce entre los diferentes parámetros de EMA para determinar el momento de compra y venta en el mercado, y pertenece a la estrategia de negociación de línea corta y media. La mayor ventaja de la estrategia consiste en utilizar indicadores cuantitativos para filtrar señales y lograr una vigilancia sin humanos a través de un sistema de negociación automatizado, mientras que se incluye un stop loss para controlar el riesgo, con un rendimiento relativamente estable.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © smottybugger 

//@version= 5
strategy("The  Averages Moving_X_Vortex", shorttitle="2.5billion BTC lol" , calc_on_order_fills=true, calc_on_every_tick=true, commission_type=strategy.commission.percent, commission_value=0.02, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, margin_long=0, margin_short=0,overlay=true)
// Dual Vortex
period_1 = input(15, "short Time")
period_2 = input(25, "long time")
VMP = math.sum(math.abs(high - low[3]), period_1)
VMM = math.sum(math.abs(low - high[1]), period_2)
STR = math.sum(ta.atr(1), period_1)
STR2 = math.sum(ta.atr(1), period_2)
VXpower= (input(5,"Vortex Power")/10000)*close
shorterV =(VMP / STR)*VXpower
longerV = (VMM / STR2)*VXpower

// MACross
shortlen = input(20, "ShortMa")
longlen = input(29, "LongMA")
shorterMA = ta.sma(close, shortlen)
longerMA = ta.sma(close, longlen)

// Vortex "MACross Stabilized"
Varance = input(1, "Vortex Stabilize")
Vpercent = (Varance / 100)
shortV= ((((shorterMA-close)* Vpercent)+shorterV)/2)+close
longV = ((((longerMA -close )*Vpercent)+longerV)/2)+close

//MAcross vortex stabilized
Marance = input(1, "MACross Stabilize")
MApercent = Marance / 100
shortMA = ((((shorterMA-close)*MApercent)+shorterV)/2)+close
longMA = ((((longerMA-close)*MApercent)+longerV)/2)+close

//VMXadveraged Moving cross adveraged
VMXL=(longV+longMA)/2
VMXS=(shortV+shortMA)/2
VXcross= ta.cross(VMXS,VMXL) ? VMXS : na
VMXcross= ta.cross(VMXS,VMXL)

//plot
plot(VMXS,"BUY",color=#42D420)
plot(VMXL,"SELL",color=#e20420)
crossV= ta.cross(shortV, longV) ? shortV : na
plot(shortV ,"shortV", color=#42D420)
plot(longV,"longV", color=#e20420)
plot(crossV,"crossV", color=#2962FF, style=plot.style_cross, linewidth=4)
crossMA = ta.cross(shortMA, longMA) ? shortMA : na
plot(shortMA,"shortMA", color=#42D420)
plot(longMA,"longMA", color=#e20420)
plot(crossMA,"crossMA", color=#2962FF, style=plot.style_cross, linewidth=4)
plot(VXcross,"VMXcross",color=#2962FF, style= plot.style_cross,linewidth=4)
plot(close,color=#999999)

// Vortex Condistyle
is_Vlong =shortV< longV
is_Vshort =shortV>longV


// Vortex commands
Vlong =  ta.crossunder(longV, shortV)
Vshort =ta.crossover(shortV,longV)
VorteX = ta.cross(longV, shortV)

// MACross Conditions
is_MAlong = shortMA < longV
is_MAshort = shortMA > shortV


//VMX Conditions
is_VMXlong=VMXS<VMXL
is_VMXshort=VMXS>VMXL

// MA commands
MAlong = ta.crossunder(shortMA, longV)
MAshort =ta.crossover(shortMA, shortV)
MAcross =  ta.cross(shortMA, longMA)
 
//VMX COMMANss
VMXBUY=ta.crossover( VMXS,VMXL)
VMXSELL=ta.crossunder(VMXS,VMXL)

// Close Crossing PositionLMXs

CS=is_MAshort or is_VMXshort
CL= is_MAlong or is_VMXlong
OS=MAshort or VMXSELL
OL=MAlong or VMXBUY


if VMXcross
    strategy.close_all ("closed")

//if CS and  OL
    strategy.close("Short",comment="Short Closed")


//if CL and  OS
    strategy.close("Long",comment="Long Closed" ) 

//CA1= is_MAcross and is_VorteX
//if CA1
   // strategy.close_all(comment="X2X")

// Defalongyntry qty

if is_VMXlong and VMXSELL
    strategy.entry("sell",strategy.short)


if is_VMXshort and VMXBUY
    strategy.entry("buy",strategy.long)



// Stop Losses & Taking Profit
sllp = input(0, "Stop Loss Long")
sll = (1 - sllp / 100) * strategy.position_avg_price
is_sll = input(true, "Stop Long")

tplp = input(0, "Take Profit Long")
tpl = (1 + tplp / 100) * strategy.position_avg_price
is_tpl = input(true, "Take Long")

slsp = input(0, "Stop Loss Short")
sls = (1 + slsp / 100) * strategy.position_avg_price
is_sls = input(true, "Stop Short")

tpsp = input(0, "Take Profit Short")
tps = (1 - tpsp / 100) * strategy.position_avg_price
is_tps = input(true, "Take Short")

if (is_sll or is_sls) 
    strategy.close("Stop Losses", qty_percent=100)

if (is_tpl or is_tps) 
    strategy.close("Take Profits", qty_percent=100)


 //Strategy Backtest
//plot(strategy.equity, "Equity", color=color.red, linewidth=2, style=plot.style_areabr)