Tracé de segment entre les highs
Forums › ProRealTime forum Français › Support ProBuilder › Tracé de segment entre les highs
- This topic has 5 replies, 3 voices, and was last updated 1 year ago by JC_Bywan.
-
-
05/29/2023 at 9:33 PM #215368
Bonjour Nicolas, JC, et tous,
Je solicite votre aide et vous expose mon problème.
Ma condition = si mon high et plus grand que les 5 précedentes bougies et les 5 suivantes.
Je souhaite que :
– si ma condition est detectée, alors mon “index” = 1.
– si un plus haut se créé alors je récupère le barindex de la bougie pour mon tracé de segment et mon “index” = 2
– si une nouvelle condition se créé et alors que mon dernier index est égal à 1, alors le précedent “index” est égal à 0.A force d’avoir fait et refait, j’ai fini par m’y perdre et patauger dans un code sale…
1234567891011121314151617181920212223242526272829303132333435CinqDernierhaut=highest[5](high)MonPointHaut = high[5]>CinqDernierhaut[6] and CinqDernierhaut<=high[5]indexH=0if MonPointHaut theni = i+1//count = count+1$EQHBar[i] = barindex[5]$EQH[i] = high[5]$index[i] = indexH +1$EQHBarCourante[i] = barindexendifIF islastbarupdate then//IF $index[i] =1 then//$EQHBarCourante[i] = barindexFor p=0 to icc=$index[p]DrawSegment($EQHBar[p],$EQH[p],$EQHBarCourante[p],$EQH[p])Style(DottedLine,3)Coloured(0,150,0,255)DrawText("#cc#",$EQHBarCourante[p],$EQH[p]) coloured(0,0,0,255)NEXT//hh=$index[i]ENDIFQuelqu’un pourrait-il m’aider à avancer sur cet indicateur svp?
Voir la capture pour plus de clarté sur l’attendu.
05/30/2023 at 1:15 AM #215378J’avance !
Il me reste à definir : Si la condition se recrée alors que “l’index” précédent est égal à 1 alors il faut le passer à 0 !
Voir exemple sur la captur pour l’attendu.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647CinqDernierhaut=highest[5](high)MonPointHaut = high[5]>CinqDernierhaut[6] and CinqDernierhaut<=high[5]indexH=0if MonPointHaut thencount = count+1//count = count+1$EQHBar[count] = barindex[5]$EQH[count] = high[5]//$index[count] = indexH +1$EQHBarCourante[count] = barindex//monindexH = $index[count]$monindexH[count] = 1endifIF islastbarupdate thenfor i = 0 to lastset($EQHBar)for j = $EQHBar[i]+1 to barindexif close[barindex[j]] >= $EQH[i] then$EQHBarCourante[i] = barindex-barindex[j]$monindexH[i] = 2breakendifnextnextfor i = 1 to lastset($EQHBar) domonindexH = $monindexH[i]if $monindexH[i]=2thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i])Style(DottedLine,3)Coloured(0,150,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(0,0,0,255)elsif $monindexH[i]=1 thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i])Style(DottedLine,3)Coloured(150,150,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(0,0,0,255)else//DrawSegment($EQHBar[i],$EQH[i],barindex,$EQH[i])Style(DottedLine,3)Coloured(0,150,0,255)endifnextENDIFENDIF05/30/2023 at 12:46 PM #215439Si j’ai bien compris, dans ta boucle lorsqu’on fait : $monindexH[i] = 2 alors on passe la valeur de la colonne précédente à 1, si oui voilà ce que ça donne :
1234567891011121314151617181920212223242526272829303132333435363738394041424344CinqDernierhaut=highest[5](high)MonPointHaut = high[5]>CinqDernierhaut[6] and CinqDernierhaut<=high[5]indexH=0if MonPointHaut thencount = count+1//count = count+1$EQHBar[count] = barindex[5]$EQH[count] = high[5]//$index[count] = indexH +1$EQHBarCourante[count] = barindex//monindexH = $index[count]$monindexH[count] = 1endifIF islastbarupdate thenfor i = 1 to lastset($EQHBar)for j = $EQHBar[i]+1 to barindexif close[barindex[j]] >= $EQH[i] then$EQHBarCourante[i] = barindex-barindex[j]$monindexH[i] = 2$monindexH[i-1]=0breakendifnextnextfor i = 1 to lastset($EQHBar) domonindexH = $monindexH[i]if $monindexH[i]=2thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i])Style(DottedLine,3)Coloured(0,150,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(0,0,0,255)elsif $monindexH[i]=1 thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i])Style(DottedLine,3)Coloured(150,150,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(0,0,0,255)else//DrawSegment($EQHBar[i],$EQH[i],barindex,$EQH[i])Style(DottedLine,3)Coloured(0,150,0,255)endifnextENDIFreturn05/30/2023 at 3:33 PM #215443Merci Nicolas pour ton retour,
Ce n’est pas tout a fait ça mais cette syntaxe m’a mis sur la voie sans parvenir pour autant à l’attendu :
1$monindexH[i-1]=0J’ai donc tester cette logique mais sans resultat non plus :
123if $monindexH[j]=1 and $monindexH[j-1]=1 then$monindexH[i-1]=0endifJe souhaite que si un index=1 se materialise et que le precedent index[1] =1 (donc n’as pas vue de high le surpasser alors on l’élimine) alors le precedent index[1] passe à 0.
Est-ce plus clair pour toi ?
06/01/2023 at 11:03 AM #21554606/05/2023 at 6:47 PM #215672Bjr, à tester:
123456789101112131415161718192021222324252627282930313233343536373839404142once count=0CinqDernierhaut=highest[5](high)MonPointHaut = high[5]>CinqDernierhaut[6] and CinqDernierhaut<=high[5]//indexH=0if MonPointHaut thencount = count+1$EQHBar[count] = barindex[5]$EQH[count] = high[5]//$index[count] = indexH +1$EQHBarCourante[count] = barindex//monindexH = $index[count]$monindexH[count] = 1if $EQH[count]<$EQH[count-1] then$monindexH[count-1] = 0elsif $EQH[count]>$EQH[count-1] then$monindexH[count] = 2endifendifIF islastbarupdate thenfor i = 1 to lastset($EQHBar) domonindexH = $monindexH[i]if $monindexH[i]=2 thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i] )Style(DottedLine,3) Coloured(0,200,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(0,200,0,255)elsif $monindexH[i]=1 thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i]) Style(DottedLine,3) Coloured(150,150,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(150,150,0,255)elsif $monindexH[i]=0 thenDrawSegment($EQHBar[i],$EQH[i],$EQHBarCourante[i],$EQH[i]) Style(DottedLine,3) Coloured(250,0,0,255)DrawText("#monindexH#",$EQHBarCourante[i],$EQH[i]) coloured(250,0,0,255)endifnextENDIFreturn -
AuthorPosts
Find exclusive trading pro-tools on