Cette stratégie sélectionne dynamiquement différents types de moyennes mobiles sur plusieurs délais pour générer des signaux de trading.
La stratégie permet de sélectionner parmi les moyennes mobiles SMA, EMA, TEMA, WMA et HMA, avec des durées de période personnalisables.
Plus précisément, la stratégie définit d'abord la période de backtest sur la base des paramètres d'entrée.
La moyenne mobile correspondante est tracée en fonction de la sélection.
En combinant différents types de moyennes mobiles, la stratégie peut affiner les données de prix et filtrer le bruit du marché pour générer des signaux de trading plus fiables.
Les risques peuvent être réduits par:
La stratégie peut être améliorée sous plusieurs aspects:
Ajouter d' autres filtres pour des signaux plus stables
Par exemple, des indicateurs de volume pour éviter les fausses écarts sans confirmation de volume.
Optimiser la logique d'entrée et de sortie
Définir des canaux de prix et arrêter les pertes pour réduire les pertes inutiles.
Périodes de moyenne mobile dynamique
Utiliser des périodes plus longues en cas de forte tendance et des périodes plus courtes en cas de consolidation.
Améliorer la gestion de l'argent
Ajuster la taille des positions en fonction des retraits et de la prise de bénéfices.
La stratégie combine diverses moyennes mobiles à travers les délais pour générer des effets de suivi de tendance relativement stables.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000) qty = input(100000000, "Buy quantity") testStartYear = input(2017, "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=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"]) len1 = input(7, minval=1, title="Period") s=sma(close,len1) e=ema(close,len1) xEMA1 = ema(close, len1) xEMA2 = ema(xEMA1, len1) xEMA3 = ema(xEMA2, len1) t = 3 * xEMA1 - 3 * xEMA2 + xEMA3 f_hma(_src, _length)=> _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length))) h = f_hma(close, len1) w = wma(close, len1) ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na buy= close>ma sell= close<ma alertcondition(buy, title='buy', message='buy') alertcondition(sell, title='sell', message='sell') ordersize=floor(strategy.equity/close) if testPeriod() strategy.entry("long",strategy.long,ordersize,when=buy) strategy.close("long", when = sell )