Aide sur stratégie – code grid aménagé
Forums › ProRealTime forum Français › Support ProOrder › Aide sur stratégie – code grid aménagé
- This topic has 4 replies, 2 voices, and was last updated 7 years ago by Nicolas.
-
-
02/07/2017 at 10:13 AM #24173bonjour,dans l’article https://www.prorealcode.com/blog/trading/averaging-techniques-automated-trading/, Nicolas nous expose à travers un exemple de programmation une technique d’accumulation, tout en en pointant ses limites, notamment à travers des drawdown, qui peuvent vite devenir insoutenables.Aussi, j’ai essayé d’en reprendre l’idée en tentant de minimiser les points noirs de la stratégie.On peut déjà y adjoindre un filtre, en initiant des positions uniquement en tendance baissière, en ajoutant une condition MM150.Ici, sur UT5 par exemple, le drawdown max s’en trouve déjà considérablement réduit (22,45%), avec un solde initial à 10K pour éviter tout risque.//////////////////////////////1234567891011121314151617181920212223242526272829303132defparam cumulateorders = true// indicatorsEMA3 = exponentialaverage[3]EMA10 = exponentialaverage[10]if barindex>1 thenhaopen=(haopen[1]+haclose[1])/2haclose=(open+close+low+high)/4endifindicator1 = Average[150](close)c1 = (close < indicator1)// first order (EMA cross)if not shortonmarket and EMA3 crosses under EMA10 and C1 thenSELLSHORT 1 SHARE AT MARKETendif// close position with bullish EMA cross only if we are in profit and we are not already averaging down (1 position only)if countofposition=-1 and haclose<tradeprice and EMA3 crosses over EMA10 thenEXITSHORT AT MARKETendif// averaging downif shortonmarket and haopen>haclose and haopen[1]<haclose[1] and haclose>tradeprice and C1 thenSELLSHORT 1 SHARE AT MARKETendif// monitor the average price of whole orders and close them accordinglyif shortonmarket and haclose<positionprice and countofposition<-1 thenEXITSHORT AT MARKETendif///////////////////////////////////Une deuxième possibilité serait de contrebalancer les positions prises sans clôture sous la mm150 par des prises de positions en tendance haussière. Ainsi, xx achats accumulés en tendance baissière sans en trouver la cloture rapidement, seraient temporisées par l’ouverture de positions haussières au dessus de la mm150. Et la volatilité ferait son oeuvre dans un sens ou dans l’autre pour clôturer les positions.A cet effet, quelqu’un pourrait-il coder le prise de position haussière sur le même modèle que celle baissière? Pour valider les hypothèses. Je n’y arrive pas tout à fait…– un pro-oder avec prises de positions « forcées » simultanées est-il possible ou faut-il envisager un pro-order call et un pro-order put pour éviter de solder les positions? En un mot, peux t-on prendre des positions dans PRT sans solder les précédentes (couverture des positions).– @ Nicolas, par ton expérience, en minimisant le drawdown, ce système peut-il tenir la route?Ci-dessous, screens du backtest.Merci pour votre aide et échanges sur le sujet….02/07/2017 at 3:59 PM #24230
J’essaie de programmer l’ordre équivalent en tendance haussière, mais le back test ne semble pas indiquer de revente;
@ Nicolas, peux-tu m’indiquer ce qui ne vas pas dans le code, stp?
//////////////////////
12345678910111213141516171819202122232425262728293031defparam cumulateorders = true// indicatorsEMA3 = exponentialaverage[3]EMA10 = exponentialaverage[10]if barindex>1 thenhaopen=(haopen[1]+haclose[1])/2haclose=(open+close+low+high)/4endifindicator1 = Average[150](close)c1 = (close > indicator1)// first order (EMA cross)if not longonmarket and EMA3 crosses over EMA10 and C1 thenBUY 1 SHARE AT MARKETendif// close position with bullish EMA cross only if we are in profit and we are not already averaging down (1 position only)if countofposition=-1 and haclose>tradeprice and EMA3 crosses under EMA10 thensell AT MARKETendif// averaging downif longonmarket and haopen<haclose and haopen[1]>haclose[1] and haclose<tradeprice and C1 thenbuy 1 SHARE AT MARKETendif// monitor the average price of whole orders and close them accordinglyif longonmarket and haclose>positionprice and countofposition<-1 thensell AT MARKETendif02/07/2017 at 4:46 PM #24233Winnie, je te serai gré de bien vouloir utiliser le bouton INSERT PRT CODE stp .. J’ai parfois l’impression que personne ne l’utilise, et de passer mes journées à remettre en forme des messages. Il faut avouer que le code est nettement plus lisible une fois que l’on utilise ce bouton !!
Dans ton code pour les achats, je vois un problème à la ligne 19, le countofposition ne peut être négatif pour des achats, il est toujours positif.
On ne peut malheureusement pas avoir des positions d’achat et de vente dans la même stratégie, il faut les séparer (comme tu l’as déjà fait).
Je l’ai écrit dans l’article je crois, je connais des gens qui vivent du grid, de différentes formes. C’est tenable, si on dé-leverage fortement (en gros être très fortement capitalisé) et si on a des nerfs suffisamment solide pour tenir les périodes difficiles. Évidemment, c’est le genre de stratégie qui ne sera jamais “LAUNCH AND FORGET”. Par expérience, si tu ne peux pas (ou ne veux pas) perdre à un moment X ou Y dans ta grille, alors elle te mènera forcément à la ruine à un instant Z. Le Black Swan est toujours catastrophique si on ne ferme pas ses pertes latentes. Ceci étant, c’est un très bon exercice de programmation et de recherches que je t’encourage à continuer à explorer, c’est très rigolo de ne jamais perdre n’est ce pas ? 🙂
02/07/2017 at 5:20 PM #24241Merci Nicolas pour cette réponse fort complète. Et toutes mes excuses pour le manque d’usage des fonctions offertes par le forum. Je tacherai de faire mieux la prochaine fois, promis 🙂
En effet, l’exercice est plus éducatif , formateur et ludique dans cette configuration. Mes trades sont habituellement beaucoup plus classiques 🙂 Mais je conserve tout de même un mince espoir d’en tirer quelque chose.
Si je décodes ce que tu exprimes, l’ajout d’un SL positionné au-dessus pour les tendances baissières, par exemple pourrait peut-être assainir les situations devenant difficilement tenables. Au détriment bien sûr de la “performance”. J’aimerai simuler ce cas de figure, avec par exemple une revente des positions, disons, à 20 pips au dessus de la mm150, au cas où elles n’ont pu être soldées avant. Je commence à me débrouiller en code mais pas encore au top 🙂 Quelle ligne de code dois-ajouter? Je ne manquerai pas de partager mes exercices exploratoires…
Par ailleurs, le fait d’ouvrir deux systèmes à “contresens” permet-il par ailleurs, à ton sens, de nuancer le jugement que l’on peut porter sur la grille, en profitant de tous les mouvements, avec un effet “tampon” sur les drawdown potentiels?
J’ai remplacé comme tu me l’as dis countofposition par =1 au lieu de -1. Mais toujours pas de vente après l’achat; Peux tu jeter un oeil si cela n’est pas abuser 😉
Merci
02/07/2017 at 5:51 PM #24248C’est pareil que la martingale, ça marchera tout le temps pourvu que le temps soit infini et le capital également. Si tu ajoutes des perdants aux perdants, donc dans les 2 sens comme tu le suggères, cela ajoutera à ton drawdown, même si l’idée de hedger les pertes par une grille inverse semble être une idée intéressante, cela n’enlèvera rien au fait que le spread s’ajoutera aux pertes latentes, etc. etc.
Si tu veux vendre le panier d’ordres à 20 points au dessus de la mm150, le code s’écrirait ainsi:
1exitshort at indicator1+20*pointsize stopC’est tout de suite moins sexy quand on perd, une courbe d’équité 🙂
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on