
Cette stratégie est connue sous le nom de stratégie de trading d’aileron basée sur le canal de Donchian. Cette stratégie s’inspire des idées principales du célèbre code de trading d’aileron, en utilisant le canal de Donchian pour juger de la tendance du marché et en utilisant un filtre combiné à une moyenne mobile pour réaliser une stratégie de suivi de tendance relativement simple.
Le principal indicateur de jugement de la stratégie est le canal Donchian. Le canal Donchian est constitué d’une plage de fluctuation de N jours entre le prix le plus élevé et le prix le plus bas. Si le prix franchit la trajectoire ascendante du canal, il s’agit d’un signal long.
En outre, la stratégie introduit deux moyennes mobiles (la 50e et la 125e) pour filtrer les signaux. Les transactions à plusieurs têtes ne sont effectuées que lorsque la moyenne mobile rapide traverse la moyenne mobile lente au-dessus de la moyenne mobile rapide; les transactions à vide sont effectuées lorsque la moyenne mobile rapide traverse la moyenne mobile lente au-dessous de la moyenne mobile rapide. Cela permet de filtrer efficacement les faux signaux.
Les conditions d’ouverture de la stratégie sont les suivantes: le prix passe en haut du canal Donchian et en bas du canal Donchian et en bas du canal Donchian. Les conditions d’ouverture de la position sont les suivantes: le prix passe en haut du canal Donchian et en bas du canal Donchian et en bas du canal Donchian et en bas du canal Donchian.
Cette stratégie présente les avantages suivants:
L’utilisation du canal Donchian pour déterminer la direction des tendances est plus efficace pour le repérage et la capture des grandes tendances.
Il a ajouté des filtres pour les moyennes mobiles, qui permettent de filtrer certains faux signaux et d’éviter les pertes.
La combinaison des canaux Donchian et des moyennes mobiles permet d’équilibrer la fréquence des transactions et la précision des arrêts de perte.
Le risque est maîtrisé et les pertes individuelles sont maîtrisées.
Cette stratégie comporte aussi des risques:
Dans une situation de choc, il peut y avoir des modules avec des pertes plus faibles.
Le filtrage des moyennes mobiles augmente le coût de construction des entrepôts lorsque la tendance est inversée.
Dans le cas d’une transaction en cuivre, il est possible que des dommages-intérêts soient poursuivis.
Les mesures à prendre et les solutions:
Les paramètres peuvent être adaptés pour raccourcir les cycles de Donchian et réduire les cycles de moyenne mobile pour s’adapter à différents marchés.
Il est important d’avoir une meilleure compréhension des tendances globales et d’éviter de se positionner contre elles.
Cette stratégie peut être optimisée dans les domaines suivants:
Augmenter le jugement sur la force de rupture. Par exemple, introduire des volumes de transactions et ouvrir des positions uniquement dans le cas d’une augmentation des volumes de transactions;
Augmenter le jugement sur les zones chaudes. Déterminer les points chauds des prix en combinant les niveaux de pression de soutien, les bandes et les schémas, et éviter de construire des magasins dans les zones chaudes.
Optimiser les stratégies de stop loss. Vous pouvez introduire des stops de suivi, des stops d’amplitude, des stops de temps, etc. pour rendre le stop loss plus intelligent.
Cette stratégie est généralement une stratégie de suivi de tendance très typique et simple. Elle permet de déterminer la direction à travers le canal Donchian, de filtrer les signaux de la moyenne mobile et d’obtenir de meilleurs résultats de retracement. La stratégie s’adresse aux investisseurs qui suivent les grandes tendances.
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// Coded by Vladkos
strategy("Donchian strategy with filter", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 4,pyramiding=5)
fromyear = input(2017, defval = 2018, minval = 1800, 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(21, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
ATR=input(20,minval=1)
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstoploss= input(true,defval=true,title="Stop LOSS")
///////////ATR
tra=atr(ATR)
////////////Переменные
Donchian_slow=input(20,minval=1)
Donchian_fast=input(10,minval=1)
Slow_EMA=input(125,minval=1)
Fast_EMA=input(50,minval=1)
/////////// Медленный Дончан
lower = lowest(Donchian_slow)
upper = highest(Donchian_slow)
basis = avg(upper, lower)
plot(lower,color=blue)
plot(upper,color=blue)
/////////// быстрый Дончан
lowerF = lowest(Donchian_fast)
upperF = highest(Donchian_fast)
basisF = avg(upperF, lowerF)
plot(lowerF,color=red)
plot(upperF,color=red)
////////// Скользящие средние
ema_S=ema(close,Slow_EMA)
ema_F=ema(close,Fast_EMA)
plot(ema_S,color=red)
plot(ema_F,color=green)
///////// Условия сделок
long_condition= close>=upper[1] and ema_F>ema_S
long_exit= close<lowerF[1]
short_condition=close<=lower[1] and ema_F<ema_S
short_exit=close>upperF[1]
////////// Отправка ордеров
strategy.entry("Long",strategy.long,when=long_condition and term and needlong==true)
strategy.exit("stop loss","Long",stop=strategy.position_avg_price-(tra*2),when= (needstoploss==true))
strategy.close("Long",when=long_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
strategy.entry("Short",strategy.short,when=short_condition and term and (needshort==true))
strategy.exit("stoploss","Short",stop=strategy.position_avg_price+(tra*2),when= (needstoploss==true))
strategy.close("Short",when=short_exit and (time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()