
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.
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.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
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.
La estrategia puede ser optimizada en los siguientes aspectos:
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
Aumentar el período de validación para evitar el error de cruce a corto plazo
Detención de pérdidas y pérdidas máximas admisibles en función de la amplitud de las fluctuaciones del mercado
Buscar la combinación óptima de parámetros usando parámetros de optimización de la concordancia de curvas
Considere emitir señales de negociación solo cuando las tendencias del gran ciclo son consistentes
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.
/*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)