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

El autor:¿ Qué pasa?, Fecha: 2024-02-05 12:05:10
Las etiquetas:

img

Resumen general

Esta estrategia combina la doble media móvil y los indicadores Supertrend para construir señales de negociación y juzgar la dirección de la tendencia a través de diferentes combinaciones de ciclos para lograr una alta rentabilidad.

Principio

Esta estrategia utiliza los indicadores MACD y Supertrend para determinar el momento de entrada en el mercado.

Cuando la línea rápida rompe la línea lenta hacia arriba, es una señal de compra. En este momento, si la Supertrend a medio y largo plazo también es una tendencia al alza, la señal final de compra se genera para ir largo. Por el contrario, cuando la línea rápida rompe la línea lenta hacia abajo, es una señal de venta. En este momento, si la Supertrend a medio y largo plazo también es una tendencia a la baja, la señal final de venta se genera para ir corto.

El stop loss y el take profit están fijados en valores fijos.

Análisis de ventajas

La mayor ventaja de esta estrategia es que utiliza tanto medias móviles dobles como Supertrend para determinar la dirección del mercado, combinando análisis a mediano corto plazo y a mediano largo plazo para mejorar significativamente la eficiencia de la toma de decisiones y evitar falsas rupturas.

Análisis de riesgos

El principal riesgo de esta estrategia es que los ajustes de stop loss fijos y take profit pueden perder mayores oportunidades de ganancias. Además, si hay una divergencia entre los juicios a mediano corto y mediano largo plazo, la estrategia no funcionará correctamente. Podemos reducir este riesgo mediante ajustes de stop loss y take profit flotantes.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Aumentar el mecanismo de ajuste dinámico para el stop loss y el take profit, y establecer el stop loss y el take profit de acuerdo con la volatilidad y las tendencias del mercado.

  2. Optimizar los parámetros del MACD para encontrar parámetros de media móvil más adecuados para la variedad objetivo.

  3. Optimizar los parámetros de Supertrend para ajustar su sensibilidad al mercado.

  4. Aumentar otros indicadores para el juicio para proporcionar señales más dimensionales y mejorar el rendimiento de la estrategia.

Resumen de las actividades

Esta estrategia combina con éxito las ventajas de las medias móviles duales y los indicadores de Supertrend. Al combinar diferentes juicios de ciclo, filtra señales erróneas y obtiene mejores rendimientos en los mercados de tendencia. Podemos mejorar aún más la estabilidad y la rentabilidad de esta estrategia a través de la optimización de parámetros y ajustes de mecanismos.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

strategy("Super Trend 2 MACD", overlay=true)
// MACD input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)

Macd = fastMA - slowMA
Signal = sma(Macd, signalLength)


res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 and Macd > Signal
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 and Macd < Signal

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)


Más.