La stratégie de croisement des moyennes mobiles doubles est une stratégie typique de suivi des tendances.
La stratégie est principalement basée sur deux moyennes mobiles. La première moyenne mobile a une période plus courte et peut répondre aux changements de prix plus rapidement. La deuxième moyenne mobile a une période plus longue et peut filtrer un peu de bruit. Lorsque la moyenne mobile à court terme traverse la moyenne mobile à long terme, elle est considérée comme un signal d'achat. Lorsque la moyenne mobile à court terme traverse en dessous de la moyenne mobile à long terme, elle est considérée comme un signal de vente.
Plus précisément, cette stratégie calcule une moyenne mobile exponentielle à 10 périodes (prix1) et une moyenne mobile exponentielle à 20 périodes (prix2). Si les prix d'ouverture et de clôture de la barre actuelle sont tous deux supérieurs aux deux moyennes mobiles, un signal d'achat est généré. Si les prix d'ouverture et de clôture sont tous deux inférieurs aux deux moyennes mobiles, un signal de vente est généré.
Cette conception permet d'entrer plus tôt quand une tendance commence à se former et de suivre la tendance.
La stratégie est relativement simple et pratique, capturant les tendances avec le double crossover MA, ce qui en fait une stratégie quantitative fondamentale. Mais elle comporte également certains risques et nécessite une optimisation supplémentaire pour différents régimes de marché. Il y a de la place pour améliorer les paramètres, les arrêts, les filtres, etc. pour la rendre plus robuste.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="MA River CC v1", overlay = true) strategy("MA River CC v1", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(10, title="1st MA Length") type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"]) ma2 = input(20, title="2nd MA Length") type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"]) price1 = if (type1 == "SMA") sma(price, ma1) else ema(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else ema(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) buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2) sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2) buy_close = sell_entry sell_close = buy_entry //longCondition = crossover(price1, price2) if(buy_entry) strategy.entry("Long", strategy.long) if(sell_entry) strategy.entry("Short", strategy.short) strategy.close("Long" , when=buy_close) strategy.close("Short",when=sell_close)