
La stratégie est basée sur un système de trading basé sur la croisée de deux équivalents, qui traite en surveillant les croisements des moyennes mobiles de l’indice de 9 cycles et 21 cycles (EMA). La stratégie fonctionne dans un délai de 10 minutes, en utilisant un mode de transaction unique, c’est-à-dire qu’il n’y a pas de réouverture de position lors de la tenue d’une position. Le système utilise un capital initial de 100 000 et chaque transaction est effectuée avec 10% des intérêts du compte.
Le principe central de la stratégie est d’utiliser la sensibilité des EMA à court terme aux variations des prix du marché, plus élevée que celle des EMA à long terme. Lorsque les EMA à court terme (cycle 9) montent à travers les EMA à long terme (cycle 21), ce qui indique une augmentation de la dynamique à court terme, le système émet plusieurs signaux. Lorsque les EMA à court terme descendent à travers les EMA à long terme, ce qui indique une augmentation de la dynamique à court terme, le système émet un signal de placement.
Il s’agit d’une stratégie de croisement homogène conçue de manière rationnelle et logique. Le croisement des EMA capte les tendances du marché, en combinaison avec le modèle de négociation unique et la gestion des positions en pourcentage, ce qui permet d’équilibrer les risques et les gains. Malgré certaines limitations inhérentes, la stabilité et l’adaptabilité de la stratégie peuvent être encore améliorées par l’optimisation de la direction recommandée.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("EMA Crossover Labels (One Trade at a Time)", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ==== User Inputs ====
// Set the testing timeframe (ensure the chart is on a 10-min timeframe)
testTimeFrame = input.timeframe("10", "Strategy Timeframe")
// EMA period inputs
emaPeriod9 = input.int(9, "EMA 9 Period", minval=1)
emaPeriod21 = input.int(21, "EMA 2q Period", minval=1)
// ==== Retrieve Price Data ====
// For simplicity, we use the chart's timeframe (should be 10-min)
price = close
// ==== Calculate EMAs ====
ema9 = ta.ema(price, emaPeriod9)
ema21 = ta.ema(price, emaPeriod21)
// ==== Define Crossover Conditions ====
// Buy signal: when EMA9 crosses above EMA21 AND no current position is open
buySignal = ta.crossover(ema9, ema21) and strategy.position_size == 0
// Sell signal: when EMA9 crosses below EMA21 AND a long position is active
sellSignal = ta.crossunder(ema9, ema21) and strategy.position_size > 0
// ==== Strategy Orders ====
// Enter a long position when a valid buy signal occurs
if buySignal
strategy.entry("Long", strategy.long)
alert("Long Signal: " + syminfo.tickerid + " - EMA9 crossed above EMA21", alert.freq_once_per_bar_close)
// Exit the long position when a valid sell signal occurs
if sellSignal
strategy.close("Long")
alert("Sell Long Signal: " + syminfo.tickerid + " - EMA9 crossed below EMA21", alert.freq_once_per_bar_close)
// ==== Plot Buy/Sell Labels ====
// Only plot a "Buy" label if there's no open position
plotshape(buySignal, title="Buy Label", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", textcolor=color.white)
// Only plot a "Sell" label if a position is active
plotshape(sellSignal, title="Sell Label", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", textcolor=color.white)
// ==== Plot EMAs for Visualization ====
plot(ema9, color=color.blue, title="EMA 21")
plot(ema21, color=color.orange, title="EMA 21")