Cette stratégie utilise l'indicateur de canal dynamique pour déterminer la direction du marché en fonction des ruptures de canal, dans le but de capturer la direction de la tendance.
La stratégie utilise la fonction d'entrée pour définir la longueur de la période du canal à 20 jours. Elle calcule ensuite le plus haut des 20 derniers jours comme bande supérieure et le plus bas des 20 derniers jours comme bande inférieure.
La zone au-dessus de la bande supérieure est remplie de vert, et la zone en dessous de la bande inférieure est remplie de rouge, formant un canal dynamique.
La moyenne mobile de 200 jours (EMA) est également représentée comme référence pour déterminer la tendance globale.
La stratégie utilise l'EMA comme référence pour juger de la tendance majeure. Lorsque la clôture est au-dessus de la ligne de 200 jours, elle indique une tendance haussière. Lorsque la clôture est en dessous, elle indique une tendance à la baisse.
Dans une tendance à la hausse, si la clôture du prix franchit la bande supérieure, un signal long est généré.
Le long stop loss est défini à la bande inférieure ou à la ligne du milieu en fonction des règles long/short.
Le canal dynamique s'adapte à l'évolution des tendances du marché.
Les signaux de négociation sont générés sur la base des écarts, selon le principe de négociation de tendance.
La tendance principale est déterminée par la moyenne mobile, combinée à des écarts de canal.
Placement de stop loss flexible basé sur les conditions du marché.
Un mauvais jugement de la tendance majeure peut dévier du marché.
Un mauvais réglage des périodes de diffusion accroît les transactions incorrectes.
L'arrêt de la perte trop proche du canal peut augmenter l'arrêt.
Les signaux de rupture ont un certain retard, peut-être manquant le meilleur point d'entrée.
Les solutions:
Utilisez plusieurs indicateurs pour juger de la tendance principale, réduisant ainsi les erreurs.
Optimiser les paramètres de la période du canal pour les différents rythmes du marché.
Ajustez la position stop-loss pour avoir suffisamment de tampon.
Ajoutez des filtres aux signaux d'entrée d'écran.
Ajouter plus d'indicateurs pour juger de la tendance principale, améliorer la précision.
Incorporer des indicateurs de volume pour éviter les fausses ruptures.
Optimiser les paramètres de la période du canal pour différents produits.
Mettre en œuvre un stop-loss dynamique.
Ajouter des filtres pour améliorer la qualité du signal et éviter les transactions inutiles.
Cette stratégie suit le principe du trading de tendance dans son ensemble, en utilisant des canaux dynamiques pour déterminer la fourchette de volatilité et générer des signaux à partir des ruptures. Elle peut effectivement suivre les changements de tendance et est une stratégie de suivi de tendance fiable. Mais les principaux mécanismes de jugement de tendance et de stop loss nécessitent une optimisation supplémentaire et des conditions de filtrage doivent être ajoutées pour améliorer la robustesse.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h 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/ // © pratyush_trades //@version=4 strategy("Donchian Indexes", overlay=true) length = input(20) longRule = input("Higher High", "Long Entry", options=["Higher High", "Basis"]) shortRule = input("Lower Low", "Short Entry", options=["Lower Low", "Basis"]) longSL=input("Lower Low", "LONG SL", options=["Lower Low", "Basis"]) shortSL=input("Higher High", "SHORT SL", options=["Higher High", "Basis"]) hh = highest(high, length) ll = lowest(low, length) up = plot(hh, 'Upper Band', color = color.green) dw = plot(ll, 'Lower Band', color = color.red) mid = (hh + ll) / 2 midPlot = plot(mid, 'Basis', color = color.orange) fill(up, midPlot, color=color.green, transp = 95) fill(dw, midPlot, color=color.red, transp = 95) plot(ema(close,200), "ema", color=color.orange) if (close>ema(close,200)) if (not na(close[length])) strategy.entry("Long", strategy.long, stop=longRule=='Basis' ? mid : hh) if (close<ema(close,200)) if (not na(close[length])) strategy.entry("Short", strategy.short, stop=shortRule=='Basis' ? mid : ll) if (strategy.position_size>0) strategy.exit(id="Longs Exit",stop=longSL=='Basis' ? mid : ll) if (strategy.position_size<0) strategy.exit(id="Shorts Exit",stop=shortSL=='Basis' ? mid : hh)