Les indicateurs de base de cette stratégie sont deux ensembles de EMA, y compris un cycle plus long EMA1 et un cycle plus court EMA2.
Lorsque l'EMA2 du cycle plus court franchit le niveau supérieur de l'EMA1 du cycle plus long, un signal d'achat est généré. Cela indique que la tendance à court terme des prix s'est renforcée et qu'une tendance à la hausse a commencé. Lorsque l'EMA2 du cycle plus court franchit le niveau inférieur de l'EMA1 du cycle plus long, un signal de vente est généré. Cela indique que la tendance à la hausse des prix à court terme a été interrompue et qu'une tendance à la baisse a commencé.
Pour filtrer les signaux erronés, la stratégie définit deux ensembles d'indicateurs de croix dorée et de croix morte. Les signaux ne sont déclenchés que lorsque les deux ensembles d'indicateurs émettent le même signal, ce qui peut réduire efficacement les erreurs causées par les fluctuations de prix.
La double structure de l'EMA peut capturer efficacement les changements des tendances à court et moyen terme pour déterminer les tendances.
L'utilisation de niveaux de 4 heures pour calculer les indicateurs peut faire face à des fluctuations de prix à haute fréquence.
La structure de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, et adaptée aux applications de négociation quantitative.
La double structure EMA est moins efficace pour juger des marchés de consolidation, car de longues périodes de consolidation peuvent générer de faux signaux.
Les indicateurs de niveau de 4 heures ne sont pas suffisamment sensibles pour répondre à des événements soudains.
La stratégie repose uniquement sur des indicateurs techniques sans combiner l'analyse fondamentale.
Ces risques peuvent être contrôlés par:
Ajouter plus d'indicateurs EMA de cycle temporel pour établir des combinaisons de modèles.
Utilisez l'analyse du sentiment du texte pour déterminer les événements soudains majeurs et ajuster dynamiquement les positions.
Associer les changements dans l'environnement économique, les politiques et les fondamentaux de l'entreprise pour ajuster dynamiquement les paramètres.
La stratégie peut être encore optimisée:
Ajouter des combinaisons de modèles: plus de combinaisons d'indicateurs avec différents paramètres peuvent être établies pour améliorer la stabilité de la stratégie.
Ajoutez des mécanismes de stop-loss. Des points de stop-loss raisonnables peuvent contrôler efficacement les pertes individuelles.
Optimisation dynamique des paramètres. Les paramètres EMA peuvent être optimisés automatiquement en fonction de différents environnements de marché.
Incorporer des techniques d'apprentissage automatique. Des modèles tels que Tensorflow peuvent être entraînés pour catégoriser les tendances des prix en temps réel.
La stratégie de suivi de tendance double EMA est une stratégie de trading de tendance simple et pratique. Elle utilise des indicateurs doubles EMA pour déterminer les tendances de prix à court et à moyen terme afin de saisir les opportunités de marché directionnelles. Dans le même temps, la combinaison de deux ensembles d'indicateurs de filtrage de croix dorée et de croix morte peut réduire les transactions erronées. La stratégie a une structure simple et est facile à mettre en œuvre, ce qui la rend adaptée aux applications de trading quantitatif. Grâce à une optimisation et à une amélioration continues, elle a le potentiel d'élargir davantage les avantages de la stratégie et d'améliorer la rentabilité stable.
/*backtest start: 2023-02-22 00:00:00 end: 2024-02-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 /// Component Code Startt testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(01, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(1, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=false) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop strategy(title="Ema cross strat", overlay=true) margin = input(true, title="Margin?") Margin = margin ? margin : false resCustom = input(title="EMA Timeframe", defval="240" ) source = close, len2 = input(21, minval=1, title="EMA1") len3 = input(10, minval=1, title="EMA2") ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off) ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off) mylong = crossover(ema3, ema2) myshort = crossunder(ema3,ema2) last_long = na last_short = na last_long := mylong ? time : nz(last_long[1]) last_short := myshort ? time : nz(last_short[1]) in_long = last_long > last_short ? 2 : 0 in_short = last_short > last_long ? 2 : 0 mylong2 = crossover(ema3, ema2) myshort2 = crossunder(ema3, ema2) last_long2 = na last_short2 = na last_long2 := mylong2 ? time : nz(last_long2[1]) last_short2 := myshort2 ? time : nz(last_short2[1]) in_long2 = last_long2 > last_short2 ? 0 : 0 in_short2 = last_short2 > last_long2 ? 0 : 0 condlongx = in_long + in_long2 condlong = crossover(condlongx, 1.9) condlongclose = crossunder(condlongx, 1.9) condshortx = in_short + in_short2 condshort = crossover(condshortx, 1.9) condshortclose = crossover(condshortx, 1.9) if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0 strategy.entry("Long", strategy.long, comment="Long") if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0 strategy.close("Long",when = not Margin) if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0 strategy.entry("Short", strategy.short, comment="Short", when = Margin)