La stratégie de rupture de la moyenne mobile double est une tendance typique suivant la stratégie de trading quantitative. Elle génère des signaux de trading en calculant des moyennes mobiles simples de différentes périodes et en vérifiant si le prix les traverse pour déterminer les positions.
La logique de base de la stratégie de double MA est de:utiliser des moyennes mobiles de différentes périodes pour capturer les tendances des prix et générer des signaux de négociation lorsque le prix dépasse les moyennes mobiles.
Plus précisément, cette stratégie utilise des moyennes mobiles simples de 20 jours et 60 jours. Ces deux moyennes mobiles peuvent être considérées comme des outils pour capturer les tendances à court terme et à moyen et long terme respectivement. Lorsque le prix à court terme dépasse le prix à moyen et long terme, cela indique que le marché est dans une tendance à la hausse et devrait donc aller long. Lorsque le prix à court terme tombe en dessous du prix à moyen et long terme, cela indique que le marché est dans une tendance à la baisse et que les positions doivent donc être réduites.
Le code utiliseta.crossover
etta.crossunder
Les signaux de négociation d'une position longue ou de réduction sont émis en conséquence lorsqu'une rupture survient.
La stratégie de rupture à deux moyennes mobiles présente les avantages suivants:
Il y a aussi des risques avec la stratégie:
La stratégie peut être améliorée à partir des dimensions suivantes:
La stratégie de rupture de la moyenne mobile double est une stratégie simple et pratique de suivi des tendances. Elle peut capturer efficacement les tendances à moyen et long terme tout en évitant le bruit du marché à court terme. De plus, la logique facile à comprendre et les paramètres limités la rendent très adaptée au trading quantitatif. Bien sûr, il y a des possibilités d'amélioration, telles que l'ajustement des paramètres, le filtrage des signaux et le stop loss pour la rendre plus stable et rentable.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Astorhsu //@version=5 strategy("Astor SMA20/60", overlay=true) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma10 = ta.sma(close,10) sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 // trend1 = sma60 > sma20 //假設目前趨勢為60>20 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) strategy.close("open long60",comment="跌破m60平倉", qty=1) // longCondition2 = ta.crossover(close, ta.sma(close, 10)) // if (longCondition2) // strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多") // shortCondition2 = ta.crossunder(close, ta.sma(close, 10)) // if (shortCondition2) // strategy.close("open long10",comment="跌破m10平倉", qty=1)