Bonjour,
je cale sur un problème dont j’ai du mal à comprendre l’origine, mon code prends les positions avec 1 à 2 bougies de retard, ce qui rends pas mal de positions gagnantes perdantes (scalping)
Voici un screenshot d’un exemple de retard :
https://ibb.co/mW2wex
Les conditions, comme indiqué sur le screenshot, sont validées a la bougie qui cloture au dessus de la MM orange, il devrait donc acheter dès l’ouverture de la bougie suivante.
Et le code (je ne fais que des tests, du coup ce sont des conditions bidons)
activeDoubleMM = 0
mmS20 = Average[20,0](Close)
mmE200 = Average[200,1](Close)
mmE330 = Average[330,1](Close)
sto21 = SmoothedStochastic[21,3](Close)
periodDonchian = 10
IF (sto21 > 50 AND mmS20 < Close) THEN
activeSimpleMM = 1
ENDIF
IF (activeSimpleMM) THEN
IF (Close > mmE200 AND Close > mmE330) THEN
activeDoubleMM = 1
ENDIF
ENDIF
IF (activeSimpleMM AND activeDoubleMM) THEN
activeTrade = 1
ENDIF
IF (activeTrade) THEN
FOR i = 1 TO 10 DO
downDonchian = Lowest[periodDonchian](Low[i])
downDonchian2 = Lowest[periodDonchian](Low[i+1])
IF (downDonchian = downDonchian2) THEN
ecart = Close - downDonchian
BREAK
ELSE
activeTrade = 0
ENDIF
NEXT
ENDIF
IF (ecart < 10 ) THEN
ecart = 10
ENDIF
IF (activeTrade) THEN
SET STOP pLOSS ecart
SET TARGET pPROFIT ecart
BUY 1 SHARE AT MARKET
ENDIF
Merci de votre aide
PS : On ne le voit pas sur le screenshot, mais la condition du Sto est valide depuis le début
En affichant la variable activetrade avec GRAPH, ce sera plus simple à débugger et comprendre cet écart entre ce que l’on voit sur le graphique et ce qui est codé.
Bien vu pour cette méthode de debug ! Ca affiche clairement le problème (activeTrade s’active une bougie en retard, du coup c’est “logique” qu’il achète à ce moment mais les MM sont actives a temps)
Le premier pic représente les MM, le pic de la bougie suivante est activeTrade
Une idée de comment résoudre cet écart d’une bougie du coup ? (Ci-joint le debug GRAPH)
> Merci de renseigner votre pays dans votre page de profile ! <<
Puisque le code n’est lu qu’au Close de la bougie, hormis anticiper le signal d’une façon ou d’une autre…
Peut-être que je me trompe, mais à la cloture de la bougie qui transperce la MM, les conditions MM Simple et Doubles sont remplie, ce qui devrait activer la suivante non ?
A moins que je comprenne mal la façon dont PRT interprete le code ?
est-ce que :
GRAPH activeSimpleMM and activedoubleMM
intervient au même moment sur cet exemple ? (est-ce le premier pic ?).
Pas testé le code, mais ça serait pas dû au “if ” dans la boucle “for next” par hasard? Avec son “else activetrade=0” qui viendrait écraser un activetrade=1 issu de activesimpleMM et activedoubleMM vraies?
@nicolas Oui
@Noobywan En effet, l’erreur viendrait du FOR .. Je pense que j’avais mal compris comment il interpretait le code, ça à l’air mieux maintenant, merci.