
Cette stratégie permet de générer des signaux de transaction de croisement d’EMA rapide et de croisement de l’EMA lente en calculant le croisement des signaux de transaction de croisement d’or et de croisement de la mort. Lorsqu’elle traverse l’EMA lente sur l’EMA rapide, elle génère un signal d’achat. Lorsqu’elle traverse l’EMA lente sous l’EMA rapide, elle génère un signal de vente.
La stratégie est basée sur deux paramètres différents: l’EMA rapide est fixée à 10 et l’EMA lente à 20. L’EMA à 10 jours est plus rapide pour répondre aux variations de prix, tandis que l’EMA à 20 jours est plus lente. Lorsque la courte courte traverse l’EMA à court terme, la moyenne à court terme commence à prendre la tête de la moyenne à long terme, ce qui indique que le marché peut devenir pessimiste, ce qui génère un signal d’achat.
Grâce au principe de croisement des lignes EMA rapides et lentes, la stratégie capture pleinement le moment de la transition de la tendance du marché et est capable de générer des signaux de négociation en temps opportun. En même temps, l’indicateur EMA lui-même a la capacité de filtrer les faux signaux et d’éviter de fréquenter les positions lors des fluctuations du marché. Cela permet à la stratégie de capturer les points de retournement du marché tout en réduisant les transactions erronées.
Les risques susmentionnés peuvent être optimisés par l’introduction d’indicateurs supplémentaires, tels que l’augmentation des conditions de filtrage des transactions, l’évitement des signaux erronés en combinaison avec les indicateurs MACD, l’utilisation d’une vitesse de réponse accélérée de l’indicateur EMA adaptative, etc. En outre, des arrêts raisonnables et des arrêts actifs sont également nécessaires.
Les axes d’optimisation de cette stratégie sont les suivants:
Cette stratégie utilise le double principe de croisement des lignes rapides et lentes EMA pour capturer les points de retournement clés du marché et a un effet de marché plus fort. En combinaison avec les indicateurs auxiliaires et l’optimisation des arrêts de perte, la stabilité de la stratégie peut être encore améliorée.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)