Bonjour,
je recherche un screener permettant de retourner les titres qui ont un GAP daily non comblé avec les caractéristiques suivantes :
- GAP ouvert depuis X jours
- Distance entre le bas et le haut de GAP > à Y%
J’ai cherché et essayé en vain de la coder pour le moment.
Si quelqu’un a une idée je suis preneur, merci
Bonjour,
à faire tourner en UT jour, modifier X et Y en début de code selon besoin
X=20// nombre de jours, pour code tournant sur UT jour
Y=1 // pour Y/100 pourcentage mini du gap
gapH= low>high[1]
GapB= high<low[1]
gapY= (gapH and (low-high[1])/high[1]>Y/100) or (gapB and (low[1]-high)/low[1]>Y/100)
if gapY then
barregapY=barindex
endif
gapXY= barindex-barregapY < X
SCREENER [ gapXY ]
Bonjour,
merci pour cette réponse rapide. En regardant de plus près, je pense que ce screener retourne tous les GAP sur la période définie même si ils ont été comblé.
J’ai par exemple ASML qui est retourné pour son gap entre le 05/01 et 06/01 et pourtant il a été comblé dès 07/01.
J’ai bien essayé de faire une boucle ensuite pour vérifier si ils sont ou pas comblé mais je n’ai pas réussi.
Qu’en pensez-vous ?
J’en pense que vous avez totalement raison, ma faute, j’ai beau être dans une journée “codage” sans trading qui aurait accaparé mon attention, je suis en fait trop porté sur la mise à jour de mon volume profile ce jour, et j’ai lu votre message beaucoup trop vite je n’ai pas fait attention au “non comblé”, mea culpa.
Dans la même veine d’avoir lu trop vite, en relisant, je me demande si je n’ai pas fait aussi une erreur d’interprétation du “depuis X jours”, je l’ai pris comme un maximum en arrière, mais peut-être était-ce l’inverse: ne chercher que les gaps ayant un minimum d’ancienneté? (ça changerait juste le <X en >X en ligne 25).
A tester pour voir si les comblements sont correctement détectés:
X=20// nombre de jours, pour code tournant sur UT jour
Y=1 // pour Y/100 pourcentage mini du gap
gapH= low>high[1]
GapB= high<low[1]
gapY= (gapH and (low-high[1])/high[1]>Y/100) or (gapB and (low[1]-high)/low[1]>Y/100)
if gapY then
barregapY=barindex
if gapH then
Hnoncomb=1
Hcombler=high[1]
elsif gapB then
Bnoncomb=1
Bcombler=low[1]
endif
endif
if Hnoncomb and lowest[barindex-barregapY+1](low)<=Hcombler then
Hnoncomb=0
endif
if Bnoncomb and highest[barindex-barregapY+1](high)>=Bcombler then
Bnoncomb=0
endif
gapXY= (barindex-barregapY < X) and (Hnoncomb or Bnoncomb)
SCREENER [ gapXY ]
Merci encore pour cette réactivité 🙂
Concernant le “depuis X jours”, votre interprétation est la bonne.
J’ai fait un test rapide à priori, il me retourne encore des titres avec des GAP comblés (ASML), je vais essayer de comprendre pourquoi.
Ok je vois pourquoi, c’est le gap h du 21/07 non comblé sur ASML, mélangé au gap b comblé mais récent du 06/07, et en ligne 25 le tout mélangé renvoie un positif qui ne devrait pas l’être, je vais éliminer ça en disant au code d’oublier les “non comblés” plus vieux que X pour ne pas être parasité par un trop vieux Hnoncomb ou Bnoncomb qui n’est pas passé à zéro par comblement.
En séparant mieux les H et les B pour éviter l’erreur qui retournait ASML, et en espérant qu’on va pas tomber sur une nouvelle erreur (débugguer, ça s’apparente toujours au panneau des passages à niveau, “un bug peut en cacher un autre”):
X=20// nombre de jours, pour code tournant sur UT jour
Y=1 // pour Y/100 pourcentage mini du gap
gapH= low>high[1] and (low-high[1])/high[1]>Y/100
gapB= high<low[1] and (low[1]-high)/low[1]>Y/100
if gapH then
barregapH=barindex
Hnoncomb=1
Hcombler=high[1]
elsif gapB then
barregapB=barindex
Bnoncomb=1
Bcombler=low[1]
endif
if (Hnoncomb and lowest[barindex-barregapH+1](low)<=Hcombler) then
Hnoncomb=0
endif
if Bnoncomb and highest[barindex-barregapB+1](high)>=Bcombler then
Bnoncomb=0
endif
gapXY= (Hnoncomb and barindex-barregapH < X) or (Bnoncomb and barindex-barregapB < X)
SCREENER [ gapXY ]
Bravo !
Mes premiers tests sont concluants, je regarderai de plus près dans la semaine si il y’a d’éventuels cas particuliers non traités.
Merci.
Bonjour,
J’aimerai adapter ce screener a un indicateur graphique, par example mettre un “G” en rouge sur le graphique lorsqu’il existe un Gap baissier non comblé et un “G” en vert lorsqu’il existe un Gap haussier non comblé
J’ai essayé mais je ne suis pas encore assez aguéri pour faire ce genre de code..
Merci pour votre aide
Bonjour,
Voici, même principe de régler X et Y en début de code (ou de l’externaliser comme paramètre d’entrée de l’indic ajustable dans sa fenêtre de propriétés), la position souhaitée du G n’étant pas précisée, je l’ai mis horizontalement sur la barre du gap, et verticalement sur le niveau à combler.
X=20//100// nombre de jours, pour code tournant sur UT jour
Y=1//0.1 // pour Y/100 pourcentage mini du gap
gapH= low>high[1] and (low-high[1])/high[1]>Y/100
gapB= high<low[1] and (low[1]-high)/low[1]>Y/100
if gapH then
barregapH=barindex
Hnoncomb=1
Hcombler=high[1]
elsif gapB then
barregapB=barindex
Bnoncomb=1
Bcombler=low[1]
endif
if (Hnoncomb and lowest[barindex-barregapH+1](low)<=Hcombler) then
Hnoncomb=0
endif
if Bnoncomb and highest[barindex-barregapB+1](high)>=Bcombler then
Bnoncomb=0
endif
if (Hnoncomb and barindex-barregapH < X) then
DRAWTEXT("G", barregapH, Hcombler) coloured(0,255,0)
endif
if (Bnoncomb and barindex-barregapB < X) then
DRAWTEXT("G", barregapB, Bcombler) coloured(255,0,0)
endif
return
Bonjour,
merci pour ce screener qui doit être très utile mais malheureusement, j’ai un message d’erreur ligne 25 et 26 :
DRAWTEXT(“G”, barregapH, Hcombler) coloured(0,255,0)
endif
Pouvez avoir la gentillesse de m’aider svp ?
Merci et bonne soirée
Bonjour,
dans le fil de discussion il y’a un screener et un indicateur.
Dans votre cas, vous essayez d’utiliser le code de l’indicateur comme un screener.
Instruction :
“SCREENER ” -> c’est un screener
“DRAWTEXT” -> c’est un indicateur
Bonne journée.
Bonjour et merci pour ce retour rapide.
cela ne fonctionne pas en remplaçant le texte… je ne dois pas comprendre, désolé.
Belle journée
Pour le screener, c’est le code ci-dessous qu’il faut utiliser :
X=20// nombre de jours, pour code tournant sur UT jour
Y=1 // pour Y/100 pourcentage mini du gap
gapH= low>high[1] and (low-high[1])/high[1]>Y/100
gapB= high<low[1] and (low[1]-high)/low[1]>Y/100
if gapH then
barregapH=barindex
Hnoncomb=1
Hcombler=high[1]
elsif gapB then
barregapB=barindex
Bnoncomb=1
Bcombler=low[1]
endif
if (Hnoncomb and lowest[barindex-barregapH+1](low)<=Hcombler) then
Hnoncomb=0
endif
if Bnoncomb and highest[barindex-barregapB+1](high)>=Bcombler then
Bnoncomb=0
endif
gapXY= (Hnoncomb and barindex-barregapH < X) or (Bnoncomb and barindex-barregapB < X)
SCREENER [ gapXY ]