
Cette stratégie est un système de trading de suivi de tendance basé sur la moyenne mobile exponentielle triple (TEMA). La stratégie capture les tendances du marché en comparant les signaux de croisement des TEMA à court et à long terme et gère les risques en combinant les stops de volatilité. La stratégie fonctionne sur une période de 5 minutes et utilise les indicateurs TEMA de 300 et 500 périodes comme base pour la génération de signaux.
La logique fondamentale de la stratégie repose sur les éléments clés suivants :
Cette stratégie est un système complet de suivi des tendances qui capture les tendances grâce au croisement de l’indicateur TEMA et gère les risques avec des stop loss dynamiques. La stratégie a une logique claire, une mise en œuvre simple et une bonne praticabilité. Cependant, dans le cadre d’un trading réel, il est nécessaire de prêter attention à l’identification de l’environnement de marché et au contrôle des risques. Il est recommandé d’optimiser les paramètres en fonction des conditions réelles du marché sur la base d’une vérification par backtesting.
/*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)