ExtraTrend – exemples de codage screeners et programmation personnalisee
Forums › ProRealTime forum Français › Support ProScreener › ExtraTrend – exemples de codage screeners et programmation personnalisee
- This topic has 505 replies, 103 voices, and was last updated 2 months ago by Bernard49.
Tagged: extratrend
-
-
06/27/2022 at 2:53 PM #196216
Bonjour PLBourse, quel travail tu as fait là, impressionnant et passionnant…
De mon coté je n’ai pas une approche aussi rigoureuse que la tienne, mais avec les differentes strategies que j’ai teste via BackTest j’ai remarque que celles ci profitent bien des belles tendances établies et protègent bien des retournements baissiers, par contre ces memes strategies fonctionnent tres mal sur des titres en Range ou l’on multiplie les debuts de zone de Force qui retombent rapidement, meme en utilisant des gardes fous type zone de force dans les UT supérieur, Metascore>80, pas trader en dessous de MM200, etc.. c’est délicat, car si on rajoute trop de conditions strictes alors on finit par rater aussi les bonnes tendances qui finissent par partir…
Avec ces strategies j’ai remarque que le temps sur le marche est assez faible car on prend que les belles tendances, j’ai remarque aussi que la performance daily n’avait en moyenne rien d’exceptionnel, pour booster la performance annuelle je me suis dit qu’il fallait descendre les UT, j’ai teste en 1H, mais c là que je me suis confronte aux faux signaux, aux zones de range plus nombreuses, etc… J’ai donc adapte la stratégie en essayant d’être tres sélectif et à ce jour ce qui fonctionne le mieux pour moi mais qui doit être davantage teste et de façon plus rigoureuse, est :
Conditions d’entree :
1/ le titre est en zone de force dans son UT ( pas spécialement en debut de zone ou a la cassure de Res dynamique, pour pouvoir rerentrer sur une belle tendance si on c’est fait sortir bêtement)
2/ Close > MM200 de l’UT supérieur principale (4h pour trade en 1h) Ca reste a prouver l’utilité de ca…
3/ Close > MM7 dans l’UT du tradeSi les conditions sont réunies, l’entree se fait en pyramidant avec pose de stop a 1,5 ATR pour une premiere 1/2 position calculée sur l’ATR comme ce que propose Christophe, puis un premier renforcement d’une autre 1/2 position si close> a 4 ATR par rapport au cours d’entree avec conditions de tjrs être en zone de force et d’avoir une bougie verte avec volume au moins 30% > a la MM20 (volume). Je renforce une 3eme fois d’ 1/3 position si une resistance dynamique est cassée pendant le Trade.
Pas de prises de profit partiel, je trouvais que ca entamais trop la performance.
Pour la sortie, j’ai fait en 1 fois, c du trendFollowing, avec Stop suiveur base sur la stratégie des tortues stop base sur 3 ATR qui monte graduellement a chaque plus bas.
Tout ca est encore tout frais, ca demande plus de backtest, ca demande certainement des ajustements, des ameliorations, (je débute en code) mais les résultats sont encourageants la perf annuelle sur bcp de titres est pas mal, beaucoup plus qu’en Daily il me semble. Seule ombre au tableau mais tres importante est pour les titres en Range légèrement baissiers qui m’ont amené a des perf catastrophiques.
L’idée derriere est pourquoi pas faire tourner ces stratégies en Trading automatiques sur un panier de quelques actions en les sélectionnant soigneusement sur des périodes ou les indices référants sont avec nous afin d’éviter les fameux range légèrement baissiers, mais pas facile car le passé ne presume pas de l’avenir…
Je serai heureux de partager avec toi & Hienalpha ces reflexions et les différents codes.
Cordialement.1 user thanked author for this post.
06/27/2022 at 3:00 PM #19621706/27/2022 at 3:05 PM #196218Salut Arnaud, oui biensur je vais meme partager tout le code pour voir ensemble ce qui peut être amélioré. Bonne journée.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115DEFPARAM CumulateOrders=Truecapitalinitial=10000risque=5profitfactor=6stopfactor=1.5renforcement1=1renforcement2=1renforcementfactor=4ratchetfactor=7META=80Sortie=2p=20TIMEFRAME (4 HOURS)MM200=average[200]TIMEFRAME (1HOUR)//APPEL VALEUR EXTRATRENDmyTrend, ignored, ignored, myReDyn, ignored = CALL "ExtraTrend"[0,1,0,0,0](close)// Tendance ExtraTrendif myTrend>myTrend[1] thentendance=1endifif myTrend<myTrend[1] thentendance=0endif//CASSURE RES DYNIf myTrend[1]<>myReDyn[1] and close>myReDyn[1] THENCassure=1elsecassure=0endif// score MetascoremyScore, ignored, ignored = CALL "MetaScore"[META, 0, 0](close)IF myScore > META THENINDIC=1ELSEINDIC=0ENDIF//GROS VOLUMESMM20V = average[20] (volume)If volume > (MM20V+(MM20V*0.6)) AND OPEN<close THENOKVOL=1ELSEOKVOL=0ENDIF//DEFINITION COURT TERME OKMM7 = Average[7]IF CLOSE>MM7 THENCTOK=1ELSECTOK=0ENDIF//PRISE DE POSITIONif tendance and INDIC=1 and close>MM200 and CTOK=1 and not longonmarket THENpositionsize=round(((capitalinitial)*(risque/100))/(stopfactor*averagetruerange[20]))BUY positionsize/2 shares AT MARKETset stop loss stopfactor*averagetruerange[20]flag=0renf=0endif// RENFORCEMENT 1if longonmarket and close>=myTrend+renforcementfactor*averagetruerange[20] and OKVOL=1 and flag=0 and renforcement1=1 thenbuy round(positionsize/2) shares at marketflag=1endif//RENFORCEMENT 2if longonmarket and indic=1 and renf=0 and OKVOL=1 and cassure=1 and renforcement2=1 THENbuy round(positionsize/3) shares at marketrenf=1endif//SORTIE DE POSITION 1if sortie=1 and longonmarket and close<lowest[30](highest[55](high)-ratchetfactor*averagetruerange[20])thensell at marketendif// CALCUL STOP TORTUE (ATRx)ATRx = AverageTrueRange[p](close) * 3//ATRs = ATR Trailing Stop ou Stop TortuesIF close crosses over ATRts THENATRts = close - ATRxELSIF close crosses under ATRts THENATRts = close + ATRxENDIF// Clalcul del'ATRts lors de la meme tendanceIF close > ATRts THENATRnew = close - ATRxIF ATRnew > ATRts THENATRts = ATRnewENDIFELSIF close < ATRts THENATRnew = close + ATRxIF ATRnew < ATRts THENATRts = ATRnewENDIFENDIF//SORTIE DE POSITION 2if sortie=2 and longonmarket and close<atrts thenSELL AT MARKETendif06/27/2022 at 3:09 PM #196220Je l’ai codé sous forme d’indicateur également :
123456789101112131415161718192021222324252627//periodep =20// ATRxATRx = AverageTrueRange[p](close) * 3//ATRs = ATR Trailing Stop ou Stop TortuesIF close crosses over ATRts THENATRts = close - ATRxELSIF close crosses under ATRts THENATRts = close + ATRxENDIF// Clalcul del'ATRts lors de la meme tendanceIF close > ATRts THENATRnew = close - ATRxIF ATRnew > ATRts THENATRts = ATRnewENDIFELSIF close < ATRts THENATRnew = close + ATRxIF ATRnew < ATRts THENATRts = ATRnewENDIFENDIFreturn ATRts as "Stop Totue"06/27/2022 at 3:22 PM #19622206/27/2022 at 6:35 PM #196233Merci pour tes commentaires. Cela me suscite des reactions
- Actuellement, je n’ai pas de pyramidage et une seule prise de position par trade
- j’ai effectivement fait une comparaison avec ou sans prise de bénéfice partielle, et j’arrive aussi à la conclusion que la stratégie sans prise de benefice partielle est meilleure
- j’ai actuellement mon Stop suiveur à 4 ATR de la prise de position, et c’est peut-être pénalisant. Je vais essayer avec 3 ATR
- Actuellement, mon meilleur résultat, sans prise de bénéfice partiel donne
- performance de =245 % sur 10 an, soit 13,2 % annualisé
- DrawDown maxi de 17 % ce qui parait acceptable
- par contre, les périodes de DrawDown sont beaucoup trop longues, en particulier sur la période 2011-2020, 2011 est en forte perte (le DD maxi en fin d’année ou presque) et il faut attendre Mars 2013 pour revenir au capiral de départ. 2 ans sans gain, surtout au début, je considère que cela décourage ‘nimporte quel investisseur.
Je travaille actuellement différents modèles de Money Management, dans la ligne de certaines propositions de Christophe et ensuite j’essaierai le pyramidage… IL faut à mon sens limiter les tailles de position pour permettre de sécuriser du capital pour pyramider.
Un beau challenge pour de la gestion de portefeuille, mais je vais regarder. Merci pour les codes
06/27/2022 at 8:29 PM #196237Bonsoir Gilles
il y a une file dédiée pour les backtest et systèmes Extratrend…mais je te répond là
J’ai fait 2-3 modif
ATTENTION je l’ai remis en version Extratrend d’aujourd’hui ! pour toi il faut enlever un ,0 dans le call de l’indicateur
Nouvelle version Extratrend = CALL “ExtraTrend”[0,1,0,0,0,0](close)//POUR ANCIENNE VERSION EXTRATREND le CALL est =”CALL “ExtraTrend”[0,1,0,0,0](close)”
Tu avais mis le risque à 5 !!! donc 5% et c’est juste inconcevable…
J’ai mis la MM800 au lieu d’une MM200 en timeframe 4 heures
J’ai changé ton mytrend[1]<>MyRedyn[1]
Si myReDyn=myTrend donc la résistance dynamique est confondue au trend
Regarde en 1 heure comme tu le désirais
je pense que tu peux l’améliorer encore…
bonne soirée
Arnaud
je poste le code à la suite après…06/27/2022 at 8:43 PM #196240RETIRE ton histoire de cassure=1…tu y verras plus clair…
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116// Code originel TrendFrance Christophe transformé par gillespetitbali// Proposition d'amélioration ou modification Penser@ ArnaudDEFPARAM CumulateOrders=Truecapitalinitial=10000risque=0.5//ATTENTION AU RISQUE !!! Tu avais mis 5 donc 5% ce qui est énorme et tu coules ton compte direct ! Tout le monde recommande 0.5% ce qui fait 50 euros pour un compte à 10000. 1% MAXIMUMprofitfactor=6stopfactor=1.5renforcement1=1renforcement2=1renforcementfactor=4ratchetfactor=7META=80Sortie=2p=20//AVERAGE 800 = AVERAGE 200*4 heures pour éviter un appel au timeframe...MM800 = average[800]//APPEL VALEUR EXTRATRENDmyTrend, ignored, ignored, myReDyn, ignored = CALL "ExtraTrend"[0,1,0,0,0,0](close)//POUR ANCIENNE VERSION EXTRATREND remplacer le CALL => "CALL "ExtraTrend"[0,1,0,0,0](close)"// Tendance ExtraTrendif myTrend>myTrend[1] and myReDyn=mytrend thentendance=1endifif myTrend<>myReDyn then//SI MyReDyn=Mytrend cela veut dire que la bougie est au dessus de myTrend => Retient bien que La Résistance Dynamique (myRedyn) est confondue avec Mytrend lorsque le trend est en tendance bleue et que la résistance dynamique n'est plus affichée...donc dès que Myresdyn s'affiche s'est quelle est différente du trend...tendance=0endif//CASSURE RES DYNIf myTrend<>myReDyn and close>myReDyn THEN//Retient bien que La Résistance Dynamique (myRedyn) est confondue avec Mytrend lorsque le trend est en tendance bleue et que la résistance dynamique n'est plus affichée...donc dès que Myresdyn s'affiche s'est quelle est différente du trendCassure=1elsecassure=0endif// score MetascoremyScore, ignored, ignored = CALL "MetaScore"[META, 0, 0](close)IF myScore > META THENINDIC=1ELSEINDIC=0ENDIF//GROS VOLUMESMM20V = average[20] (volume)If volume > (MM20V+(MM20V*0.6)) AND OPEN<close THENOKVOL=1ELSEOKVOL=0ENDIF//DEFINITION COURT TERME OKMM7 = average[7]IF CLOSE>MM7 THENCTOK=1ELSECTOK=0ENDIF//PRISE DE POSITIONif tendance and INDIC=1 and close>MM800 and CTOK=1 and not longonmarket THENpositionsize=round(((capitalinitial)*(risque/100))/(stopfactor*averagetruerange[20]))BUY positionsize/2 shares AT MARKETset stop loss stopfactor*averagetruerange[20]flag=0renf=0endif// RENFORCEMENT 1if longonmarket and close>=myTrend+renforcementfactor*averagetruerange[20] and OKVOL=1 and flag=0 and renforcement1=1 thenbuy round(positionsize/2) shares at marketflag=1endif//RENFORCEMENT 2if longonmarket and indic=1 and renf=0 and OKVOL=1 and cassure = 1 and renforcement2=1 THENbuy round(positionsize/3) shares at marketrenf=1endif//SORTIE DE POSITION 1if sortie=1 and longonmarket and close<lowest[30](highest[55](high)-ratchetfactor*averagetruerange[20])thensell at marketendif// CALCUL STOP TORTUE (ATRx)ATRx = AverageTrueRange[p](close) * 3//ATRs = ATR Trailing Stop ou Stop TortuesIF close crosses over ATRts THENATRts = close - ATRxELSIF close crosses under ATRts THENATRts = close + ATRxENDIF// Clalcul del'ATRts lors de la meme tendanceIF close > ATRts THENATRnew = close - ATRxIF ATRnew > ATRts THENATRts = ATRnewENDIFELSIF close < ATRts THENATRnew = close + ATRxIF ATRnew < ATRts THENATRts = ATRnewENDIFENDIF//SORTIE DE POSITION 2if sortie=2 and longonmarket and close<atrts thenSELL AT MARKETendif06/27/2022 at 8:45 PM #196241SANS LA CASSURE=1
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116// Code originel TrendFrance Christophe transformé par gillespetitbali// Proposition d'amélioration ou modification Penser@ ArnaudDEFPARAM CumulateOrders=Truecapitalinitial=10000risque=0.5//ATTENTION AU RISQUE !!! Tu avais mis 5 donc 5% ce qui est énorme et tu coules ton compte direct ! Tout le monde recommande 0.5% ce qui fait 50 euros pour un compte à 10000. 1% MAXIMUMprofitfactor=6stopfactor=1.5renforcement1=1renforcement2=1renforcementfactor=4ratchetfactor=7META=80Sortie=2p=20//AVERAGE 800 = AVERAGE 200*4 heures pour éviter un appel au timeframe...MM800 = average[800]//APPEL VALEUR EXTRATRENDmyTrend, ignored, ignored, myReDyn, ignored = CALL "ExtraTrend"[0,1,0,0,0,0](close)//POUR ANCIENNE VERSION EXTRATREND remplacer le CALL => "CALL "ExtraTrend"[0,1,0,0,0](close)"// Tendance ExtraTrendif myTrend>myTrend[1] and myReDyn=mytrend thentendance=1endifif myTrend<>myReDyn then//SI MyReDyn=Mytrend cela veut dire que la bougie est au dessus de myTrend => Retient bien que La Résistance Dynamique (myRedyn) est confondue avec Mytrend lorsque le trend est en tendance bleue et que la résistance dynamique n'est plus affichée...donc dès que Myresdyn s'affiche s'est quelle est différente du trend...tendance=0endif//CASSURE RES DYN//If myTrend<>myReDyn and close>myReDyn THEN//Retient bien que La Résistance Dynamique (myRedyn) est confondue avec Mytrend lorsque le trend est en tendance bleue et que la résistance dynamique n'est plus affichée...donc dès que Myresdyn s'affiche s'est quelle est différente du trend//Cassure=1//else//cassure=0//endif// score MetascoremyScore, ignored, ignored = CALL "MetaScore"[META, 0, 0](close)IF myScore > META THENINDIC=1ELSEINDIC=0ENDIF//GROS VOLUMESMM20V = average[20] (volume)If volume > (MM20V+(MM20V*0.6)) AND OPEN<close THENOKVOL=1ELSEOKVOL=0ENDIF//DEFINITION COURT TERME OKMM7 = average[7]IF CLOSE>MM7 THENCTOK=1ELSECTOK=0ENDIF//PRISE DE POSITIONif tendance and INDIC=1 and close>MM800 and CTOK=1 and not longonmarket THENpositionsize=round(((capitalinitial)*(risque/100))/(stopfactor*averagetruerange[20]))BUY positionsize/2 shares AT MARKETset stop loss stopfactor*averagetruerange[20]flag=0renf=0endif// RENFORCEMENT 1if longonmarket and close>=myTrend+renforcementfactor*averagetruerange[20] and OKVOL=1 and flag=0 and renforcement1=1 thenbuy round(positionsize/2) shares at marketflag=1endif//RENFORCEMENT 2if longonmarket and indic=1 and renf=0 and OKVOL=1 and renforcement2=1 THENbuy round(positionsize/3) shares at marketrenf=1endif//SORTIE DE POSITION 1if sortie=1 and longonmarket and close<lowest[30](highest[55](high)-ratchetfactor*averagetruerange[20])thensell at marketendif// CALCUL STOP TORTUE (ATRx)ATRx = AverageTrueRange[p](close) * 3//ATRs = ATR Trailing Stop ou Stop TortuesIF close crosses over ATRts THENATRts = close - ATRxELSIF close crosses under ATRts THENATRts = close + ATRxENDIF// Clalcul del'ATRts lors de la meme tendanceIF close > ATRts THENATRnew = close - ATRxIF ATRnew > ATRts THENATRts = ATRnewENDIFELSIF close < ATRts THENATRnew = close + ATRxIF ATRnew < ATRts THENATRts = ATRnewENDIFENDIF//SORTIE DE POSITION 2if sortie=2 and longonmarket and close<atrts thenSELL AT MARKETendif06/28/2022 at 5:52 AM #19625107/23/2022 at 9:14 AM #197796Bonjour,
Je suis au tout début de la longue route du trading. Et donc évidemment sur l’utilisation de Extratrend et de la programmation sur ProRealTrade.
Je vais donc commencer par une question simple et malheureusement probablement déjà posée quelque part – mais je n’ai pas non plus encore compris comment faire les recherches sur ProRealCode. La voici :
Comment peut-on récupérer/afficher les valeurs des points bleus et rouges ? Je n’arrive pas à les visualiser dans ProRealTime.Merci d’avance
Salutations
Acalgo
07/23/2022 at 9:51 AM #197798Bonjour,
Une fois Extratrend affiché sur le prix, il suffit de cliquer sur l’indicateur et aller dans configuration
puis tu coches Résistance dynamique et Résistance court terme
Alt color change la couleur du trend et trend following met le trend en trend following donc accepte beaucoup plus de baisse…et reste plus longtemps dans le marché
bon weekend
Arnaud
07/23/2022 at 9:58 AM #19780107/23/2022 at 10:01 AM #197802Donc tu as également Metascore
Metascore s’affiche en dessous du prix, et la manipulation est la même pour régler le niveau souhaité
tu cliques sur la bannière metascore puis configuration et tu règles les niveaux ou le lissage souhaité
cdt
Arnaud07/23/2022 at 10:05 AM #197803Bonjour Arnaud,
Merci pour ta réponse et la rapidité de celle-ci.
Je pense que je n’ai pas été assez précis dans ma question.
Je sais comment afficher les Résistance dynamique et Résistance court terme sur mon écran mais ce que je ne sais pas c’est afficher les valeurs de celles-ci. Pour le dire autrement quand je passe ma souris sur une date, j’ai des fenêtres qui s’ouvrent et qui m’indiquent des valeurs – mais pas celles de Résistance dynamique et Résistance court terme. De même si je voulais créer un screener et/ou réaliser une programmation personnalisée, comment puis-je récupérer ces valeurs de Résistance dynamique et Résistance court terme ?Je viens de voir passer ton message sur Metascore et t’en remercie. Mais je pense comprendre qu’elle ne ferme pas ma question.
Cordialement
Acalgo
-
AuthorPosts