Bonjour,
Un petit code pour identifier les Gaps.
je me lance dans le codage, donc désolé s’il n’est pas optimisé.
J’ai rencontré un problème pour mettre a 0 la valeur dans un tableau ( cas du gap qui se clôture )
Une idée pour ne pas recalculer une variable d’un tableau si celui ci a déjà été remis a zéro
/////////variables
historique = 700
Gapmini = 100
////////////
Hjour = high
Bjour= low
if dclose(1)<>lastclose then //new day begin
jour = lastset($ferm)+1
$ferm[jour] = dclose(1)
$ouv[jour] = dopen(0)
$jour[jour] = barindex
ferm = $ferm[jour]
ouv= $ouv[jour]
if ouv > ferm and ouv-ferm>gapmini then //////// gap et valeur gap
$gap[jour]=1
else
if ouv-ferm<-gapmini then
$gap[jour]= -1
endif
endif///////////////////////////////////////////////////////////////////////////
lastclose = dclose(1) //save the current Dclose(1) value to future check of new day
endif
if jour>historique then
for i = 0 to historique
fermI = $ferm[jour-i]
ouvI = $ouv[jour-i]
JourI = $jour[jour-i]
gapi =$gap[jour-i]
if high>fermI then/////////////////////////////////////fin gap baissier
$gapbaissier[jouri]=0
endif
if gapi=-1 and high<fermI then //////// gap Baissier
///////////////////////////////////////
$gapbaissier[jouri]=1+$gapbaissier[jouri]
gapbaissier=$gapbaissier[jouri]
$jj[i] = jour-jouri+1
jj=$jj[i]
closegap = jj-gapbaissier
//////////////////////////////////////////////
if closegap <1 then
DRAWSEGMENT(jouri, fermi, barindex+1, fermi)coloured(255,180,180)
DRAWRECTANGLE(jouri, fermi, barindex, ouvi)coloured(250,0,0,20) bordercolor(250,0,0,20)
if high>fermI then
gapbaissier=0
endif
endif
endif
/////////////////////////////////////////////////////////////////////////////////
if low<fermI then/////////////////////////////////////fin gap haussier
$gaphaussier[jouri]=0
endif
if gapi=1 and low>fermI then //////// gap haussier
///////////////////////////////////////
$gaphaussier[jouri]=1+$gaphaussier[jouri]
gaphaussier=$gaphaussier[jouri]
$jj[i] = jour-jouri+1
jj=$jj[i]
closegap = jj-gaphaussier
//////////////////////////////////////////////
if closegap <1 then
DRAWSEGMENT(jouri, fermi, barindex+1, fermi)coloured(255,180,180)
DRAWRECTANGLE(jouri, fermi, barindex, ouvi)coloured(0,0,255,20) bordercolor(0,0,255,20)
if high>fermI then
gaphaussier=0
endif
endif
endif
Next
endif
return
?
Ha , fonctionne sur un graph cash exclusivement , je n ai pas intégré les horaires ouvertures et fermetures des marchés
une copie ecran du code ….
On ne peut pas “unset” un index dans un tableau, mais on peut lui affecter une valeur arbitraire comme zéro pour indiquer qu’elle ne contient aucune information valable. Donc quand ton gap est comblé pour l’index N, effacer sa valeur en la remplaçant avec 0, ainsi dans sa boucle de détection tu pourras sauter cet index.