
Cette stratégie est un système de trading automatique basé sur la croisée des moyennes mobiles simples (SMA), combiné à un mécanisme d’arrêt et de perte dynamique. Il utilise deux SMA de différentes périodes pour générer des signaux d’achat et de vente par leur croisement. La stratégie définit également des niveaux d’arrêt et de perte basés sur des pourcentages pour contrôler les risques et bloquer les bénéfices.
Cette stratégie de trading basée sur la bi-homogénéité offre un cadre simple et efficace pour les débutants dans l’automatisation des transactions. Elle combine des éléments de suivi des tendances et de gestion des risques pour protéger les fonds en définissant dynamiquement des stop-loss. Cependant, des optimisations et des améliorations supplémentaires sont nécessaires pour obtenir de meilleurs résultats dans les transactions réelles.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pubgentleman
//@version=5
//@version=5
strategy("TSLA 1-Hour SMA Crossover Strategy with Buy/Sell Signals", overlay=true)
// Parameters
shortSmaLength = input.int(50, title="Short SMA Length")
longSmaLength = input.int(100, title="Long SMA Length")
takeProfitPerc = input.float(5.0, title="Take Profit Percentage", step=0.1) // 5.0% take profit
stopLossPerc = input.float(3.0, title="Stop Loss Percentage", step=0.1) // 3.0% stop loss
// Calculate SMAs
shortSma = ta.sma(close, shortSmaLength)
longSma = ta.sma(close, longSmaLength)
// Plot SMAs
plot(shortSma, color=color.blue, title="Short SMA")
plot(longSma, color=color.red, title="Long SMA")
// Entry Conditions
longCondition = ta.crossover(shortSma, longSma)
shortCondition = ta.crossunder(shortSma, longSma)
// Trade Management
var float entryPrice = na
var float takeProfitLevel = na
var float stopLossLevel = na
if (longCondition)
entryPrice := close
takeProfitLevel := entryPrice * (1 + takeProfitPerc / 100)
stopLossLevel := entryPrice * (1 - stopLossPerc / 100)
strategy.entry("Long", strategy.long)
label.new(x=bar_index, y=low, text="Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
if (shortCondition)
entryPrice := close
takeProfitLevel := entryPrice * (1 - takeProfitPerc / 100)
stopLossLevel := entryPrice * (1 + stopLossPerc / 100)
strategy.entry("Short", strategy.short)
label.new(x=bar_index, y=high, text="Sell", style=label.style_label_down, color=color.red, textcolor=color.white)
// Exit Conditions
if (strategy.position_size > 0)
if (close >= takeProfitLevel or close <= stopLossLevel)
strategy.close("Long")
if (strategy.position_size < 0)
if (close <= takeProfitLevel or close >= stopLossLevel)
strategy.close("Short")
// Plot Take Profit and Stop Loss Levels
plot(strategy.position_size > 0 ? takeProfitLevel : na, title="Take Profit Level", color=color.green, style=plot.style_stepline)
plot(strategy.position_size > 0 ? stopLossLevel : na, title="Stop Loss Level", color=color.red, style=plot.style_stepline)
plot(strategy.position_size < 0 ? takeProfitLevel : na, title="Take Profit Level (Short)", color=color.green, style=plot.style_stepline)
plot(strategy.position_size < 0 ? stopLossLevel : na, title="Stop Loss Level (Short)", color=color.red, style=plot.style_stepline)