Merci Nicolas pour ces encouragements ; -)
pour le 1/
=> j’ai rajouté une boucle et un test pour éviter de se retrouver avec des bas plus bas que BC dans la partie de la figure entre BC (Bottom Cup) et LC ( Left Cup)
Pour le 2/
=> il faudrait faire la même chose mais le cas est très peu présent sur les screeners donc pour l’instant je laisse en l’état
Pour le 3/
=> comment ferais-tu pour inclure une condition qui vérifie que les volumes augmentent entre BC et LH (Left Handle) et qu’ils diminuent entre LH et BC ? (c’est la partie grisée dans le code qui donne alpha et beta)
Cheers,
Chris
BCTest = low[indexBC]
For mm =IndexBC to IndexLC do
if low[mm+1]> BC then
BCTest = BCTest
elsif low[mm+1]< BC then
BCTest = low[mm+1]
//IndexBCTest = mm+1
endif
Next
.......
screener [NLH > 2 AND Close>BH AND BC<LC and BCTest>= BC AND BC<LH AND BH<LH AND LC>0.97*LH AND LC < 1.03*LH AND delta>1 AND BH>0.8*LH AND BH>BC AND MinPrice AND MinVolume AND AmplitudeMax](IndexLH as "rang")// and beta> 1 AND alpha > 1
Timeframe (daily)
MinPrice= close > 2.5 and close < 50
MinVolume= average[23](Volume) > 100000
// LEFT HANDLE///////////////////////
LH = highest[24](high)
For i = 0 to 24 do
if high[i] = LH then
indexLH = i
break
endif
Next
//BOTTOM HANDLE///////////////////////
BH = lowest[1+indexLH](low)
For j = 0 to indexLH do
if low[j] = BH then
IndexBH = j
break
endif
Next
NLH=IndexLH-IndexBH
// BOTTOM CUP/////////////////////////
BC = low[indexLH]
For k = indexLH to IndexLH+25 do
if low[k+1] > BC then
indexBC = indexBC
elsif low[k+1] < BC then
BC = low[k+1]
IndexBC = k+1
endif
Next
// LEFT CUP
LC = high[indexBC]
For m =IndexBC to IndexBC+145 do
if high[m+1]< LC then
LC = LC
elsif high[m+1]> LC then
LC = high[m+1]
IndexLC = m+1
endif
Next
BCTest = low[indexBC]
For mm =IndexBC to IndexLC do
if low[mm+1]> BC then
BCTest = BCTest
elsif low[mm+1]< BC then
BCTest = low[mm+1]
//IndexBCTest = mm+1
endif
Next
// LEFT OF THE CUP
KC = low[indexLC]
For n= IndexLC to IndexLC + 50 do
if low[n+1]> KC then
KC = KC
elsif low[n+1] < KC then
KC = low[n+1]
endif
Next
Delta= LC/KC
AmplitudeMax = Max(LC,LH)/BC<1.3
//DRPV1=0
//URPV1=0
//
//
//For o=IndexBC downto IndexLH do
//
//If Close[o+1] < Close[o] then
//URPV1 = Volume[o]*(Close[o]- Close[o+1])+URPV1
//else
//UPRV1=UPRV1
//endif
//
//If Close[o] < Close[o+1] then
//DRPV1 = Volume[o]*(Close[o+1]-Close[o])+DRPV1
//
//else
//DRPV1 = DRPV1
//endif
//
//Next
//
//Alpha = URPV1/DRPV1 // Should be >1
////
//// Calculate Beta
//DRPV2=0
//URPV2=0
//
////
//For p=IndexLH downto IndexBH do
//If Close[p+1] > Close[p] then
//URPV2 = Volume[p]*(Close[p+1]-Close[p])+URPV2
//
//else
//URPV2=URPV2
//endif
//
//If Close[p+1]< Close[p] then
//DRPV2 = Volume[p+1]*(Close[p+1]-Close[p])+DRPV2
//
//else
//DRPV2=DRPV2
//endif
//Next
//
//Beta = DRPV2/URPV2
//Gamma = log(Alpha) + log(Beta) + delta
screener [NLH > 2 AND Close>BH AND BC<LC and BCTest>= BC AND BC<LH AND BH<LH AND LC>0.97*LH AND LC < 1.03*LH AND delta>1 AND BH>0.8*LH AND BH>BC AND MinPrice AND MinVolume AND AmplitudeMax](IndexLH as "rang")// and beta> 1 AND alpha > 1
=> comment ferais-tu pour inclure une condition qui vérifie que les volumes augmentent entre BC et LH (Left Handle) et qu’ils diminuent entre LH et BC ? (c’est la partie grisée dans le code qui donne alpha et beta)
Une simple comparaison supérieur / inférieur entre les données des Volume à ces instants.
Bonsoir la file,
Je vois ce soir Bureau veritas comme candidat possible à une TA ou mieux ETEI , le screener me renvoie 10 valeurs
Ya encore du boulot pour affiner le screener
Bon courage Kris75 et merci pour le partage
Je joins le graphe simplifié de Bureau Veritas
Bonsoir,
De retour de congé, je constate des progrès significatifs dans le codage. Bravo !
@Kris75 : le code qui précède est-il dans sa dernière version ?
Mon propos est de le comparer à l’article de 1998 à son origine d’une part, mais également à l’article suivant cité dans la file au début, article qui date de 2001 et modifie certains paramètres. Notamment pour essayer de répondre aux questions en suspens.
M.
Hello Roberma,
oui il faut prendre le dernier code posté ; enjoy et toutes les remarques/idées sont bienvenues 😉
On peut commencer à suivre Arkema que nous retourne le screener …
Bonsoir,
Depuis le 10.08 Arkema a pris + 3.1 % depuis le plus bas formant la deuxieme épaule
et Bureau Veritas a pris + 1.5 % ayant du mal à former la tasse !
graphes joints
Bon WE
Hello Supertiti,
Merci pour ce feedback !
Je suis curieux de connaitre votre méthode ; ca vous dirait de commencer cet échange ici ?
Partagez votre routine pour identifier les meilleures opportunités
cheers
Chris
ARKEMA
Attention les amis soyez prudents on arrive sur la ligne de cou pour Arkema , résistance en vue …
https://www.zonebourse.com/ARKEMA-17031/graphiques/
Bonjour à tous,
Petite amélioration pour cleaner la figure ; -) N’hésitez pas !
Timeframe (daily)
MinPrice= close > 2 and close < 500
//MinVolume= average[23](Volume) > 2000
// LEFT HANDLE///////////////////////
LH = highest[24](high)
For i = 0 to 24 do
if high[i] = LH then
indexLH = i
break
endif
Next
//BOTTOM HANDLE///////////////////////
BH = lowest[1+indexLH](low)
For j = 0 to indexLH do
if low[j] = BH then
IndexBH = j
break
endif
Next
NLH=IndexLH-IndexBH
// BOTTOM CUP//////////////////////
BC = low[indexLH]
For k = indexLH to IndexLH+25 do
if low[k+1] > BC then
indexBC = indexBC
elsif low[k+1] < BC then
BC = low[k+1]
IndexBC = k+1
endif
Next
// identification d'un éventuel nouveau plus Haut entre LH et BC et sa condition dans le "return" LHTest <1.01*LH
LHTest = high[indexLH]
For q =IndexLH to IndexBC do
if high[q+1]> LHTest then
LHTest = high[q+1]
endif
Next
// LEFT CUP
LC = low[indexBC]
For m =IndexBC to IndexBC+145 do
if high[m+1]< LC then
LC = LC
elsif high[m+1]> LC then
LC = high[m+1]
IndexLC = m+1
endif
Next
// identification d'un éventuel nouveau plus bas et sa condition dans le "return" BCTest >0.9*BC
BCTest = low[indexBC]
For z =IndexBC to IndexLC do
if low[z+1]< BC then
BCTest = low[z+1]
else
BCTest = BCTest
endif
Next
// LEFT OF THE CUP
KC = low[indexLC]
For n= IndexLC to IndexLC + 50 do
if low[n+1]> KC then
KC = KC
elsif low[n+1] < KC then
KC = low[n+1]
endif
Next
Delta= LC/KC
AmplitudeMax = LC/BC<1.5
Alignement = LH < 1.01*LC and LH >0.99*LC
Screener [NLH > 2 AND Close>BH AND BC<LC and BC<LH AND BH<LH and delta>1 and BH>0.95*LH and BH>BC and MinPrice and AmplitudeMax and Alignement and BCTest >0.9*BC and LHTest <1.01*LH](IndexLH as "rang")//AND AND MinVolume(BH>0.8*LH+0.2*BC)and beta> 1 AND alpha > 1 <1.02 TestCup = 1
BREAKOUT DE TASSE ET ANSE ;
J’aimerais proposer une amélioration à la détection de cette figure en incluant le breakout de la ligne de cou ; mais le code ne marche pas ;
@nicolas peux-tu nous aider ?
Mille mercis
Chris
Timeframe (daily)
MinPrice= close > 2 and close < 500
//MinVolume= average[23](Volume) > 2000
For i = 1 to 15 do
if high[i+1] > high[i] then
BO = high[i+1]
endif
Next
// LEFT HANDLE///////////////////////
LH = high[16]
For i = 16 to 30 do
if high[i+1] > LH then
LH = high[i+1]
indexLH = i+1
endif
Next
//BOTTOM HANDLE///////////////////////
BH = low[16]
For j = 16 to indexLH do
if low[j+1] < BH then
BH = low[j+1]
//IndexBH = j+1
endif
Next
//
//NLH=IndexLH-IndexBH
// BOTTOM CUP//////////////////////
BC = low[indexLH]
For k = indexLH to IndexLH+25 do
if low[k+1] > BC then
indexBC = indexBC
elsif low[k+1] < BC then
BC = low[k+1]
IndexBC = k+1
endif
Next
// identification d'un éventuel nouveau plus Haut entre LH et BC et sa condition dans le "return" LHTest <1.01*LH
LHTest = high[indexLH]
For q =IndexLH to IndexBC do
if high[q+1]> LHTest then
LHTest = high[q+1]
endif
Next
// LEFT CUP
LC = low[indexBC]
For m =IndexBC to IndexBC+135 do
if high[m+1]< LC then
LC = LC
elsif high[m+1]> LC then
LC = high[m+1]
IndexLC = m+1
endif
Next
// identification d'un éventuel nouveau plus bas et sa condition dans le "return" BCTest >0.9*BC
BCTest = low[indexBC]
For z =IndexBC to IndexLC do
if low[z+1]< BC then
BCTest = low[z+1]
//else
//BCTest = BCTest
endif
Next
// LEFT OF THE CUP
KC = low[indexLC]
For n= IndexLC to IndexLC + 50 do
if low[n+1]> KC then
KC = KC
elsif low[n+1] < KC then
KC = low[n+1]
endif
Next
Delta= LC/KC
AmplitudeMax = LC/BC<1.5
Alignement = LH < 1.01*LC and LH >0.99*LC
screener [ BO>LH AND BC<LC and BC<LH and delta>1 and MinPrice and AmplitudeMax and Alignement and BCTest >0.9*BC and LHTest <1.01*LH](IndexLH as "rang")//AND AND MinVolume(BH>0.8*LH+0.2*BC)and beta> 1 AND alpha > 1 <1.02 TestCup = 1AND BH<LH and BH>0.9*LH NLH > 2 AND and BH>BC
error on the ligne 72 from code of Kris75 = error assignation ?
<b>// identification d'un </b><span style="font-size: 12.8px;"><b>éventuel</b></span><b> nouveau plus bas et sa condition dans le "return" BCTest >0.9*BC</b>
yes line 72, suppress the anchor <b></b> which is htlm as I wanted to highlight in bold this REM; as you copied the full code, PRT bugged ;
thanks for warning 😉
J’aimerais proposer une amélioration à la détection de cette figure en incluant le breakout de la ligne de cou ; mais le code ne marche pas ;
Pourquoi pas, mais qu’est ce que la ligne de cou dans ton code ? Merci de m’aider aussi 🙂
‘Sans préjudice de ce que le demandeur décrira’, la rupture (breakout) à chercher est celle du pivot, soit le plus haut atteint par la partie droite de la figure ‘tasse’.
Un lien au hasard parmi tous ceux publiés :
http://www.jeromevinerier.com/la-figure-graphique-en-tasse-avec-anse/
De la dialectique…et de l’orthodoxie pragmatique du discours des traders…
Have fun ! Thanking you all in advance…
Je vais – soit dit en passant – publier ici sous peu le code de la détection de la figure ‘tasse avec ou sans anse’…selon l’approche de Mr Siligardos ; elle s’apparente à celle programmée par Nicolas pour la ‘semi-cup’.