
La stratégie est basée sur l’indicateur du canal de Donchian, qui permet de suivre les tendances du marché et de négocier sur une tendance. Lorsque le prix franchit le canal de Donchian, le suivi de la tendance est effectué; Lorsque le prix revient dans le canal, le stop loss est effectué.
Calculer le prix le plus élevé et le prix le plus bas d’une période donnée, formant ainsi le canal de Dongguan. La ligne médiane du canal est la moyenne des prix les plus élevés et les plus bas de la période.
Lorsque le prix dépasse le canal en haut, il est possible d’ouvrir un poste à plusieurs têtes; lorsque le prix dépasse le canal en bas, il est possible d’ouvrir un poste à vide.
Une fois la position ouverte, la ligne stop suit la ligne médiane du canal; la ligne stop suit le prix d’un certain pourcentage du canal de rupture.
Lorsque le prix revient dans le corridor, un stop loss est effectué.
Cette stratégie utilise le canal de Dongxian pour déterminer la direction des tendances et capturer rapidement les percées du marché.
La mise en place d’une ligne de suivi des pertes dans le canal permet de protéger les bénéfices.
Augmenter la marge de profit de manière appropriée en fonction de l’amplitude d’arrêt définie par l’utilisateur.
Il est capable de s’adapter à différentes situations, telles que le rattrapage, la rupture, le rebond, etc., et d’ajuster ses positions avec souplesse.
La logique de la stratégie de trading est simple et claire, facile à comprendre et à maîtriser.
La stratégie est basée uniquement sur des transactions de rupture de canal et ne peut pas répondre efficacement à la consolidation des marchés.
Il existe un risque de fausse détection, qui doit être vérifié en combinaison avec d’autres indicateurs.
La mise en place d’un mauvais arrêt de la perte peut entraîner une perte prématurée ou un manque à gagner.
Le mauvais réglage du cycle de la chaîne affecte l’exactitude du signal de transaction.
Les positions trop importantes peuvent amplifier l’impact des fluctuations du marché sur le compte.
Le risque d’interruption accidentelle des transactions de robots nécessite une stabilité et une fiabilité du système.
En combinant les indicateurs de volume des transactions, il est préférable d’éviter de suivre les fausses percées.
L’amélioration de la précision des signaux d’ouverture de position.
Optimisation des algorithmes de stop-loss et d’ajustement dynamique
Adapter les stratégies de gestion de position en temps réel en fonction de l’environnement du marché.
Il est important de vérifier les données avant et après le match, afin de trouver le meilleur moment pour entrer.
Tester différents paramètres périodiques pour trouver la meilleure combinaison de paramètres.
Ajout de modules de vérification de modèle pour éviter les surmesures.
Cette stratégie est une stratégie de tendance auto-adaptative qui est plus simple et pratique dans l’ensemble. Elle a des caractéristiques telles que la capture rapide de la rupture de tendance et la protection des bénéfices. Il existe également des inconvénients tels que l’inefficacité de l’ajustement des conditions de marché et la perte de la fausse rupture. L’orientation future de l’optimisation consiste à combiner plus de signaux de filtrage d’indicateurs et à ajuster dynamiquement la stratégie de stop-loss, afin de s’adapter à davantage de conditions de marché.
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy(title = "Noro's Donchian Strategy", shorttitle = "Donchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
tp = input(defval = 10, minval = 1, title = "Take profit")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
showof = input(true, defval = true, title = "Show Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Price Channel
h = highest(high, pclen)
l = lowest(low, pclen)
center = (h + l) / 2
tpl = h * (100 + tp) / 100
tps = l * (100 - tp) / 100
//Lines
tpcol = showll ? color.lime : na
pccol = showll ? color.blue : na
slcol = showll ? color.red : na
offset = showof ? 1 : 0
plot(tpl, offset = offset, color = tpcol, title = "TP Long")
plot(h, offset = offset, color = pccol, title = "Channel High")
plot(center, offset = offset, color = slcol, title = "Cannel Center")
plot(l, offset = offset, color = pccol, title = "Channel Low")
plot(tps, offset = offset, color = tpcol, title = "TP Short")
//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)
//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
mo = 0
mo := strategy.position_size != 0 ? 0 : high >= center and low <= center ? 1 : mo[1]
if h > 0
strategy.entry("Long", strategy.long, lot, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo)
strategy.exit("TP Long", "Long", limit = tpl, stop = center)
strategy.entry("Short", strategy.short, lot, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo)
strategy.exit("TP Short", "Short", limit = tps, stop = center)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")