Cette stratégie est basée sur les signaux croisés de deux moyennes mobiles exponentielles (EMA) pour le trading. Lorsque l'EMA à court terme dépasse l'EMA à long terme, elle ouvre une position longue; lorsque l'EMA à court terme dépasse l'EMA à long terme, elle ferme la position. La stratégie introduit également un mécanisme de stop-loss et un filtre de temps de trading pour contrôler les risques et optimiser les performances de la stratégie.
Cette stratégie utilise deux EMA avec des périodes différentes comme base pour le jugement de la tendance. Par rapport aux moyennes mobiles simples (SMA), les EMA peuvent réagir aux changements de prix plus rapidement et ont une répartition de poids plus raisonnable. Lorsque l'EMA à court terme dépasse l'EMA à long terme, cela indique que le prix peut former une tendance à la hausse et une position longue est ouverte; inversement, lorsque l'EMA à court terme dépasse l'EMA à long terme, cela indique que la tendance à la hausse peut se terminer et la position est fermée.
En plus des signaux croisés de la moyenne mobile, la stratégie introduit également un mécanisme de stop-loss. D'une part, un stop-loss en pourcentage fixe est défini, c'est-à-dire que lorsque le prix chute de plus d'un pourcentage spécifique par rapport au prix d'ouverture, la position est fermée de force pour contrôler les pertes; d'autre part, il est également possible de choisir de fermer la position lorsque le prix de clôture est inférieur au prix de clôture du chandelier précédent. Ces deux méthodes de stop-loss peuvent contrôler efficacement le retrait de la stratégie.
En outre, la stratégie introduit également un filtre d'heure de négociation. Les utilisateurs peuvent définir eux-mêmes les heures de début et de fin des transactions autorisées, évitant ainsi de négocier pendant des périodes de temps spécifiques (tels que les jours fériés, les heures de non-échange, etc.).
Simple et facile à utiliser: la logique de la stratégie est claire et n'utilise que deux EMA comme signaux de négociation, ce qui est facile à comprendre et à mettre en œuvre.
Suivi des tendances: les EMA peuvent réagir rapidement aux variations de prix, ce qui permet à la stratégie de capturer la formation et la fin des tendances en temps opportun, obtenant ainsi des bénéfices de suivi des tendances.
Contrôle des risques: l'introduction d'un pourcentage fixe de stop-loss et d'un stop-loss basé sur le prix de clôture du chandelier précédent permet de contrôler efficacement les pertes et les retraits d'une seule transaction.
Paramètres flexibles: les utilisateurs peuvent ajuster des paramètres tels que la période EMA, le pourcentage de stop-loss, l'utilisation du prix de clôture du chandelier précédent pour le stop-loss, la période de négociation, etc., en fonction de leurs propres besoins, optimisant ainsi la performance de la stratégie.
Risque d'optimisation des paramètres: la performance de la stratégie dépend de la sélection de paramètres tels que la période EMA et le pourcentage de stop-loss, et des paramètres inappropriés peuvent entraîner une mauvaise performance de la stratégie.
Risque de marché: la stratégie est principalement applicable aux marchés en tendance. Dans un marché volatil ou un renversement de tendance, les transactions fréquentes peuvent entraîner de gros retrait. Il est donc nécessaire d'ajuster les paramètres de la stratégie ou d'arrêter d'utiliser la stratégie en fonction des conditions du marché.
Risque de coût: la stratégie peut générer un grand nombre de transactions, augmentant ainsi les coûts de transaction.
Introduction de plus d'indicateurs techniques: sur la base des signaux croisés de l'EMA, introduire d'autres indicateurs techniques tels que le RSI et le MACD pour former des signaux de négociation multifactoriels et améliorer l'exactitude du jugement de tendance.
Stop-loss dynamique: ajustez dynamiquement la position stop-loss en fonction d'indicateurs tels que la volatilité du marché et l'ATR, tout en contrôlant les risques et en minimisant autant que possible la perte de bénéfices causée par le stop-loss.
Gestion de position: ajuster dynamiquement la taille de la position en fonction de la force de la tendance du marché, du degré d'écart des prix par rapport à la moyenne mobile, etc., augmenter la position lorsque la tendance est forte et diminuer la position lorsque la tendance s'affaiblit ou n'est pas claire.
Optimisation de l'apprentissage automatique: utiliser des algorithmes d'apprentissage automatique pour optimiser les paramètres de stratégie et sélectionner automatiquement la combinaison optimale de paramètres, améliorer les rendements de la stratégie et réduire les risques de suradaptation.
Cette stratégie quantitative croisée EMA utilise les signaux croisés de deux EMA pour juger de la tendance, tout en introduisant un mécanisme de stop-loss et un filtre de temps de négociation, atteignant un bon équilibre entre la capacité de suivi de la tendance et le contrôle des risques. Bien que la logique de la stratégie soit simple, elle peut obtenir des rendements stables sur les marchés en tendance grâce à une optimisation raisonnable des paramètres et un contrôle des risques.
/*backtest start: 2023-03-02 00:00:00 end: 2024-03-07 00:00:00 period: 1d basePeriod: 1h 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/ // © ZenAndTheArtOfTrading / www.PineScriptMastery.com // @version=5 strategy("EMA strategy", overlay=true, initial_capital=50000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, // 100% of balance invested on each trade commission_type=strategy.commission.cash_per_contract, commission_value=0.005) // Interactive Brokers rate // Get user input i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA") i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA") i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline") i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2") i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Get indicator values ma1 = ta.ema(close, i_ma1) ma2 = ta.ema(close, i_ma2) // Check filter(s) f_dateFilter = true // Check buy/sell conditions var float buyPrice = 0 buyCondition = close > ma1 and strategy.position_size == 0 and f_dateFilter sellCondition = close < ma2 and strategy.position_size > 0 //and (not i_lowerClose or close < low[1]) stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) if buyCondition[1] buyPrice := open // Exit positions if sellCondition or stopCondition strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : "")) buyPrice := na // Draw pretty colors plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1) plot(ma1, color=color.blue) plot(ma2, color=color.orange)