Basado en la estrategia comercial de cruce de media móvil doble


Fecha de creación: 2023-11-27 15:32:57 Última modificación: 2023-11-27 15:32:57
Copiar: 1 Número de Visitas: 613
1
Seguir
1617
Seguidores

Basado en la estrategia comercial de cruce de media móvil doble

Descripción general

La estrategia se basa en la intersección de dos medias móviles con diferentes parámetros para emitir señales de compra y venta. Se emite una señal de compra cuando una media móvil de menor período se rompe con una media móvil de mayor período desde abajo; se emite una señal de venta cuando una media móvil de menor período se rompe con una media móvil de mayor período desde arriba.

Principio de estrategia

La estrategia se escribe en el lenguaje de guión pine. En primer lugar, se define el tipo, la longitud y la fuente de precios de dos promedios móviles, denominados p1 y p2 respectivamente, mediante la entrada. P1 representa el promedio de un período más corto y p2 representa el promedio de un período más largo.

La función de cruce y cruce determina la intersección de dos líneas equidistantes. Se emite una señal de compra cuando p1 atraviesa p2 desde abajo; se emite una señal de venta cuando p1 atraviesa p2 desde arriba.

Para ejecutar la operación, la estrategia crea posiciones de más o de menos cabeza cuando emite una señal a través de la función strategy.entry. Si se activa el parámetro shortOnly, solo la operación vende la señal.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Las reglas son claras, fáciles de entender y aplicar
  2. El cruce de la línea media es una señal de intercambio clásica y muy conocida.
  3. Tipo, longitud y fuente de precios de la línea media altamente personalizable
  4. El mercado de divisas está en crisis, y el mercado de divisas está en crisis, y el mercado de divisas está en crisis.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. En situaciones de crisis, la línea de paridad puede generar múltiples cruces ineficaces, lo que lleva a una sobrecambio
  2. Optimizar los parámetros para adaptarse a diferentes variedades y ciclos de negociación
  3. No se puede determinar la dirección de la tendencia, puede haber un retroceso

Se puede ajustar la longitud de la línea media, introducir condiciones de filtrado y otros métodos para reducir la señal de invalidez. También se puede combinar con un indicador de tendencia para determinar el movimiento de la bolsa principal.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Introducción de la media ponderada por volumen o el precio típico como fuente de precios para mejorar la fiabilidad de las señales cruzadas

  2. Aumentar el período de validación para evitar el error de cruce a corto plazo

  3. Detención de pérdidas y pérdidas máximas admisibles en función de la amplitud de las fluctuaciones del mercado

  4. Buscar la combinación óptima de parámetros usando parámetros de optimización de la concordancia de curvas

  5. Considere emitir señales de negociación solo cuando las tendencias del gran ciclo son consistentes

Resumir

La estrategia de cruce de dos líneas uniformes es fácil de entender y de implementar en su conjunto. La formación de señales de negociación mediante el cruce de dos líneas uniformes es altamente personalizable. Pero también puede generar una mayor cantidad de señales no válidas en situaciones de crisis.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 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/
// © RafaelPiccolo

//@version=4
strategy("Double MA Cross", overlay=true)

type1 = input("SMA", "MA Type 1", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len1 = input(10, minval=1, title="Length 1")
src1 = input(close, "Source 1", type=input.source)

type2 = input("SMA", "MA Type 2", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len2 = input(50, minval=2, title="Length 2")
src2 = input(close, "Source 2", type=input.source)

shortOnly = input(false, "Short only")

tema(src, len)=>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    ema3 = ema(ema2, len)
    return = 3 * (ema1 - ema2) + ema3

getPoint(type, len, src)=>
    return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)

p1 = getPoint(type1, len1, src1)
p2 = getPoint(type2, len2, src2)

shortCondition = crossunder(p1, p2)
longCondition = crossover(p1, p2)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longCondition)
    if (shortOnly)
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long)

plot(p1, "MA 1", p1 < p2 ? color.red : color.green)
plot(p2, "MA 2", color.blue)