Estrategia de trading cuantitativo SuperTrend de doble media móvil


Fecha de creación: 2024-02-05 12:05:10 Última modificación: 2024-02-05 12:05:10
Copiar: 0 Número de Visitas: 608
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo SuperTrend de doble media móvil

Descripción general

Esta estrategia utiliza una combinación de dos indicadores de línea de paridad y SuperTrend para construir señales de negociación, y al mismo tiempo combina diferentes períodos para determinar la dirección de la tendencia y obtener ganancias eficientes.

Principio de estrategia

Esta estrategia utiliza dos indicadores para determinar el momento de entrada en el mercado: el MACD y el SuperTrend. En este caso, el MACD determina la dirección de la tendencia a corto plazo, y el SuperTrend determina la dirección de la tendencia a medio y largo plazo.

Cuando la línea rápida rompe la línea lenta de abajo hacia arriba como una señal de compra, entonces si la Supertrend a medio y largo plazo es una tendencia ascendente, se produce una señal de compra final, hacer más; por el contrario, cuando la línea rápida rompe la línea lenta de arriba hacia abajo como una señal de venta, entonces si la Supertrend a medio y largo plazo es una tendencia bajista, se produce una señal de venta final, hacer vacío.

El stop loss y el stop stop están fijos.

Análisis de las ventajas

La mayor ventaja de esta estrategia es que se puede usar al mismo tiempo la línea de doble promedio y la SuperTrend para determinar la dirección del mercado, en combinación con el corto y medio plazo, lo que mejora considerablemente la eficiencia de la toma de decisiones y evita falsas rupturas. Además, Supertrend puede ajustarse a un entorno de mercado más amplio en función de los parámetros de ajuste de la volatilidad del mercado.

Análisis de riesgos

El principal riesgo de esta estrategia es que la configuración fija de la parada de pérdidas puede perder un mayor margen de ganancias. Además, la estrategia no puede funcionar correctamente si hay discrepancias entre el juicio a corto y medio plazo. Podemos reducir este riesgo mediante la configuración flotante de la parada de pérdidas.

Dirección de optimización

Esta estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar el mecanismo de ajuste dinámico de las paradas de pérdidas, ajustando las paradas de pérdidas según la volatilidad y la tendencia del mercado.

  2. Optimice los parámetros MACD para encontrar los parámetros de la línea media más adecuados para la variedad objetivo.

  3. Optimización de los parámetros de Supertrend para ajustar su sensibilidad al mercado.

  4. Aumentar otros indicadores de juicio, proporcionar señales de mayor dimensión y mejorar la eficacia de la estrategia.

Resumir

Esta estrategia combina con éxito las ventajas de los dos indicadores de la línea de paridad y la SuperTrend, para filtrar las señales erróneas a través de la combinación de diferentes períodos y obtener mejores ganancias en mercados de tendencia. Podemos mejorar aún más la estabilidad y la rentabilidad de la estrategia mediante la optimización de parámetros y el ajuste de mecanismos.

Código Fuente de la Estrategia
/*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)