Concordance Screener et indicateur
Forums › ProRealTime forum Français › Support ProScreener › Concordance Screener et indicateur
- This topic has 22 replies, 2 voices, and was last updated 2 years ago by InTrouble.
-
-
09/01/2022 at 12:34 PM #200017
Bonjour,
J’ai élaboré un indicateur de suivi de tendance et je l’ai transformé en screener pour identifier des opportunités et j’ai une grosse difficulté.
En affichant mon indicateur sur le graphique sélectionné depuis le screener, je m’attendais à retrouver sur la dernière barre du graphique (même UT), la même valeur sur l’indicateur et sur le screener : mais non ! La valeur du screener ne correspond jamais à ma valeur d’indicateur sur la dernière barre !
Est-on d’accord que je devrais trouver la même valeur ? Si oui, quelle type d’erreur je pourrais commettre ?
Merci
09/01/2022 at 3:38 PM #200023Il peut y avoir plusieurs raisons à cela:
- compte gratuit avec données fin de journée (donc résultat de la veille uniquement dans le screener)
- calcul d’indicateurs avec une période supérieur à l’historique disponible dans ProScreener (dépend du type de compte)
- indicateurs/conditions basés sur une accumulation de données (donc sans période), si historique différent, alors résultat différent
09/01/2022 at 4:26 PM #200028Merci de ces retours, la situation :
- compte gratuit avec données fin de journée (donc résultat de la veille uniquement dans le screener)
- => Compte gratuit, mais j’ouvre une fenêtre graphique depuis le screener, les prix sont bien suivis de “(c)” mais ce prix est effectivement celui de la dernière bar de mon graphique : le mystère me semble entier.
- calcul d’indicateurs avec une période supérieur à l’historique disponible dans ProScreener (dépend du type de compte)
- => Le calcul de l’indicateur est effectué sans changement d’UT
- indicateurs/conditions basés sur une accumulation de données (donc sans période), si historique différent, alors résultat différent
- => Je ne suis pas sur de comprendre “Donc sans période”. .. j’utilise simplement (defparam drawonlastbaronly=true
defparam calculateonlastbars=1000)
- => Je ne suis pas sur de comprendre “Donc sans période”. .. j’utilise simplement (defparam drawonlastbaronly=true
09/02/2022 at 9:41 AM #20004409/02/2022 at 12:51 PM #200057Je simplifie le pb, je prends votre code de “zigzagAverage” publié le 30/05/2018, et je l’utilise à la fois en indicateur et en screeneur.
1234567...peak = ZigZag[Percentage](high)trough = ZigZag[Percentage](low)if peak<peak[1] and peak[1]>peak[2] thenlast=1endif...Je suis sur une UT 1 jour, en mode gratuit, je vous affiche le screener et le graphique ouvert depuis le screener de la 3ème ligne, KERING.
On voit bien que la valeur ‘dernier’ est la même sur le graphique et sur le screener (492,2) mais que la valeur ‘critère’ est différente (549,9 dans le screener, et 536,56 dans le graphique), alors qu’il s’agit du même code et de la même variable utilisée (Screener (mm) vs return mm coloured(r,g,b) style(line,2)).
Avec ce code aussi , j’ai un écart. A quoi est-il dû ? Comment y remédier ?
09/04/2022 at 5:08 PM #200124On tombe dans le cas n°3 évoqué plus haut. Puisqu’on calcule une variation du prix en pourcentage depuis le début de l’historique, si on commence plus tôt (graphique) que sur le screener, alors la variation ne sera pas la même, d’où la constatation d’un écart.
Exemple: si je mesure la variation du CAC40 depuis Janvier 2022, elle ne sera pas la même si je la mesure depuis Mars 2022 et c’est ce que tu fais avec ton screener.
09/05/2022 at 8:25 AM #20013909/05/2022 at 9:58 AM #200144Selon ton type de compte, la quantité d’historique est la suivante:
- IG demo/complete = 255
- IG réel complete = 255
- PRT trading premium = 1024
- PRT soft complete = 255
On peut le tester avec un code comme celui-ci:
1screener (barindex as "historique")Donc mettre en corrélation le nombre d’unités affiché sur le graphique pour obtenir une meilleure correspondance.
09/05/2022 at 1:40 PM #20017409/07/2022 at 12:44 PM #200305Toujours de difficultés à résoudre mon point :
Je suis donc à 255 barres pour mon screener en mode gratuit.
Pour le calcul de mon indicateur, je limite mon nombre de barres avec calculateonlastbars = 255 et une boucle : for i= 1 to 255 do …
Mais j’ai toujours un écart entre le screener et l’indicateur
09/07/2022 at 5:30 PM #20032209/08/2022 at 9:59 AM #200348Voici les codes Indicateur et screener :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121// INDICdefparam drawonlastbaronly=truedefparam calculateonlastbars=1000// --- settingsParamZigZag = 5 //zigzag percentActualy = CloseCoeffOrdreImminent = ParamZigZag / 100 * ActualyCoeffRetournementMini = 2CoeffTendanceClaire = 2CoeffPertinenceSignal = 1.5lookback = 255 //max history lookback : for inc= 1 to lookback do// --- end of settings//zz s/rzz = ZigZag [ParamZigZag] (customclose)p = zz<zz[1] and zz[1]>zz[2]t = zz>zz[1] and zz[1]<zz[2]if p thentopl = zz[1]endifif t thenbottoml = zz[1]endify0 = Closeinc=1for i= 1 to lookback doif p[i] thenif inc = 1 thentopy1 = topl [i]topx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thentopy2 = topl [i]topx2 = barindex [i]-1inc = 3Endifendifnextinc = 1for i= 1 to lookback doif t[i] thenif inc = 1 thenbottomy1 = bottoml [i]bottomx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thenbottomy2 = bottoml [i]bottomx2 = barindex [i]-1inc = 3Endifendifnext// Achat ou Vente ?if bottomx1<topx1 thenDirection = -1ElseDirection = 1EndifOrdre=0Ordre1=0Ordre2=0Ordre3=0Ordre4=0// Imminence d'un ordreif Direction = 1 thenActualGap = topy1-Actualy // >0ElseActualGap = Actualy-bottomy1 // >0EndifIf (ActualGap>0) and (abs(ActualGap)< CoeffOrdreImminent) thenOrdre1 = 0.25endif//Ordre1 = ActualGap// Signal significatifif Direction = 1 thenHeightofPic = topy1 -0.5 * (bottomy1+bottomy2) // >0ElseHeightofPic = 0.5 * (topy1+topy2) - bottomy1 // >0Endif//Ordre2 = HeightofPicIf HeightofPic > (CoeffRetournementMini * ParamZigZag/100 * Actualy) thenOrdre2 = 0.5endif// Tendance ClaireTopGap = topy1-topy2 // >0 si direction=1BottomGap = bottomy1-bottomy2 // >0 si direction=1//If ((Direction=1) And(TopGap*BottomGap >0 ) And (BottomGap> CoeffTendanceClaire *TopGap) ) Or ((Direction=-1) And(TopGap*BottomGap >0 ) And (TopGap< CoeffTendanceClaire *BottomGap) ) thenIf ((Direction=1) And(TopGap*BottomGap >0 ) And (TopGap>0)) Or ((Direction=-1) And(TopGap*BottomGap >0) And (TopGap<0)) thenOrdre3 = 0.75endif// Signal toujours pertinentIf ((direction =1 ) AND ((barindex[0] - bottomx1) < CoeffPertinenceSignal* (bottomx1-bottomx2))) thenordre4 = 0.2elsif ((direction= -1) AND ((barindex[0] - topx1) < CoeffPertinenceSignal* (topx1-topx2))) thenordre4=0.2endif//Endif//Endif//Endif//Return Direction As "Direction",//Return bottomx1 As "bx1", bottomx2 As "bx2", topx1 As "tx1", topx2 As "tx2"//Return barindex[0]-Bottomx1 as "bx1", CoeffPertinenceSignal* (bottomx1-bottomx2) as "compare"//Return Direction As "Direction", Ordre1 As "ActualGap", Ordre2 As "HeightofPic", Ordre3 As "Tendance claire", Ordre4 As " Tjrs pertinent"Ordre = Ordre1+Ordre2+Ordre3+Ordre4Return Ordre123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118// SCREENER//defparam drawonlastbaronly=true//defparam calculateonlastbars=255// --- settingsParamZigZag = 5 //zigzag percentActualy = CloseCoeffOrdreImminent = ParamZigZag / 100 * ActualyCoeffRetournementMini = 2//CoeffTendanceClaire = 2CoeffPertinenceSignal = 1.5lookback = 255 //max history lookback : for inc= 1 to lookback do// --- end of settings//zz s/rzz = ZigZag [ParamZigZag] (customclose)p = zz<zz[1] and zz[1]>zz[2]t = zz>zz[1] and zz[1]<zz[2]if p thentopl = zz[1]endifif t thenbottoml = zz[1]endif//y0 = Closeinc=1for i= 1 to lookback doif p[i] thenif inc = 1 thentopy1 = topl [i]topx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thentopy2 = topl [i]topx2 = barindex [i]-1inc = 3Endifendifnextinc = 1for i= 1 to lookback doif t[i] thenif inc = 1 thenbottomy1 = bottoml [i]bottomx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thenbottomy2 = bottoml [i]bottomx2 = barindex [i]-1inc = 3Endifendifnext// Achat ou Vente ?if bottomx1<topx1 thenDirection = -1ElseDirection = 1EndifOrdre=0Ordre1=0Ordre2=0Ordre3=0Ordre4=0// Imminence d'un ordreif Direction = 1 thenActualGap = topy1-Actualy // >0ElseActualGap = Actualy-bottomy1 // >0EndifIf (ActualGap>0) and (abs(ActualGap)< CoeffOrdreImminent) thenOrdre1 = 0.25endif//Ordre1 = ActualGap// Signal significatifif Direction = 1 thenHeightofPic = topy1 -0.5 * (bottomy1+bottomy2) // >0ElseHeightofPic = 0.5 * (topy1+topy2) - bottomy1 // >0Endif//Ordre2 = HeightofPicIf HeightofPic > (CoeffRetournementMini * ParamZigZag/100 * Actualy) thenOrdre2 = 0.5endif// Tendance ClaireTopGap = topy1-topy2 // >0 si direction=1BottomGap = bottomy1-bottomy2 // >0 si direction=1//If ((Direction=1) And(TopGap*BottomGap >0 ) And (BottomGap> CoeffTendanceClaire *TopGap) ) Or ((Direction=-1) And(TopGap*BottomGap >0 ) And (TopGap< CoeffTendanceClaire *BottomGap) ) thenIf ((Direction=1) And(TopGap*BottomGap >0 ) And (TopGap>0)) Or ((Direction=-1) And(TopGap*BottomGap >0) And (TopGap<0)) thenOrdre3 = 0.75endif// Signal toujours pertinentIf ((direction =1 ) AND ((barindex[0] - bottomx1) < CoeffPertinenceSignal* (bottomx1-bottomx2))) thenordre4 = 0.2elsif ((direction= -1) AND ((barindex[0] - topx1) < CoeffPertinenceSignal* (topx1-topx2))) thenordre4=0.2endif//Endif//Endif//EndifOrdre= Ordre1+Ordre2+Ordre3+Ordre4//Ordre = Ordre3Screener (Ordre As "Zone d'Achat/Vente")//Return Direction As "Direction", Ordre1 As "ActualGap", Ordre2 As "HeightofPic", Ordre3 As "Tendance claire", Ordre4 As " Tjrs pertinent"09/12/2022 at 8:34 AM #20059309/12/2022 at 9:14 AM #20059409/13/2022 at 1:22 PM #200700Bonjour , voici une version courte : indicateur et screener sont à “1” lorsque les 2 derniers sommets vont dans le même sens (vers le haut ou vers le bas) que les 2 derniers creux/
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667// SCREENER// --- settingsParamZigZag = 5 //zigzag percentlookback = 255 //max history lookback : for inc= 1 to lookback dozz = ZigZag [ParamZigZag] (customclose)p = zz<zz[1] and zz[1]>zz[2]t = zz>zz[1] and zz[1]<zz[2]if p thentopl = zz[1]endifif t thenbottoml = zz[1]endifinc=1for i= 1 to lookback doif p[i] thenif inc = 1 thentopy1 = topl [i]topx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thentopy2 = topl [i]inc = 3Endifendifnextinc = 1for i= 1 to lookback doif t[i] thenif inc = 1 thenbottomy1 = bottoml [i]bottomx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thenbottomy2 = bottoml [i]inc = 3Endifendifnext// Achat ou Vente ?if bottomx1<topx1 thenDirection = -1ElseDirection = 1EndifOrdre=0// Tendance ClaireTopGap = topy1-topy2 // >0 si direction=1BottomGap = bottomy1-bottomy2 // >0 si direction=1If ((Direction=1) And(TopGap*BottomGap >0 ) And (TopGap>0)) Or ((Direction=-1) And(TopGap*BottomGap >0) And (TopGap<0)) thenOrdre = 1endifScreener( Ordre)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667// INDICdefparam drawonlastbaronly=truedefparam calculateonlastbars=256// --- settingsParamZigZag = 5 //zigzag percentlookback = 255 //max history lookback : for inc= 1 to lookback dozz = ZigZag [ParamZigZag] (customclose)p = zz<zz[1] and zz[1]>zz[2]t = zz>zz[1] and zz[1]<zz[2]if p thentopl = zz[1]endifif t thenbottoml = zz[1]endifinc=1for i= 1 to lookback doif p[i] thenif inc = 1 thentopy1 = topl [i]topx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thentopy2 = topl [i]inc = 3Endifendifnextinc = 1for i= 1 to lookback doif t[i] thenif inc = 1 thenbottomy1 = bottoml [i]bottomx1 = barindex [i]-1inc = inc + 1elsif inc = 2 thenbottomy2 = bottoml [i]inc = 3Endifendifnext// Achat ou Vente ?if bottomx1<topx1 thenDirection = -1ElseDirection = 1EndifOrdre=0// Tendance ClaireTopGap = topy1-topy2 // >0 si direction=1BottomGap = bottomy1-bottomy2 // >0 si direction=1If ((Direction=1) And(TopGap*BottomGap >0 ) And (TopGap>0)) Or ((Direction=-1) And(TopGap*BottomGap >0) And (TopGap<0)) thenOrdre = 1endifReturn Ordre -
AuthorPosts
Find exclusive trading pro-tools on