
La estrategia de la línea corta de la cruz de las dos medias es una estrategia de comercio de la línea corta simple y eficiente. La estrategia utiliza la señal de la cruz de los precios con la media móvil como una señal de compra y venta, para capturar la fluctuación de la tendencia de los precios dentro de la línea corta.
La estrategia de doble equilátero cruzado utiliza dos promedios móviles de diferentes períodos, una línea MA más corta y una línea MA más larga. Se genera una señal de compra cuando la línea MA corta se rompe con la línea MA larga desde abajo y una señal de venta cuando la línea MA corta se rompe con la línea MA larga desde arriba.
La estrategia define el largo MA de la variable length con una longitud de 50, y luego define el precio como el precio de cierre, calcula el valor de la línea MA de la longitud y lo guarda en la variable ma. Luego define bcond para determinar si el precio es superior al valor de ma, y si es bcount más 1, entonces regresa a cero. Si bcond dispara consecutivamente el número de confirmBars (default 2) se genera una señal de compra. Por el contrario, cuando el precio es inferior a ma, se genera una señal de venta de acuerdo con la misma lógica.
Para filtrar algunas señales no válidas, la estrategia agrega tres condiciones de filtrado clc, clc0 y clc1. Estas tres condiciones determinan la relación entre el tamaño del precio de cierre del ciclo actual y el tamaño del precio de cierre del ciclo anterior, y la relación entre el tamaño del precio de cierre del ciclo actual y el precio de apertura, si se cumplen al mismo tiempo, se permite la generación de señales.
Finalmente, cuando el precio vuelve a caer hacia arriba o vuelve a romper hacia abajo, se liquida la posición de más posición o la posición vacía correspondiente.
Para reducir el riesgo, se puede considerar ajustar los parámetros de la línea media en función de la volatilidad del mercado. También se puede adoptar un stop loss aleatorio o un stop loss porcentual para que el punto de parada pueda ajustarse con flexibilidad.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimizar los parámetros del sistema de medias, como ajustar dinámicamente la longitud de las medias en función de indicadores como la volatilidad del mercado.
Añadir condiciones de filtración adicionales, como el aumento de la cantidad de tráfico, para mejorar la calidad de la señal.
Optimización de las estrategias de detención de pérdidas, como el uso de detención flotante o detención porcentual, para reducir la probabilidad de detención prematura.
En combinación con otros indicadores, como MACD, RSI, etc., se realiza una verificación multifactorial para mejorar la eficacia de la señal.
Aumentar las estrategias automáticas de gestión de riesgos, como el ajuste dinámico del tamaño de las posiciones y el control de las pérdidas individuales.
El uso de métodos de aprendizaje automático en las señales de compra y venta para crear modelos de evaluación de señales más precisos.
La estrategia de línea corta de doble equilátero cruzado en general es una estrategia de línea corta muy práctica, con ventajas como la simplicidad de operación y la facilidad de implementación. Sin embargo, se debe tener en cuenta el control de las falsas señales de los mercados de volatilidad y la optimización de los parámetros dinámicos para que la estrategia tenga la máxima eficacia.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close
ma = sma(price, length)
bcond = price > ma
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]
if clc and clc0 and clc1 and (bcount == confirmBars)
strategy.entry("buy", strategy.long)
scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]
if csc and csc0 and csc1 and (scount == confirmBars)
strategy.entry("sell", strategy.short)
strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)