La stratégie Tang Anqi Turtle Trading est une version très simplifiée de la stratégie de trading Turtle originale. Elle est très différente de la stratégie Turtle originale. La stratégie utilise deux canaux Donchian, un canal rapide et un canal lent. Les périodes de canal sont définies par l'utilisateur, avec des valeurs par défaut de 20 barres pour le canal rapide et 50 barres pour le canal lent. La stratégie utilise les bandes supérieures et inférieures du canal lent pour les transactions d'entrée et la bande moyenne du canal rapide pour définir le stop loss.
La logique de base de cette stratégie est la suivante:
Calculez le canal de Donchian rapide: la bande supérieure est le plus haut haut sur les barres rapides passées, la bande inférieure est le plus bas bas, et la bande du milieu est la moyenne des bandes supérieures et inférieures.
Calculez le canal de Donchian lent: la bande supérieure est le plus haut haut sur les barres lentes passées, la bande inférieure est le plus bas bas.
Lorsqu'il n'y a pas de position, un signal long est déclenché lorsque le prix touche la bande supérieure du canal lent, et un signal court est déclenché lorsque le prix touche la bande inférieure du canal lent.
Après ouverture d'une position, la bande médiane du canal rapide est utilisée comme stop loss.
Fermer la position lorsqu'il y a un signal opposé au signal d'ouverture pendant la période de détention.
Les avantages de cette stratégie sont les suivants:
Les canaux de Donchian et le stop loss sont faciles à comprendre, adaptés aux débutants.
Paramètres personnalisables: les utilisateurs peuvent ajuster les paramètres en fonction des produits et des délais de négociation afin de s'adapter aux différents environnements du marché.
Peu de signaux commerciaux contradictoires. Il s'appuie uniquement sur les écarts de prix des bandes de canaux, évitant les faux signaux des indicateurs communs.
Gestion automatique des stop-loss. Le stop-loss mobile basé sur la bande moyenne du canal rapide peut limiter les pertes sur les transactions uniques.
Les risques auxquels cette stratégie est confrontée comprennent:
Plus de stop-loss lorsque la tendance n'est pas claire.
Lorsque la tendance s'inverse, les bénéfices flottants dans la direction de la tendance précédente se transformeront en pertes.
Les paramètres mal réglés conduisent à une agressivité ou à une conservatrice excessive.
La stabilité du serveur est importante pour éviter les exceptions conduisant à l'échec du trading automatisé.
Pour réduire les risques susmentionnés, les paramètres peuvent être optimisés, la taille des positions peut être limitée de manière appropriée et des modules de gestion des risques peuvent être ajoutés.
Les stratégies peuvent être améliorées dans les domaines suivants:
Ajoutez des filtres pour les signaux d'entrée afin d'éviter de capter les signaux d'inversion de tendance.
Optimiser les paramètres tels que les périodes de canal et la taille des positions pour mieux s'adapter aux différents instruments de négociation.
Ajouter des modules de gestion des risques tels que les limites maximales de tirage et les limites de perte quotidiennes pour éviter des pertes excessives dans les cas extrêmes.
Améliorer les stratégies de stop-loss. Par exemple, adopter un stop-loss de suivi pour rendre les stops plus adaptables aux tendances du marché.
En résumé, la stratégie de trading de la tortue Tang Anqi est un système simple de suivi des tendances. Ses avantages résident dans sa facilité de compréhension et d'automatisation. Mais elle comporte également certains risques, et d'autres optimisations sur les paramètres et la gestion des risques sont nécessaires pour la rendre plus pratique.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-15 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2020 //@version=4 strategy("Noro's SimpleTurtle Strategy", shorttitle = "SimpleTurtle 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") sizelong = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot long, %") sizeshort = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot short, %") fast = input(20, minval=1) slow = input(50, minval=1) showof = input(true, defval = true, title = "Show offset") showll = input(true, defval = true, title = "Show lines") showdd = input(false, defval = true, title = "Show label (drawdown)") showbg = input(true, defval = true, title = "Show background") 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") //Donchian price channel fast hf = highest(high, fast) lf = lowest(low, fast) center = (hf + lf) / 2 //Donchian price chennal slow hs = highest(high, slow) ls = lowest(low, slow) //Lines colorpc = showll ? color.blue : na colorsl = showll ? color.red : na offset = showof ? 1 : 0 plot(hs, offset = offset, color = colorpc) plot(ls, offset = offset, color = colorpc) plot(center, offset = offset, color = colorsl) //Background size = strategy.position_size colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na bgcolor(colorbg, transp = 70) //Orders truetime = true lotlong = 0.0 lotshort = 0.0 lotlong := size != size[1] ? strategy.equity / close * sizelong / 100 : lotlong[1] lotshort := size != size[1] ? strategy.equity / close * sizeshort / 100 : lotshort[1] //Orders strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and truetime) strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and truetime) strategy.exit("Long", stop = center, when = needlong and strategy.position_size > 0) strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0) if true strategy.close_all() strategy.cancel("fast L") strategy.cancel("fast S") strategy.cancel("slow L") strategy.cancel("slow S") if showdd //Drawdown max = 0.0 max := max(strategy.equity, nz(max[1])) dd = (strategy.equity / max - 1) * 100 min = 100.0 min := min(dd, nz(min[1])) //Label min := round(min * 100) / 100 labeltext = "Drawdown: " + tostring(min) + "%" var label la = na label.delete(la) tc = min > -100 ? color.white : color.red osx = timenow + round(change(time)*10) osy = highest(100) la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)