La doble estrategia de negociación de cruce de TEMA es una estrategia común de seguimiento de tendencias que utiliza dos líneas de TEMA (Triple Exponential Moving Average) con diferentes parámetros. Genera señales largas cuando el TEMA más rápido cruza por encima del TEMA más lento, y cierra posiciones cuando el TEMA más rápido cruza por debajo del TEMA más lento. Esta estrategia puede rastrear efectivamente las tendencias de precios y obtener ganancias cuando la tendencia es clara.
La estrategia utiliza el TEMA (Triple Exponential Moving Average) como el principal indicador técnico.
TEMA = (3EMA1) - (3EMA2) + EMA3
Donde EMA1, EMA2 y EMA3 son EMA del período N. Al calcular las EMA tres veces, TEMA puede responder más rápidamente a los cambios de precios.
La estrategia utiliza una TEMA de período más corto como línea rápida, y una TEMA de período más largo como línea lenta. Cuando la línea rápida cruza por encima de la línea lenta, lo que indica un movimiento al alza del precio, genera señales largas. Cuando la línea rápida cruza por debajo de la línea lenta, lo que indica un movimiento al alza del precio, cierra posiciones.
Las claves de esta estrategia se encuentran en el ajuste de parámetros y la lógica de la condición. La línea rápida con un período más corto como 20 días puede capturar rápidamente la dinámica del precio, mientras que la línea lenta con un período más largo como 60 días puede filtrar falsas rupturas. Cuando surge una tendencia alcista o bajista significativa, la línea rápida puede cruzar rápidamente por encima o por debajo de la línea lenta para producir señales comerciales.
Las ventajas de esta estrategia incluyen:
TEMA puede responder más rápidamente a los cambios de precios y captar las inversiones de tendencia.
La doble estructura TEMA ayuda a filtrar las falsas rupturas y entrar en operaciones de tendencia de alta probabilidad.
Parámetros flexibles y ajustables para adaptarse a las diferentes condiciones del mercado.
Lógica simple y clara, fácil de entender e implementar, alta utilización del capital.
Se pueden obtener buenas ganancias en mercados de tendencia, especialmente los de tendencia fuerte.
Los riesgos de esta estrategia incluyen:
Inclinado a las pérdidas comerciales frecuentes en los mercados de rango.
Puede generar señales falsas excesivas si los parámetros no se ajustan correctamente.
Incapaz de responder eficazmente a eventos repentinos y movimientos de precios a corto plazo.
Las señales tardías pueden perder oportunidades a corto plazo.
Altos riesgos de abrir posiciones frente a fuertes oscilaciones.
Requiere experiencia en optimización de parámetros para adaptarse a los mercados cambiantes.
Medidas de gestión de riesgos:
Optimice los parámetros para evitar la sensibilidad excesiva.
Añadir otros indicadores para filtrar las señales de entrada.
Utilice las pérdidas de parada para limitar las pérdidas de una sola operación.
Reducir el tamaño de las posiciones para controlar el riesgo.
Añadir reglas de optimización de parámetros y mecanismos de intervención manual.
La estrategia se puede optimizar en los siguientes aspectos:
Optimizar los parámetros de línea rápida y lenta para diferentes productos y condiciones del mercado.
Incorporar otros indicadores como MACD, Bandas de Bollinger para mejorar la validez de la señal.
Agregue estrategias de stop loss como trailing stop, time stop, ATR stop para controlar las pérdidas.
Evite abrir posiciones cuando el VIX es alto.
Agregue indicadores de volumen, sólo considere entrar en la expansión obvia de volumen.
Optimizar la gestión del dinero como el tamaño de la posición fraccionaria fija, control de extracción.
Utilice el aprendizaje automático para optimizar los parámetros automáticamente.
La doble estrategia de cruce TEMA es una estrategia general de seguimiento de tendencias utilizando indicadores técnicos de tendencias. Ayuda a capturar las tendencias de precios y comerciar a lo largo de las tendencias. Pero los riesgos deben administrarse adecuadamente para evitar pérdidas por uso inadecuado.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-11 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/ // © nickrober //@version=4 strategy(title="TEMA Cross Backtest", shorttitle="TEMA_X_BT", overlay=true, commission_type=strategy.commission.percent, commission_value=0, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Backtest inputs FromMonth = input(defval=1, title="From Month", minval=1, maxval=12) FromDay = input(defval=1, title="From Day", minval=1, maxval=31) FromYear = input(defval=2020, title="From Year", minval=2010) ToMonth = input(defval=1, title="To Month", minval=1, maxval=12) ToDay = input(defval=1, title="To Day", minval=1, maxval=31) ToYear = input(defval=9999, title="To Year", minval=2017) // Define backtest timewindow start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true //TEMA Section xLength = input(20, minval=1, title="Fast Length") xPrice = close xEMA1 = ema(xPrice, xLength) xEMA2 = ema(xEMA1, xLength) xEMA3 = ema(xEMA2, xLength) xnRes = (3 * xEMA1) - (3 * xEMA2) + xEMA3 xnResP = plot(xnRes, color=color.green, linewidth=2, title="TEMA1") yLength = input(60, minval=1, title="Slow Length") yPrice = close yEMA1 = ema(yPrice, yLength) yEMA2 = ema(yEMA1, yLength) yEMA3 = ema(yEMA2, yLength) ynRes = (3 * yEMA1) - (3 * yEMA2) + yEMA3 ynResP = plot(ynRes, color=color.red, linewidth=2, title="TEMA2") fill(xnResP, ynResP, color=xnRes > ynRes ? color.green : color.red, transp=75, editable=true) // Buy and Sell Triggers LongEntryAlert = xnRes > ynRes LongCloseAlert = xnRes < ynRes ShortEntryAlert = xnRes < ynRes ShortCloseAlert = xnRes > ynRes // Entry & Exit signals strategy.entry("Long", strategy.long, when = xnRes > ynRes and window()) strategy.close("Long", when = xnRes < ynRes) //strategy.entry("Short", strategy.short, when = xnRes < ynRes and window()) //strategy.close("Short", when = xnRes > ynRes)