Cette stratégie génère des signaux de trading en calculant différents types de moyennes mobiles ( moyennes mobiles simples SMA, moyennes mobiles exponentielles EMA, moyennes mobiles Hull HMA et moyennes mobiles pondérées VWMA) et en détectant des points de croisement entre eux, pour déterminer la tendance du marché et la suivre.
L'idée de base de cette stratégie est de juger de la tendance du marché en comparant deux moyennes mobiles. Plus précisément, elle permet de configurer deux MA avec des types et des longueurs différents à travers des paramètres d'entrée. La première MA a une période plus longue pour représenter la tendance principale, tandis que la deuxième MA a une période plus courte pour la tendance à court terme actuelle.
Lorsque le MA à court terme traverse le MA à long terme depuis le bas, cela indique que la tendance à court terme se renforce et que le marché entre dans une tendance à la hausse. Ainsi, un signal d'achat est généré à ce point de croisement. Inversement, lorsque le MA à court terme traverse le MA à long terme, cela suggère que la tendance à court terme s'affaiblit et que le marché est en train de s'inverser. En conséquence, un signal de vente est généré.
En détectant de tels croisements d'AM, cette stratégie suit la tendance du marché vers les échanges.
Les solutions:
Cette stratégie s'appuie sur l'idée classique d'utiliser des croisements MA pour la détection de tendances majeures. Avec des combinaisons MA flexibles, elle est simple à mettre en œuvre et adaptée à l'automatisation algorithmique du trading.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="MA Crossover Strategy", overlay = true) strategy("MA Crossover Strategy", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(25, title="1st MA Length") type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) ma2 = input(7, title="2nd MA Length") type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) f_hma(_src, _length)=> _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length))) price1 = if (type1 == "SMA") sma(price, ma1) else if (type1 == "EMA") ema(price, ma1) else if (type1 == "VWMA") vwma(price, ma1) else f_hma(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else if (type2 == "EMA") ema(price, ma2) else if (type2 == "VWMA") vwma(price, ma2) else f_hma(price, ma2) //plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0) plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0) plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0) longCondition = crossover(price1, price2) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(price1, price2) if (shortCondition) strategy.entry("Short", strategy.short)