
Esta estrategia es un sistema de trading de seguimiento de tendencias basado en la media móvil exponencial triple (TEMA). La estrategia captura las tendencias del mercado comparando las señales de cruce de TEMA de corto y largo plazo y gestiona los riesgos combinando stops de volatilidad. La estrategia se ejecuta en un marco temporal de 5 minutos y utiliza los indicadores TEMA de 300 y 500 períodos como base para la generación de señales.
La lógica central de la estrategia se basa en los siguientes elementos clave:
Esta estrategia es un sistema completo de seguimiento de tendencias que captura tendencias a través del cruce del indicador TEMA y gestiona los riesgos con stop loss dinámicos. La estrategia tiene una lógica clara, una implementación sencilla y una buena practicidad. Sin embargo, en el trading real, es necesario prestar atención a la identificación del entorno del mercado y al control de riesgos. Se recomienda optimizar los parámetros de acuerdo con las condiciones reales del mercado basándose en la verificación mediante pruebas retrospectivas.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("TEMA Strategy for Gold", overlay=true)
// Inputs
tema_short_length = input.int(300, title="Short TEMA Length")
tema_long_length = input.int(500, title="Long TEMA Length")
pip_value = input.float(0.10, title="Pip Value (10 pips = 1 point for Gold)")
// Calculate TEMA
tema_short = ta.ema(2 * ta.ema(close, tema_short_length) - ta.ema(ta.ema(close, tema_short_length), tema_short_length), tema_short_length)
tema_long = ta.ema(2 * ta.ema(close, tema_long_length) - ta.ema(ta.ema(close, tema_long_length), tema_long_length), tema_long_length)
// Plot TEMA
plot(tema_short, color=color.blue, title="300 TEMA")
plot(tema_long, color=color.red, title="500 TEMA")
// Crossover conditions
long_condition = ta.crossover(tema_short, tema_long)
short_condition = ta.crossunder(tema_short, tema_long)
// Calculate recent swing high/low
swing_low = ta.lowest(low, 10)
swing_high = ta.highest(high, 10)
// Convert pips to price
pip_adjustment = pip_value * syminfo.mintick
// Long entry logic
if (long_condition and strategy.position_size == 0)
stop_loss_long = swing_low - pip_adjustment
strategy.entry("Long", strategy.long)
label.new(bar_index, swing_low, style=label.style_label_down, text="Buy", color=color.green)
// Short entry logic
if (short_condition and strategy.position_size == 0)
stop_loss_short = swing_high + pip_adjustment
strategy.entry("Short", strategy.short)
label.new(bar_index, swing_high, style=label.style_label_up, text="Sell", color=color.red)
// Exit logic
if (strategy.position_size > 0 and short_condition)
strategy.close("Long")
label.new(bar_index, high, style=label.style_label_up, text="Exit Long", color=color.red)
if (strategy.position_size < 0 and long_condition)
strategy.close("Short")
label.new(bar_index, low, style=label.style_label_down, text="Exit Short", color=color.green)