indicateurs MTF pour ProRealTime disponible ! – programmation MTF pour ProBuilder
Forums › ProRealTime forum Français › Support ProBuilder › indicateurs MTF pour ProRealTime disponible ! – programmation MTF pour ProBuilder
- This topic has 40 replies, 14 voices, and was last updated 4 months ago by Marlaynicolas.
-
-
04/21/2021 at 5:49 PM #167724
Quand on déclare une variable codée pour un indicateur H4 dans un graphique H1 par exemple :
Once constH4=9
Faut-il la déclarer sur le timeframe default ou dans le timeframe H4 ?
Que je fasse l’un ou l’autre ne change rien j’ai le même problème :
J’ai simplifié le code pour reproduire :
PbOnceMTF123456789101112131415161718192021222324252627timeframe (default)once pH4=12once qH4=26once rH4=9timeframe (240 minutes, updateonclose)SarH4=SAR[0.02,0.02,0.2]//SARH4=Close+4z1H4= TEMA[pH4](close)z2H4 = TEMA[qH4](close)iH4= z1H4 - z2H4//fonctionne si je mets ://z3H4=DEMA[9](iH4)// ne fonctionne pas :z3H4=DEMA[rH4](iH4) //rH4 est définit et vaut 9if close > SarH4 thenRH4 = 0VH4 = 230elseRH4 = 230VH4 = 0endiftimeframe (default)return iH4, z3H4, SARH4 coloured (RH4,VH4,0)Le workaround est de ne pas mettre once mais je ne sais pas si avec un code plus complexe, je ne vais pas écraser d’autres variables.
J’ai remarqué aussi que si je ne fais pas appel au SAR, cela se passe nettement mieux…NopbOnce123456789101112131415161718192021222324252627timeframe (default)once pH4=12once qH4=26once rH4=9timeframe (240 minutes, updateonclose)//SarH4=SAR[0.02,0.02,0.2]SARH4=Close+4z1H4= TEMA[pH4](close)z2H4 = TEMA[qH4](close)iH4= z1H4 - z2H4//fonctionne si je mets ://z3H4=DEMA[9](iH4)// ne fonctionne pas :z3H4=DEMA[rH4](iH4) //rH4 est définit et vaut 9if close > SarH4 thenRH4 = 0VH4 = 230elseRH4 = 230VH4 = 0endiftimeframe (default)return iH4, z3H4, SARH4 coloured (RH4,VH4,0)04/21/2021 at 6:06 PM #167726Et ce n’est pas spécifique au SAR. Si je fais appel à un indicateur autre (comme ici une moyenne de base), je retrouve le même problème
PbOnceH4onH1123456789101112131415161718192021222324252627timeframe (default)once pH4=12once qH4=26once rH4=9timeframe (240 minutes, updateonclose)//SarH4=SAR[0.02,0.02,0.2]SARH4=Average[20](close)z1H4= TEMA[pH4](close)z2H4 = TEMA[qH4](close)iH4= z1H4 - z2H4//fonctionne si je mets ://z3H4=DEMA[9](iH4)// ne fonctionne pas :z3H4=DEMA[rH4](iH4) //rH4 est définit et vaut 9if close > SarH4 thenRH4 = 0VH4 = 230elseRH4 = 230VH4 = 0endiftimeframe (default)return iH4, z3H4, SARH4 coloured (RH4,VH4,0)04/22/2021 at 8:12 AM #16775104/22/2021 at 7:41 PM #167818Encore un autre problème de calcul cette fois sur un graphique M15 avec 2 indicateurs qui devraient donner exactement le même résultat puisque je choisis le Close pour le (customclose) :
RSIH4123456789timeframe (240 minutes,updateonclose)RsiC=RSI[Period](close)RsiCc=RSI[Period](CustomClose)timeframe (default)if barindex MOD 100 = 0 thendrawtext ("RSIClose= #RsiC#, RSIClose= #RsiCc#", barindex, RsiC-10)endifreturn RsiC COLOURED (0,175,240) as "RsiH4", RsiCc coloured (26,37,55) AS "RsiTpH4", 20 coloured (0,0,180) as "Ligne 20", 80 coloured (0,0,180) as "Ligne80"Le problème est identique pour Typicalprice en sélectionnant Typical pour le CustomPrice.
RsiTpH4123456789timeframe (240 minutes,updateonclose)RsiC=RSI[Period](TypicalPrice)RsiCc=RSI[Period](CustomClose)timeframe (default)if barindex MOD 100 = 0 thendrawtext ("RSITp= #RsiC#, RSITpVar= #RsiCc#", barindex, RsiC-10)endifreturn RsiC COLOURED (0,175,240) as "RsiTpH4", RsiCc coloured (26,37,55) AS "RsiTpVarH4", 20 coloured (0,0,180) as "Ligne 20", 80 coloured (0,0,180) as "Ligne80"Les valeurs affichées sont très différentes (voir les graphiques joints).
Est-ce aussi un bug ?
04/23/2021 at 8:38 AM #16783604/23/2021 at 2:19 PM #167896Nicolas, J’ai refait le test et je reproduis le même problème.
Le Customclose ne fonctionne pas correctement avec des indicateurs en MTF utilisant (updateonclose). Typiquement graphique en UT 15 minutes et timeframe (4 hours, updateonclose). -> Bug ?
Test :
1/ Timeframe (4 hours) ou timeframe (240 minutes) donnent le même résultat dans un indicateur. J’ai exactement le même problème. Comme j’ai assigné le Customclose sur le prix de clôture dans ce test, le résultat attendu est le même, mais ils sont très différents. Je pense que le CustomClose n’est jamais correct en MTF avec un updateonclose.
Code :
1234567891011121314timeframe (240 minutes, updateonclose)RsiCM240=RSI[Period](Close)RsiCVarM240=RSI[Period](CustomClose)timeframe (4 hours, updateonclose)RsiCH4=RSI[Period](Close)RsiCvarH4=RSI[Period](CustomClose)timeframe (default)ctm=CurrentTimeif currenttime=170000 thendrawvline(barindex)drawtext ("Time = #ctm#, RsiCM240= #RsiCM240#, RsiCVarM240= #RsiCVarM240#, RsiH4= #RsiCH4#, RsiCVarH4= #RsiCVarH4#", barindex, RsiCM240-10)endifreturn RsiCM240 COLOURED (0,175,240) as "RsiCM240", RsiCVarM240 COLOURED (0,175,240) as "RsiCVarM240", RsiCH4 COLOURED (100,175,240,180) as "RsiCH4", RsiCvarH4 COLOURED (100,175,240,180) as "RsiCvarH4",20 coloured (0,0,180) as "Ligne 20", 80 coloured (0,0,180) as "Ligne80"2/ Pourrais-tu me préciser comment Prorealtime fonctionne dans un indicateur en MTF ? Pour moi il n’y a pas de différence entre un timeframe 240 minutes et un timeframe 4 hours.
J’ai fait un test sur un probacktest sur la base du même code en timeframe (4 hours, updateonclose) pour le calcul du RSI. Extrait du code RSI dans le probacktest :
TimeFrame (240 minutes, updateonclose) //
once periodRSIH4=14
RsiH4=RSI[periodRSIH4](close)Timeframe (default)
//Autre code//
graph RsiH4 COLOURED (0,175,240) as “RsiH4”J’ai mis 1/ et 2/ sur 2 graphiques, un en UT 4 hours et l’autre en UT M15 (MTF13.jpg).
Conclusion, il y a un problème avec customclose et avec un timeframe (4 hours, updateonclose) : les résultats en utilisant Customclose sont incorrects. -> Bug ?
En fait, cette différence disparait si j’enlève le updateonclose.
1234567891011121314timeframe (240 minutes)RsiCM240=RSI[Period](Close)RsiCVarM240=RSI[Period](CustomClose)timeframe (4 hours)RsiCH4=RSI[Period](Close)RsiCvarH4=RSI[Period](CustomClose)timeframe (default)ctm=CurrentTimeif currenttime=170000 thendrawvline(barindex)drawtext ("Time = #ctm#, RsiCM240= #RsiCM240#, RsiCVarM240= #RsiCVarM240#, RsiH4= #RsiCH4#, RsiCVarH4= #RsiCVarH4#", barindex, RsiCM240-10)endifreturn RsiCM240 COLOURED (0,175,240) as "RsiCM240", RsiCVarM240 COLOURED (0,175,240) as "RsiCVarM240", RsiCH4 COLOURED (100,175,240,180) as "RsiCH4", RsiCvarH4 COLOURED (100,175,240,180) as "RsiCvarH4",20 coloured (0,0,180) as "Ligne 20", 80 coloured (0,0,180) as "Ligne80"TimeFrame (240 minutes)
once periodRSIH4=14
RsiH4=RSI[periodRSIH4](close)
RsiTpH4=RSI[periodRSIH4](TypicalPrice)// (Code)
TimeFrame (default)
// (Code)
graph RsiH4 COLOURED (0,175,240) as “RsiH4”résultat dans MTF14.err
04/23/2021 at 4:23 PM #167909Si tu utilises le TF 240 minutes, il sera très différent du H4, 240 minutes glissantes, ça n’est pas le TF officiel H4, tu devrais modifier tes déclarations et refaire des tests stp, afin de vérification. Merci.
C’est une bêtise, après vérification, la plateforme utilise bien une réinitialisation à date, pour coller à l’UT supérieure (comme pour un trimestre = 3 months, commencera toujours en Janvier, 240 minutes commencera toujours à l’heure 00:00).
Je vais reboucler au sujet du CustomClose, c’est embêtant 🙄
04/26/2021 at 9:34 AM #168034Concernant ce post: https://www.prorealcode.com/topic/indicateurs-mtf-pour-prorealtime-disponible/page/2/#post-167724
Je vois 2 problèmes, le premier et le plus important c’est que tu déclares une variable dans un timeframe, puis tu lui affectes une autre valeur dans un autre TF.
Les variables sont historisées dans le TIMEFRAME dans lequel elles sont affectées (ce qui est le but de l’instruction TIMEFRAME). Pour que ce soit cohérent :
- On interdit la définition de la même variable dans plusieurs TIMEFRAME d’UT/mode différents,
Donc tu ne peux pas définir la variable dans le timeframe principal puis la redéfinir dans le timeframe secondaire.
Pour le deuxième problème, puisque tu affectes 0 à la variable dH4, il est logique qu’à la bougie suivante, ton instruction DEMA te flash cette erreur de période nulle (ligne 20).
08/21/2021 at 4:56 PM #175849Bonjour tous,
je viens de découvrir cette nouvelle possibilité offerte par PRT, qu’est le “MTF”.
J’ai donc essayé et je ne comprends pas bien le résultat.
J’ai comparé trois moyennes exponentielles pour l’unité de temps d’une minute.
- La première sans modifier le timeframe pour la période 8*60 en pensant que ce serait à peu de chose près comme 8 périodes d’une heure avec le timeframe à “1 hour”.
- La deuxième après avoir mis le time frame à 1h, pour 8 unité de temps.
- La troisième après avoir mis le time frame à 2h, pour 8 unité de temps.
Je m’attendais à des marches d’escalier d’une heure ou deux, ou mieux à une ligne brisée, mais pas à ce que l’on voit apparaitre.
Il a des marches d’escaliers et entre chaque marche des calculs intermédiaires que je ne comprends pas…
Est-ce “normal” ? Qu’en pensez-vous?
yj.
P.S. des copies d’écran des quelques lignes de code, de la configuration définissant les couleurs, et du graphique qui en résulte.
08/21/2021 at 4:59 PM #17585108/21/2021 at 5:58 PM #175860Pour avoir des marches d’escalier, il faut utiliser updateonclose. Exemple :
TimeFrame (2 hours, updateonclose)
Et une moyenne exponentille utilise quasiment toutes les données de l’historique vu sa définition. Difficile de voir si les calculs sont identiques ou pas entre un mtf 1h affiché en 1 minute, et sur un graphique en un affichage 1 heure, les resultats sont proches avec 1000 ut 1h et 60000 ut 1 minutes, bien que ce soit qu’une extrapolation non rigoureuse. On peut ajouter un test pour le savoir à partir du compteur de bars affichées en timeframe 1 heure sur le graphique 1 minute. Je l’ai fait quelque part sur prorealtime dans ce forum.
1 user thanked author for this post.
08/22/2021 at 12:40 PM #175910Merci Ginko,
J’ai retesté en faisant plus simple avec:
EH = Average[8*60](close)
TIMEFRAME(1 hour )
E1 = Average[8 ](close)TIMEFRAME(1 hour, updateonclose)
E11 = Average[8 ](close)TIMEFRAME(default)
return EH coloured(255,50,50) as “EH”, E1 coloured(155,160,10)as “E1”,E11 coloured(255,160,10)as “E11”
Les marches d’escalier sont propres avec “updateonclose”.J’aimerais bien connaitre l’algorithme qui fait que les deux graphiques, avec ou sans “updateonclose”, ne se ressemblent pas plus;
Il y a un décalage vertical systématique d’une hauteur de marche, l’un commence là où l’autre finit…
Et puis je ne comprends pas l’origine de ce bruit “haute fréquence” surajouté aux paliers des marches.
De cette nouveauté MTF, j’espérais surtout bénéficier des informations qui correspondent aux différents “timeframe” , je veux dire que à l’unité de temps d’une minute pour beaucoup de titre on n’a pratiquement pas d’historique alors qu’à “1h” la profondeur de l’historique augmente considérablement. Or de changer de time frame dans les calculs des indicateurs, ne change pas l’historique de base , et à une minute si l’on a rien, timeframe ou pas, on a toujours rien… (sur certaines valeurs, quand on a pas une version premium).
Dans des cas simples , comme une moyenne mobile, autant ne pas changer des “timeframe” et se contenter d’augmenter la période , au moins c’est lissé comme on le souhaite.
Il y a cependant sans doute des cas où il ne suffit pas de faire x60 et où le “timeframe 1H” devient indispensable… Mais entre nous je suis un peu déçu…
08/22/2021 at 1:42 PM #175915A propos de #175910, il n’y a pas d’historique en plus avec le MTF. J’espérais la même chose quand c’est sorti, mais vu que ce n’était pas le cas, j’ai gardé une émulation-maison MTF d’avant-sortie que je n’aurai remplacée qu’en cas d’accès à un historique accru.
J’aimerais bien connaitre l’algorithme qui fait que les deux graphiques, avec ou sans “updateonclose”, ne se ressemblent pas plus;
Il y a un décalage vertical systématique d’une hauteur de marche, l’un commence là où l’autre finit…
Dans le MTF de la plateforme, l’updateonclose utilise la clôture précédente de l’ut supérieure sur les bougies d’ut inférieure internes à la bougie de l’ut supérieure en cours, donc pendant tout le développement de la bougie en cours d’ut supérieure cela donne ce que tu appelles une “marche d’escalier” (puisque la valeur reste fixe) qui ne passera à la marche suivante qu’à la première bougie d’ut inférieure qui suivra la nouvelle clôture d’UT supérieure. Sans l’updateonclose, la dernière valeur prise pour l’ut supérieure est le dernier prix courant, ce que tu appelles “bruit” à la place d’une marche correspond au calcul fluctuant avec le parcours intégral du prix entre open et close de la bougie en cours de l’UT supérieure.
Pour revenir sur le post #175849, ce qui marche assez bien dans des cas équipondérés (mm simple, faire période “PER” de l’utsup x60 pour 1h sur 1mn, avec chacune des 60xPER ayant un poids égal) ne marche de toute façon pas dans des cas où la pondération varie (mm exp). En effet mm exp = poids plus gros sur dernière bougie, et poids plus gros sur la toute dernière “petite bougie de PERx60 bougies en petite ut”, s’éloignera trop du calcul avec poids plus gros sur dernière “grosse bougie de PER bougies” en grande UT.
1 user thanked author for this post.
08/22/2021 at 4:06 PM #175919Pojr l’historique, j’avais posé la question sur le forum anglais, et j’avais eu une réponse pour le backtest et les stratégies.
Rien sur les graphiques de base, sinon changer le nombre de barres affichées. Cf https://www.prorealcode.com/topic/multi-timeframe-mtf-indicators-for-prorealtime/page/4/#post-166630
Pour les strategies, c’est le paramètre preloadbars
https://www.prorealcode.com/documentation/preloadbars/
Ensuite pour vérifier les valeurs, je faisais un graphonprice qui fonctionne.
L’intérêt c’est qu’alors je peux calculer un indicateur mtf H1 sur un graphique en 1 minute avec beaucoup d’historique : tout en n’affichant que 2000 barres m1, mais en calculant sur 1000 barres h1 par exemple.
1 user thanked author for this post.
08/22/2021 at 7:50 PM #175940123456789101112@ JC_Bywan : Donc si j'ai bien compris la variation pendant la première minute du graphe "non update" est égale à la variation du cours qui a eu lieu entre -7h et -6h avant.Ensuite mon "bruit" c'est exactement la variation du cours divisée par 8 dans le cas de average(8).Donc ce bruit qui attire l’œil est constitué par des "accidents" d'une minute, correspondant à ce qui s'est passé 7-8 heures avant, accidents qui se poursuivent par une image atténuée du cours évoluant minute par minute.Quelle salade somme toute...@ Ginko : je ne maîtrise pas assez PRT pour comprendre ce que signifie:"<em>je faisais un graphonprice qui fonctionne.</em>"J'ai l'impression qu'il s'agit d'une astuce permettant de:<em>"calculer un indicateur mtf H1 sur un graphique en 1 minute avec beaucoup d’historique : tout en n’affichant que 2000 barres m1, mais en calculant sur 1000 barres h1 par exemple."</em>Si c'est bien ça, cela m'intéresserait beaucoup mais cela reste mystérieux pour moi...Merci pour vos réponses soigneuses. yj. -
AuthorPosts
Find exclusive trading pro-tools on