Dans une stratégie, je voudrais que la condition soit prix < dernier plus bas.
Comment pourrait on coder ça ?
Merci.
Bonjour,
j’ai fait un code similaire pour les PH, je n’ai trouvé qu’une solution assez compliquée applicable dans un indicateur ou un backtest, mais pas dans un screener…
J’explique rapidement le code pour les PH. le code me renvoie le dernier PH et son numéro de barre (j’en ai besoin pour tester la “profondeur” du PH franchi
- Stockage de tous les PH sur 5 barres dans une pile (tableau) $PH ainsi que du n0 de barre dans une pile(tableau) $barPH, le PH étant classé par ordre croissant et la pile est incrémentée lorsque on a un nouveau PH rencontré, à savoir (High[2] > High[1] ) and (High [2] > High) and (High [2] > High[3]) and (High [2] > High|4])
- dans ce cas, on incrémente les piles $PH et $barPH d’un élément
- on stocke dans le premier élément $PH[0] et $barPH[0] les valeurs High[2] et “barindex-2”
- lorsque le High de la barre courante dépasse $PH[0],
- on considère que l’on a un BO, d’où signal renvoyé ainsi que la profondeur du PH, à savoir “barindex – $barPH[0]”
- on dépile $PH et $valPH tant que high > $PH[0] et $PH[0] <>0
- si l’on vient de franchir un ATH sur la période considérée, on se retrouve avec des piles $PH et $valPH vides
il y a une petite subtilité dans mon code, car je considère que le PH ne donne lieu qu’ à un BO confirmé que si close > (la valeur du PH considéré) sur la ou les barres immédiatement suivant le PH franchi
Merci de me donner vos remarques sur cette stratégie. Je suis surtout intéressé par l’échange plus que le simple transfert de code., ceci pour me faire progresser.
C’est facilement applicable à une détection de franchissement de PB. Le code pour un screener est nettement plus compliqué compte tenu de la limitation à 256 barres d’historique mais j’ai aussi trouver un moyen de contourner ce PB avec approximation sur l’historique
Si échange, je nettoierai et partagerai mon code sans problème.
A vous lire et du succès dans vos stratégies
Bonjour. Voici un exemple :
lmin=lowest[15](low)
if low crosses under lmin[1] then
xxxx
endif
Bonjour,
j’ai fait un code similaire pour les PH, je n’ai trouvé qu’une solution assez compliquée applicable dans un indicateur ou un backtest, mais pas dans un screener…
J’explique rapidement le code pour les PH. le code me renvoie le dernier PH et son numéro de barre (j’en ai besoin pour tester la “profondeur” du PH franchi
- Stockage de tous les PH sur 5 barres dans une pile (tableau) $PH ainsi que du n0 de barre dans une pile(tableau) $barPH, le PH étant classé par ordre croissant et la pile est incrémentée lorsque on a un nouveau PH rencontré, à savoir (High[2] > High[1] ) and (High [2] > High) and (High [2] > High[3]) and (High [2] > High|4])
- dans ce cas, on incrémente les piles $PH et $barPH d’un élément
- on stocke dans le premier élément $PH[0] et $barPH[0] les valeurs High[2] et “barindex-2”
- lorsque le High de la barre courante dépasse $PH[0],
- on considère que l’on a un BO, d’où signal renvoyé ainsi que la profondeur du PH, à savoir “barindex – $barPH[0]”
- on dépile $PH et $valPH tant que high > $PH[0] et $PH[0] <>0
- si l’on vient de franchir un ATH sur la période considérée, on se retrouve avec des piles $PH et $valPH vides
il y a une petite subtilité dans mon code, car je considère que le PH ne donne lieu qu’ à un BO confirmé que si close > (la valeur du PH considéré) sur la ou les barres immédiatement suivant le PH franchi
Merci de me donner vos remarques sur cette stratégie. Je suis surtout intéressé par l’échange plus que le simple transfert de code., ceci pour me faire progresser.
C’est facilement applicable à une détection de franchissement de PB. Le code pour un screener est nettement plus compliqué compte tenu de la limitation à 256 barres d’historique mais j’ai aussi trouver un moyen de contourner ce PB avec approximation sur l’historique
Si échange, je nettoierai et partagerai mon code sans problème.
A vous lire et du succès dans vos stratégies
Merci beaucoup, je ne suis pas assez avancé en codage pour tout comprendre, mais je veux bien le code. J’essaierai de l’analyser et de l’adapter à ma stratégie. Merci encore de m’accorder un peu de votre temps.
Bonjour. Voici un exemple :
|
|
lmin=lowest[15](low)
if low crosses under lmin[1] then
xxxx
endif
|
Merci pour cet exemple, j’ai déjà essayé cette formule mais dans mon cas ça ne fonctionne pas.
Bonjour
Le code ci-joint nécessite d’utiliser les Arrays donc la version PRT V11 au moins.
un PB (Plus Bas) est détecté lorsque le Low est inférieur au Low des 2 barres avoisinantes : Il est donc détecté avec une barre de retard. le cas où le Low est le même sur plusieurs barres successives n’est pas traité
Le code gère un tableau de tous les PB détecté et considérés comme encore valables, c’est à dire en-dessous de la barre courante.
L’indicateur renvoie le prochain PB donc le prochain support. Si on est dans une phase de ATL (All Times Low, en dessous de tous les PB détectés sur le graphique actuel) le code renvoie 0 jusqu’à ce qu’un PB soit détecté.
// Indicateur PB Support 20241005
// Renvoie le prochain support à la Baisse, 0 lorsque on est dans une phase en dessous de tous les Cours déjà enregistrés sans qu'un nouveau PB sur 3 barres n'ai été détecté,
// dans ce cas, on a un ATL, (All Times Low) et on renvoie 0 jusqu'à ce qu'un nouveau PB sur 3 barres ait été détecté
// pas de gestion des numéros de barres
// dans cet indicateur, on gère un tableau $PB qui stocke toutes les vlaeurs des PB rencontrés inférieurs au Low actuel
// l'indicatgeur renvoie le PB le plus proche de la barre actuelle
CondPB = (low[1] < low) and (low[1] < low[2])
if condPB then
// on a détecté un nouvel élément... il faut le mettre dans la pile
valPB = low[1]
// l'idée est dee stocker ce nouveau PB dans la pile
// On le stocke dans la valeur maximale de la pile
$PB[LastSet($PB) + 1] = valPB
// on classe le tableau $PB par valeurs décroissantes
ArraySort($PB, Descend)
// c'est termine pour la pile
// fin de if condPB then
endif
// nettoyage de la pile si on a franchi un support existant
if (Low < $PB[0]) then
// en partique la condition and ($PB[0] <>0) est inutile car (Low < $PB[0]) sous-entend que $PB[0] est non nul
// il faut dépiler et répéter le dépilage tant que la condition sera respectée, la condition (low < $PB[0]) sous-entend que la pile est non vide
// donc que LastSet($PB) vaut au moins 0
while (low < $PB[0]) do
// on annulle la valeur $PB[>0]
$PB[0] = 0
// on classe le tableau en mode descendant
ArraySort($PB, Descend)
// fin de la boucle while
wend
// fin de if (Low < $PB[0]) then
endif
Return $PB[0] as "Prochain Support à la baisse"
J’ajoute le fichier itf pour facilite l’importation
A vous lire
merci beaucoup je vais étudier tout ça.
Au plaisir de lire vos commentaires et remarques