Estrategia de negociación de medias móviles de múltiples tipos


Fecha de creación: 2023-09-19 21:27:31 Última modificación: 2023-09-19 21:27:31
Copiar: 0 Número de Visitas: 713
1
Seguir
1617
Seguidores

Descripción general

La estrategia de seguimiento de la tendencia mediante el cálculo de varios tipos de promedios móviles, para lograr el cruce de la línea de doble par y el cruce de la línea de baja. Al mismo tiempo, la estrategia también introdujo un tercer promedio móvil como juicio de la tendencia, para controlar el riesgo.

Principio de estrategia

  1. Se pueden calcular dos medias: MA1 y MA2, y se pueden elegir varios tipos, como SMA, EMA y VWMA, respectivamente, y la longitud también se puede personalizar.

  2. Juzgar el cruce entre MA1 y MA2: cuando se usa MA2 en MA1, se hace más; cuando se usa MA2 bajo MA1, se estabiliza.

  3. (Opcional) Calculación de la tercera línea media MA3, la longitud generalmente toma un período más largo, como 50 ≠ MA3 por encima de la cabeza, por debajo de la cabeza vacía ≠ sólo abrir una posición cuando el precio rompe MA3 ≠

  4. Las reglas anteriores se combinan con el período de retroalimentación para completar la generación de señales de negociación estratégica.

  5. Colorear más la zona de vacío de la cruz para formar una ayuda visual.

La estrategia combina el seguimiento de tendencias de las medias móviles con la idea de hacer más deuda al cruzarse, al mismo tiempo que se introduce una tercera línea media para controlar el riesgo, que se adapta con flexibilidad a los diferentes ciclos del mercado mediante el ajuste de parámetros.

Análisis de las ventajas

  1. El uso de un cruce de dos líneas iguales para determinar la dirección de la tendencia permite un seguimiento eficaz de la tendencia.

  2. Soporta combinaciones de varios tipos de líneas medias, que se pueden optimizar para diferentes ciclos de mercado.

  3. La introducción de la tercera línea para el control de riesgos puede reducir las pérdidas innecesarias.

  4. La visualización de la coloración cruzada mejora la experiencia de ver las transacciones.

  5. Los parámetros son ajustables y se pueden optimizar para diferentes ciclos.

  6. Las reglas son sencillas, claras y fáciles de entender.

Análisis de riesgos

  1. Las estrategias de doble línea de equilibrio son propensas a generar pérdidas en situaciones de agitación y reversión de tendencias. Se puede reducir el riesgo optimizando los parámetros.

  2. Las líneas medianas dobles a veces producen señales erróneas o reacciones de avance. Se puede prolongar el ciclo de la línea mediana o optimizar los parámetros de manera adecuada.

  3. La tercera línea media puede perder oportunidades de impulso más fuerte. Se puede probar el acortamiento adecuado de la tercera línea media para reducir las oportunidades de ganancias perdidas.

  4. No se puede garantizar que cada transacción sea rentable, por lo que se necesita una buena gestión de pérdidas.

Dirección de optimización

  1. Prueba diferentes tipos de medias y combinaciones de diferentes parámetros de periodicidad para encontrar el par de parámetros óptimo.

  2. Optimización de los parámetros de ciclo de la tercera línea media, equilibrando el control de riesgo y la captura de ganancias.

  3. Asociarse a una estrategia de stop loss para controlar las pérdidas individuales.

  4. Se puede considerar la inclusión de algoritmos de aprendizaje automático para encontrar los parámetros óptimos utilizando el entrenamiento de datos grandes.

  5. En combinación con otros indicadores como KD, MACD, etc., se filtra y verifica la señal.

Resumir

Esta estrategia de cruce de promedio móvil de doble línea, que integra varias funciones como seguimiento de tendencias, control de riesgos, optimización de parámetros y asistencia visual, es una estrategia de tendencias muy clásica y práctica. A través de la prueba y optimización continuas de parámetros, la introducción adecuada de otros indicadores o aprendizaje automático, la estrategia puede adaptarse mejor al mercado.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
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/
// © HAMIDBOX

//@version=4
strategy("Multi-X by HAMID-BOX", overlay=true)

maType(source , length, type)   =>
    type    == "SMA"            ? sma(source , length)  :
     type   == "EMA"            ? ema(source , length)  :
     type   == "RMA"            ? rma(source, length)   : 
     type   == "WMA"            ? wma(source, length)   :
     type   == "VWMA"           ? vwma(source, length)  :
     na
     
////////////////////////////////////////////////////////////////////////////////
colorup             = #11ff00
colordn             = #e91e63

