Trading automatique avec “Buy Sell Magical Trend”
Forums › ProRealTime forum Français › Support ProOrder › Trading automatique avec “Buy Sell Magical Trend”
- This topic has 71 replies, 17 voices, and was last updated 5 months ago by Dams3164.
-
-
01/29/2024 at 3:57 PM #227023
Non en fait, on voit bien une fermeture d’un ordre contrarient et l’ouverture du nouveau sur la même bougie, je suis allé trop vite. Je ne constate aucun problème avec ce code (voir image jointe). L’alternance achat / vente est bien visible 🙂
01/29/2024 at 9:18 PM #227045Merci pour la réponse,
Ce que je ne comprend pas c’est qu’il y a une alternance achat vente, tandis qu’à ces points normalement il ne devrait y avoir soit qu’un achat ou soit qu’une vente, étant donné que le cours ne traverse qu’une seule fois la courbe de tendance à chaque fois.
On dirait qu’il se passe deux ordres à chaque fois tandis que logiquement il ne devrait en passer qu’un seul : soit acheter (le cours dépasse la tendance) ou vendre (le cours repasse sous la tendance), les deux ne pouvant se produire simultanément, en particulier avec la formule de la “tendance magique” qui marque bien les passages d’un état achat à un état vente.
Avec toutes les autres formules que j’utilise il n’y a qu’un seul ordre à chaque fois, soit achat, soit vendre, les doubles ordres de ce type n’apparaissent que lorsque je dézoom trop et que deux ordres sont fusionnés par effet de tassement, tandis qu’ici sur le screen j’ai zoomé à fond afin de bien vérifier que les deux ordres ont bien eu lieu simultanément :
Donc sur le double ordre à 10h, au milieu du screen, sur lequel j’ai ouvert le détail, il ne devrait normalement y avoir seulement qu’un seul ordre d’achat puisque la tendance passe sous le cours et ne le recroise pas avant bien plus tard,
Est-ce que quelque chose m’échappe avec votre formule ?
01/30/2024 at 9:26 AM #227068On le voit bien sur ma copie d’écran, avec les histogrammes bleu et jaune, on passe d’un ordre à un autre. On ne peut pas acheter et vendre à découvert en même temps, un autre contraire fermera automatiquement celui qui est présent au marché.
01/30/2024 at 6:48 PM #227111Merci Nicolas pour ta réponse,
Effectivement j’ai finis par comprendre que cela était du à l’utilisation de SHORT et au fait de ne pas fixer des limites avec des “IF ONMARKET/IF NOT ON MARKET” “SELL N SHARE/BUY N SHARE”
Je me rend compte que la performance de la formule magic est identique à la fonction SMA “exemple optimisation” de base, une fois mise sur la même échelle.
Cela dit on peut sans doute améliorer la fonction en utilisant des STOP %LOSS et %PROFIT couplé avec des TRALING STOP %LOSS et %PROFIT
Est-ce que vous auriez des pistes pour intégrer ces éléments à la Magic trend ? Car nous pouvons grandement améliorer cette formule et j’aimerais y participer sur ce forum avec vous si vous êtes partants.
Pour l’instant voici les observations que j’ai faites sur des échelles 1h pour des lots entrées/sorties de 10 actions LVMH :
POINT DE DÉPART : le simple fait de posséder les 10 actions sur cette période de temps en passif génère 1900 net sur 17 500 de capital initial sur 3.5 mois (06/10/2023-26/01/2024) soit environ 31% par ans (valeur à battre)
1 → La fonction SMA de base entrant avec un “close cross over” et sortant en vendant avec un %LOSS 1% / %PROFIT 1%, génère 4450 net soit environ 85% par ans
2- → En comparaison, la fonction SMA de base utilisant un point d’entrée “close crosses over” puis un point de sortie “close crosses under” génère 2100 net soit environ 41% par ans
3 → Maintenant la fonction MAGIC TREND avec une entrée en “close cross over” et une sortie en “close cross under” génère 2200 net soit environ 41% par ans, ce qui est déjà meilleur que le passif et un peu mieux que le SMA utilisant des paramètres d’entrées et sortie identiques
4 → On peut donc en conclure qu’en remplaçant le point de sortie de la MAGIC TREND par un %LOSS 1% / PROFIT% 1% nous pourrions nettement améliorer la fonction MAGIC TREND
DE PLUS avec un TRAINLING permettant de mettre à jour notre %LOSS et notre %PROFIT pour qu’il suive les tendances à la hausse, nous pourrions encore nettement améliorer nos performances généralesPB : Comment coder la fonction trailing sur sur STOP % LOSS et un STOP %PROFIT ?
J’ai remarqué dans les fonctions de base de PRT une fonction “SET STOP %TRAILING”
En l’intégrant à la fonction MAGIC j’ai obtenu 4350 net soit 77% par ans (quasiment autant qu’avec la fonction SMA avec les limites 1% de sortie) avec la formule suivante :
MAGIC TRAILING123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051// --- settingsSignalPeriod = 12ArrowPeriod = 2// --- end of settingsbbup = average[signalperiod]+std[signalperiod]*arrowperiodbbdn = average[signalperiod]-std[signalperiod]*arrowperiodif ts=0 thenif close crosses over bbup thents=bbdntrend=1elsif close crosses under bbdn thents=bbuptrend=-1endifendifif trend=1 thents=max(ts,bbdn)elsif trend=-1 thents=min(ts,bbup)endifif ts thenif close crosses under ts thentrend=-1ts=bbupENDIFendifif close crosses over ts thentrend=1ts=bbdnif not onmarket THENbuy 10 share AT MARKETELSESET STOP %TRAILING 1ENDIFendif// Correspond à une adaptation pour améliorer les performances sur des périodes de hausse où le trailing stop aurait coupé trop tôt la positionIF not onmarket THENIF close>ts AND close/ts>close[1]/ts[1] AND close[1]/ts[1]>close[2]/ts[2] THENBUY 10 SHARE AT MARKETELSESET STOP %TRAILING 1ENDIFENDIFgraphonprice tsJe suis toutefois convaincu qu’avec la fonction MAGIC on peut parvenir à des résultats supérieurs à une simple fonction SMA
Des suggestions d’optimisation ?
01/31/2024 at 9:51 AM #22714602/11/2024 at 1:15 PM #227913Bonjour Nicolas,
Merci de ta réponse, en effet parfois à vouloir mettre trop d’indicateur on n’y voit plus rien et oublions l’essentiel, pas évident de trouver le bon cocktail des 20/80,
J’ai fais pas mal d’essais depuis deux semaines je commence à trouver certains points qui me semblent clés pour une bonne stratégie :
1-Réactivité maximale→ Agir dans la seconde, tout en prenant sa décision sur une échelle bien supérieure (minute, heure, jour) pour jouer sur de plus grandes amplitudes et réduire les frais de courtage, tout en angmentant les marges de manoeuvre
2-Amplitude minimale→ Utiliser des grilles de lignes écartées de x pourcent ou un index pour mesurer l’amplitude du mouvement en permanence et ne déclencher un signal que si l’amplitude est suffisante,
3-Définition des tendances→ Définir des tendances selon les variations des amplitudes highest et lowest pour définir des comportements différents : à la hausse(rester), à la baisse (sortie), sur des tendances neutres ou de grande amplitude
4 Choix de son/ses indicateurs→ Transformer sa propre lecture de cours en stratégie en utilisant des indicateurs pour isoler les zones d’actions et constantes identifiées (EX SMA/HULL pour les oscillations du cours)
5-Programmation d’un comportement→ en fonction des tendances
6-Déclenchement des maximum→ En utilisant un index ou une courbe des highest/lowest pour gérer l’achat/vente en tenant compte des tendances définies
7-Anticipation des revirements→ Calculer les variations de courbes pour anticiper les changements de direction avec des ratios X/X[1] pour déclencher des actions juste avant les pics.Pour moi une bonne stratégie doit rassembler au moins ces différents aspects, j’essaie de trouver la bonne manière de les réunir.
Il y a aussi l’IA qui peut être utilisée à l’aide de variables, mais les résultats sont très variés, d’ailleurs c’est trompeur, car en utilisant le logiciel prorealtime du site officiel j’ai obtenu des résultats “parfaits” qui ne variaient jamais et représentaient “le meilleur scénario possible”, en utilisant le prorealtime intégré à Saxo j’ai commencé pour la première fois à avoir des résultats qui variaient pour sur le même cours, avec les même paramètres, sur la même échelle de temps. De façon à me faire comprendre que le comportement de l’IA si on lui laisse beaucoup de marge est tout de même variable et sujet à l’erreur.
Utilises tu l’IA dans tes stratégies, est-elle fiable dans le réel ?
J’ai d’ailleurs vu qu’en ajoutant l’IA dans le choix de périodes :1234567// --- settingsSignalPeriod = Variable1 [1,5,1]ArrowPeriod = 2// --- end of settingsbbup = average[signalperiod]+std[variable2[12-16,1]]*arrowperiodbbdn = average[signalperiod]-std[variable3 [14-18-1]]*arrowperiodOn obtenait de super bon résultats
Et en utilisant également l’IA pour gérer des positions %loss et %profit on obtenait encore de meilleurs résultats, meilleurs encore que ceux des trailing stop, mais plus sujets à l’erreur que le trailing en cas de cours peu haussiers et très fluctuants
Pour les variables des limites12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849//Variables ://P1 = 1/5/1 (En variable//P2= 12/16/1, P3=14/18/1, P4=2 (fixe)//StopPercent = 0.5/2.5/0.5//ProfitLossRatio = 2/6/1//ParamètresMTUP = average[P1]+std[P2]*P4MTDN = average[P1]-std[P3]*P4if MT=0 thenif open crosses over MTUP thenMT=MTDNtrend=1elsif open crosses under MTDN thenMT=MTUPtrend=-1endifendifif MT thenif open crosses under MT thentrend=-1MT=MTUPelsif open crosses over MT THENtrend=1MT=MTDNENDIFendifif trend=1 thenMT=max(MT,MTDN)elsif trend=-1 thenMT=min(MT,MTUP)endif//Entrées + SortiesIF NOT ONMARKET tHENIF open crosses over MT OR open>MT AND open/MT>open[1]/MT[1] AND open[1]/MT[1]>open[2]/MT[2] THENBUY 10 SHARES AT MARKETELSESET STOP %LOSS StopPercentSET Target %PROFIT StopPercent*ProfitLossRatioENDIFENDIF//Graphiquegraphonprice MTAvec cette version “Magic %limite auto” Pour l’instant sur des cours comme Nvidia j’arrive à dépasser le simple positionnement passif, sur des cours comme S&P500 cela dit, pourtant haussiers, je génère beaucoup de négatif, parfois l’IA ne gère pas du tout les variations trop soudaines, et dans ce cas le trailing stop est beaucoup plus fiable et me permet de rester neutre tandis qu’en passif j’aurais été gagnant
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768// --- settings// Les variables sont identiques à la version des %loss %profit//le nom des variables est un peu différent dans cet exemple je ne les ai pas renomméesSignalPeriod = P1ArrowPeriod = 2// --- end of settingsbbup = average[P1]+std[P2]*arrowperiodbbdn = average[P1]-std[P3]*arrowperiodif ts=0 thenif open crosses over bbup thents=bbdntrend=1elsif open crosses under bbdn thents=bbuptrend=-1endifendifif trend=1 thents=max(ts,bbdn)elsif trend=-1 thents=min(ts,bbup)endifif ts thenif open crosses under ts thentrend=-1ts=bbupENDIFendifif open crosses over ts thentrend=1ts=bbdnif not onmarket THENbuy 10 share AT MARKETELSESET STOP %TRAILING StopPercentENDIFendifIF not onmarket THENIF open>ts AND open/ts>open[1]/ts[1] AND open[1]/ts[1]>open[2]/ts[2] THENEXITSHORT at marketBUY 10 SHARE AT MARKETELSESET STOP %TRAILING StopPercentENDIFENDIFgraphonprice ts→SMA CROSSSMA=Average[Periods](close)IF NOT ONMARKET THENIF open crosses over SMA THENBUY 10 share AT MARKETENDIFENDIFif onmarket THENif open crosses under SMA THENsell 10 share at marketENDIFENDIFGRAPHONPRICE SMAAvec cette version “Magic tailing auto” j’arrive à être aussi rentable que le passif sur Nvidia qui explose, et j’arrive à ne pas être négatif sur P&S500 qui fluctue de manière imprévisible et avec des signaux faibles
Voilà, je ne sais pas si vous aussi avez réussi à améliorer la méthode pour en faire profiter la communauté, ce n’est pas évident au début quand on se lance, ces courbes sont des vraies énigmes à résoudre ^^
Au plaisir de vous lire et de d’échanger
02/11/2024 at 1:22 PM #227914P.S : By the way, je n’ai pas vu cette stratégie dans la Library, nous pourrions peut être l’ajoutée si tu es d’accord, puisque tu en es le créateur, je trouve que c’est une stratégie qui est très fiable couplée avec un trailing stop, pour moi elle est opérationnelle, même si ce n’est pour l’instant qu’une tendance gérée par l’IA et qu’on pourrait y ajouter beaucoup de niveaux d’analyse pour la rendre plus efficace.
02/12/2024 at 9:12 PM #228017J’ai oublié d’ajouté ceci à la fin de mon code, je pense que c’est indispensable de mettre un parachute de maximum 10% du capital investi
1234// PARACHUTEIF STRATEGYPROFIT+POSITIONPERF<-open THENQUITENDIFIci j’ai mis <-open car je demande à mon bot de n’investir que 10 actions, donc open = le prix d’une action.
Il faudrait adapter si on utilise la méthode en mettant <=open*(Nombre d’action/10)02/13/2024 at 9:39 AM #22802902/13/2024 at 10:49 AM #228033IF STRATEGYPROFIT+POSITIONPERF<–open THENAvez-vous essayé d’utiliser GRAPH STRATEGYPROFIT + POSITIONPERF ?.Les valeurs de votre expression pourraient être (exemple sur DAX et avec un gain actualisé de 1200 euros) :. IF STRATEGYPROFIT+POSITIONPERF<–open THEN. 1200 + 0.00134 < 17000soit, sur une action au prix de 20 euros :. 1200 + 0.00134 < 20Je pense qu’il y a quelque chose qui ne va pas.02/13/2024 at 3:57 PM #228070Bonjour Nicolas et Robertogozzi,
En effet c’est une belle stratégie je trouve, elle a du potentiel, et avec le parachute on se couvre contre les pire scénarios, soit ça fonctionne soit ça s’arrête, en cela je pense qu’elle est une version que l’on peut mettre dans la library
Je réactualise le code en entier car dans le précédent j’avais ajouté un deuxième code qui n’avait rien à faire ici par erreur. J’ai donc ajouté le parachute également pour limiter les pertes possibles.
Voici la version MAGIC TREND (optimisée) simple croisement (donc sans IA pour gérer les moments de vente et d’achat via trailing stop ou %stop), le “trailing stop” est placé au niveau du système en lui-même via le parachute qui arrête la fonction si on perd plus que la somme programmée (je recommande 10% du capital initial investi, vous n’avez qu’à saisir ce montant au niveau de la variable “Capitalinitial”, vous pouvez aussi ajuster le ratio 10% en adaptant le *0.10 du parachute)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465// VARIABLES//P1 = 1/12/1, Z= 0/1/1//P2= 10/16/1, P3=14/20/1, P4= 1.9/2.1/0.05//StopPercent = 0.5/2.5/0.5//ProfitLossRatio = 2/6/1// INDICATEURS// À METTRE À JOUR : N nombre d'action à investir, T = ratio de perte maximumN= 10T= 10/100NP= N*TParachute= -open*NPbbup = average[P1]+std[P2]*P4bbdn = average[P1]-std[P3]*P4// EVENEMENTSif ts=0 thenif close crosses over bbup thents=bbdntrend=1elsif close crosses under bbdn thents=bbuptrend=-1endifendifif trend=1 thents=max(ts,bbdn)elsif trend=-1 thents=min(ts,bbup)endif// ACTIONSif close crosses over ts thentrend=1ts=bbdnif not onmarket THENBUY N share AT MARKETENDIFendifif ts thenif close crosses under ts thentrend=-1ts=bbupelsif open crosses under ts AND open<open[1] thenif onmarket thenSELL AT MARKETENDIFEndifendifIF not onmarket THENIF open>ts*Z AND open/ts>open[1]/ts[1] AND open[1]/ts[1]>open[2]/ts[2] THENELSIF not onmarket THENBUY Achatmax SHARE AT MARKETENDIFENDIF// PARACHUTEIF STRATEGYPROFIT+POSITIONPERF<parachute THENQUITENDIF// GRAPHIQUEgraphonprice tsJe partage également la version (optimisée) simple SMA simple croisement (sans IA pour gérer des variables %Stop ou %trailing) car pour l’instant elle est la fonction avec le plus de potentiel et le plus fiable que j’ai pu manié
12345678910111213141516171819202122232425262728293031// VARIABLES// X=0.8/1.2/0.05, Y=0.8/1.2/0.05, varP1= 1/72/1// PARAMETRES// À AJUSTER : Capitalinitial= Capital max à investir, T= ratio de perte maximale autoriséeCapitalinitial =2000T=10/100Achatmax = Capitalinitial/openParachute = -Capitalinitial*TSMA1=Average[varP1](open)// ACTIONSIF NOT LONGONMARKET THENIF open CROSSES over SMA*X THENBUY 10 shares AT MARKETENDIFENDIFIF LONGONMARKET THENIF open crosses under SMA*Y THENSELL 10 shares at marketENDIFENDIF// PARACHUTEIF STRATEGYPROFIT+POSITIONPERF<Parachute THENQUITENDIF// GRAPHIQUEGRAPHONPRICE SMADans ces exemples ci dessus j’ai mis un parachute avec un montant précis de capital initial ou d’action que l’on souhaite auquel on applique ensuite le ratio que l’on souhaite ici 10/100 donc 10%, en rendant la valeur négative on a notre parachute.
Je pense que cela répondra a ta question Robertogozzi pour l’utilisation du parachute, il suffirait de saisir un nombre d’actions précises max que le système peut acheter, avec un “IF NOT ONMARKET THEN BUY 10 share at market”, ce sera toujours 10*open quel que soit le moment, et le parachute peut être utilisé avec le montant “-open” en utilisant un ratio par rapport à la mise initiale : dans ce cas de figure j’investi 10 actions, je sort à -1 donc à -10%. De mon côté tout a fonctionné correctement, je perdrais soit rien (grâce au gain d’actualisation du prix de mon action), soit 10%
Effectivement quand j’essaie d’afficher via graphonprice les valeurs STRATEGYPROFIT et POSITIONPERF je n’ai rien
Quand j’affiche STRATEGYPROFIT+POSITIONPERF j’obtiens des valeurs étranges du type -2,6 puis avant de s’activer cela passe bien à des valeurs négatives jusqu’à atteindre “-open”
Ma stratégie se coupe bien au bon moment de manière à ce que je n’ai pas de pertes ou bien à 10% (voir le screen joint)06/26/2024 at 7:59 PM #234388Bonjour à Tous,
Je suis un petit nouveau qui vient de débarquer sur le forum et je m’excuse donc par avance des éventuelles bourdes que je pourrai exprimer.
Avant toute chose, je voudrais remercier Nicolas pour ton top boulot de programmation… grand merci !Du coup, j’ai pu tester un peu la stratégie qui marche bien et je souhaiterai l’améliorer. Cependant malgré mes tentatives, je tourne en rond et je n’arrive pas à trouver le bon dosage.Du coup, concernant la stratégie d’amélioration, je voudrai coupler cet indicateur Magical Trend avec :- Pour une prise de position à l’achat lorsque :
- la flèche Magical Trend est verte
- que le prix est au-dessus du SMA 200 sans décalage
- et que le stochastique soit en zone de surachat (>80)
- Pour une position de vente lorsque :
- la flèche Magical Trend est rouge
- que le prix est en dessous du SMA 200 sans décalage
- et que le stochastique soit en zone de survente (>20)
- Avec un money management intégré de :
- Stop suiveur à 7pts
- Stop Loss à 10 pts
- Une perte maxi par jour de 30pts qui, une fois atteinte, doit stopper tout trade jusqu’au lendemain.
Pour information, je fais plutôt du scalping en 300 ticks ou 1min sur des Futures US avec 1pt=2$ et autour de 3000$ de capital.Je voulais donc, avant tout, savoir ce que vous pensiez de cette amélioration potentielle… Est-ce qu’elle a du sens et est-ce qu’elle peut en effet améliorer l’indicateur de base.Grosso Modo, tous vos bons retours et conseils sont bons à prendre pour moi.Et ensuite, est-il possible de m’aider à coder ces conditions car j’ai vraiment des difficultés avec le code.Merci d’avance la Communauté pour votre aide. - Pour une prise de position à l’achat lorsque :
-
AuthorPosts
Find exclusive trading pro-tools on