
Cette stratégie est un système de suivi des tendances basé sur la croisée de deux lignes de symétrie. Elle capture les moments de transition des tendances du marché en comparant les moyennes mobiles à court terme et à long terme (respectivement 9 et 21 jours) par rapport à la position relative. La stratégie utilise la théorie classique de l’analyse technique, combinée à des méthodes modernes de négociation quantitative, pour réaliser un processus de décision de négociation entièrement automatisé.
La logique centrale de la stratégie est basée sur des signaux croisés de deux moyennes mobiles de différentes périodes. Lorsque la moyenne courte (le 9e jour) monte et traverse la moyenne longue (le 21e jour), le système considère que la dynamique du marché est montée et déclenche un signal multiple.
Il s’agit d’une stratégie classique et pratique de suivi des tendances qui capte les changements de dynamique du marché par le croisement de deux lignes de symétrie. Bien qu’il existe un certain risque de retard et de faux signaux, sa simplicité et sa stabilité en font un outil important dans le domaine du trading quantitatif. La stabilité et la rentabilité de la stratégie devraient être encore améliorées grâce à la direction d’optimisation proposée.
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)
// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)
// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Execute trades
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0
if (strategy.opentrades > 0)
totalTrades := totalTrades + 1
if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
if (strategy.netprofit > 0)
totalWins := totalWins + 1
else
totalLosses := totalLosses + 1
// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
label.delete(tradeStats)
tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)