/////////////////////////// MOVING AVERAGE №1 INPUTS ///////////////////////////
ma1_show            = input(title="MA №1", defval=true, type=input.bool, inline="ma1")
ma1type             = input(title="", defval="EMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma1")
ma1src              = input(title="", defval=close, type=input.source, inline="ma1")
ma1Len              = input(title="", defval=9, type=input.integer, inline="ma1")
ma1col              = input(colorup, "", type=input.color, inline="ma1")

ma1                 = maType(ma1src, ma1Len, ma1type)

ma1p = plot(ma1_show ? ma1 : na, linewidth=1, color=color.new(ma1col , 50))

/////////////////////////// MOVING AVERAGE №2 INPUTS ///////////////////////////
ma2_show            = input(title="MA №2", defval=true, type=input.bool, inline="ma2")
ma2type             = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma2")
ma2src              = input(title="", defval=close, type=input.source, inline="ma2")
ma2Len              = input(title="", defval=21, type=input.integer, inline="ma2")
ma2col              = input(colordn, "", type=input.color, inline="ma2")

ma2                 = maType(ma2src, ma2Len, ma2type)

ma2p = plot(ma2_show ? ma2 : na, linewidth=1, color=color.new(ma2col , 50))

/////////////////////////// MOVING AVERAGE №3 INPUTS ///////////////////////////

read                = input(title="For Safe Side = Read This >>>", defval=true, tooltip="If you want to play on the safe side, Check ON Moving Average № 3, MA №3 shows the major trend, its work as a Trend-Zone,\nRule: Do not open trades if the market is below MA № 3, WHY? because Trend is Bearish and it will make more Down, NOTE:: It is possible after adding MA № 3, it will give you a small profit. But the great advantage of that, it will reduce your loss and it will also increase your Profit Factor.\nAnd if you not have any issue with Risk then you can Leave Moving Average No 3")
ma3_show            = input(title="MA №3", defval=false, type=input.bool, inline="ma3")
ma3type             = input(title="", defval="SMA", options=["SMA","EMA","RMA","WMA","VWMA"], inline="ma3")
// ma3srcH          = input(title="", defval=high, type=input.source, inline="ma3")
// ma3srcL          = input(title="", defval=low, type=input.source, inline="ma3")
ma3Len              = input(title="", defval=50, type=input.integer, inline="ma3")
ma3col              = input(colordn, "", type=input.color, inline="ma3")

ma3H                = maType(high, ma3Len, ma3type)
ma3L                = maType(low, ma3Len, ma3type)

ma3p                = plot(ma3_show ? ma3H : na, linewidth=1, color=color.new(ma3col , 50))
ma3p2               = plot(ma3_show ? ma3L : na, linewidth=1, color=color.new(ma3col , 50))

Bigcross_zone_color = if ma3_show and close > ma3H
    color.new(colorup , 90)
else
    if ma3_show and close < ma3L
        color.new(colordn , 90)
fill(ma3p , ma3p2, color=Bigcross_zone_color, title="Cross Background Color")

BigCrossSignal      = close > ma3H
ZoneCrossover       = crossover(close , ma3H)
///////////////////////////// BACK TESTING INPUTS //////////////////////////////
startTime           = input(title="Start Time", type=input.time, defval= timestamp("01 Jan 2021"))
endTime             = input(title="End Time", type=input.time, defval= timestamp("01 Jan 2100"))
inDateRange         = true

//////////////////////////// PLOTING AND COOLORING /////////////////////////////
Cross               = input(true, "Cross Sign ON/OFF") 
maCrossOver         = crossover(ma1 , ma2)
maCrossUnder        = crossunder(ma1 , ma2)
cross_zone_color    = ma1 > ma2 ? color.new(colorup , 85) : color.new(colordn , 85)

plotshape(Cross ? maCrossOver : na, title="CrossUP Sign", style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny)
plotshape(Cross ? maCrossUnder : na, title="CrossDN Sign", style=shape.xcross, location=location.abovebar, color=#e91e63, size=size.tiny)

fill(ma1p , ma2p, color=cross_zone_color, title="Cross Background Color")

///////////////////////////////// (CONDITIONS) /////////////////////////////////

if maCrossOver and inDateRange
    if ma3_show
        strategy.entry("BUY", strategy.long, when=BigCrossSignal)
    else    
        strategy.entry("BUY", strategy.long)

if  ma3_show
    strategy.entry("BUY", strategy.long, when=ZoneCrossover)

if maCrossUnder and inDateRange
    strategy.close("BUY", comment="Exit")
if (not inDateRange)
    strategy.close_all()