
La estrategia permite el seguimiento de la tendencia mediante el cálculo de dos líneas de equilibrio dinámico DEMA y TEMA y la creación de posiciones de plus o de minus cuando se producen horquillas de oro o horquillas muertas. Al mismo tiempo, la estrategia también establece un cierto número de líneas de posición para evitar pérdidas innecesarias.
La estrategia se basa principalmente en la intersección de dos líneas equidistantes dinámicas DEMA y TEMA para determinar la dirección de la tendencia.
DEMA representa un promedio móvil binario, que combina las características de la EMA de suavización ponderada y optimización de los problemas de retraso que existen en la EMA. Su fórmula de cálculo es:
DEMA = 2*EMA(CLOSE,N) - EMA(EMA(CLOSE,N),N)
Aquí N es la Demalength.
TEMA representa una media móvil triindicativa, que reduce el retraso de la media por medio de la suavización triindicativa. Su fórmula de cálculo es:
EMA1 = EMA(CLOSE,Temalength)
EMA2 = EMA(EMA1,Temalength)
EMA3 = EMA(EMA2,Temalength)
TEMA = 3*EMA1 - 3*EMA2 + EMA3
Cuando TEMA sube a través de DEMA, considere como una señal de horquilla dorada, haga más; cuando TEMA baja a través de DEMA, considere como una señal de horquilla muerta, haga vacío.
Además, la estrategia también establece delayBars para asegurar la validez de la señal y evitar falsas señales. Requiere un ciclo de continuidad de la horca de oro o la horca muerta para activar la entrada.
Finalmente, la estrategia incluye una lógica de doble verificación. Es decir, antes de abrir una posición, se determina si se necesita liquidar la posición inversa actual, lo que evita el riesgo de arbitraje bidireccional.
DEMA y TEMA, las dos líneas dinámicas, son más sensibles que las EMA y SMA tradicionales, y pueden capturar los cambios de tendencia más rápidamente, lo que mejora la precisión de los juicios sobre el movimiento del mercado.
La configuración del parámetro delayBars hace que sea necesario esperar a que la señal se prolonga durante un período de tiempo antes de abrir una posición, de modo que se pueda filtrar parte de la falsa señal para evitar ser encajado.
Las estrategias priorizan la necesidad de liquidar posiciones invertidas antes de abrir una posición, lo que evita el riesgo de mantener posiciones bidireccionales al mismo tiempo y minimiza las pérdidas de arbitraje.
La estrategia se basa en un indicador técnico general, el cruce equilátero, para juzgar las tendencias y las señales, no depende de una variedad en particular, y se aplica a la mayoría de las variedades con una tendencia evidente.
Cuando el mercado se encuentra en un gran intervalo de oscilación, las líneas medias pueden cruzarse con frecuencia, lo que facilita la formación de falsas señales que causan la captura. En este caso, la configuración del ciclo de retardo puede no filtrar completamente las señales.
La solución es la identificación de estrategias de suspensión después de la oscilación, o ajustar adecuadamente los parámetros de la línea media y los períodos de retardo.
La estrategia solo sigue la tendencia de los precios y no puede predecir trampas a corto plazo o reveses provocados por eventos inesperados importantes. En este caso, la estrategia puede sufrir grandes pérdidas.
La solución es combinarla con otros indicadores para determinar el contexto de riesgo o reducir el tamaño de la posición de manera adecuada.
Además de DEMA y TEMA, también se puede probar una combinación de SMA, EMA y otras medias mejoradas para encontrar un indicador de medias que coincida mejor con el mercado.
Optimización de parámetros para encontrar los mejores parámetros de longitud media de la línea y el período de latencia de la señal para obtener una señal de negociación más precisa.
En función de las características de la variedad, encuentre una combinación de parámetros de la línea media y el período de retardo adecuados para su rango de fluctuación y tendencia.
Por ejemplo, los indicadores de Bollinger Bands determinan la volatilidad y la posición de los precios para evitar caer en trampas de oscilación; en combinación con el juicio de los indicadores de clase de energía, se evalúa la fiabilidad de la tendencia.
La estrategia se utiliza para seguir las grandes tendencias a través del cruce de las medias dinámicas DEMA y TEMA, y es una estrategia de seguimiento de tendencias simple. Sus ventajas son la alta estabilidad, fiabilidad y universalidad, que se adaptan al uso de la estrategia básica; pero también tiene ciertos defectos como el retraso y la débil capacidad de identificación de reversión. Este artículo analiza y resume de manera exhaustiva las ventajas, los riesgos y la dirección de optimización posterior de la estrategia, lo que proporciona una referencia valiosa para su uso.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jacobdickson255
strategy("Crypto Bull Run Tracker", overlay=true, pyramiding=0)
//Dema Scripting
Demalength = input.int(230, minval=1)
src = close
e1 = ta.ema(src, Demalength)
e2 = ta.ema(e1, Demalength)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=#43A047)
//Tema Scripting
Temalength = input.int(210, minval=1)
ema1 = ta.ema(close, Temalength)
ema2 = ta.ema(ema1, Temalength)
ema3 = ta.ema(ema2, Temalength)
tema = 3 * (ema1 - ema2) + ema3
plot(tema, "TEMA", color=#2962FF)
delayBars = input(5, title="Bar Delay")
var int lastTradeBar = na
longCondition = ta.crossover(tema, dema)
longExit = ta.crossunder(tema, dema)
shortCondition = ta.crossunder(tema, dema)
shortExit = ta.crossover(tema, dema)
// Exit conditions should be checked before entry conditions
// Close short position if a long condition is present
if ((shortExit and strategy.position_size < 0)) // If conditions for exiting the short are met, and there is a balance in the short direction, exit the short
strategy.close("Short")
// Close long position if a short condition is present
if ((longExit and strategy.position_size > 0))
strategy.close("Long")
// Now check for entry conditions
if (longCondition)
strategy.entry("Long", strategy.long)
lastTradeBar := bar_index
if (shortCondition)
strategy.entry("Short", strategy.short)
lastTradeBar := bar_index