Ordrs short jamais déclenchés VS achats déclenchés, malgré code équivalent
Forums › ProRealTime forum Français › Support ProOrder › Ordrs short jamais déclenchés VS achats déclenchés, malgré code équivalent
- This topic has 6 replies, 2 voices, and was last updated 4 years ago by Nicolas.
-
-
11/10/2020 at 2:42 PM #150033
Bonjour Nicolas,
Pourriez-vous jeter un oeil à ce bout de code et essayer de trouver ce qui cloche SVP ?
Ca fait deux jours que je m’arrache les cheveux à essayer de trouver d’où vient le problème sans y parvenir… Le code est pour ainsi dire identique pour les ventes comme pour les achats, il n’y a que les noms de variables qui changent et le sens “<” et “>” dans les conditions IF…THEN.
(Testé du Dow en M15)
Breakouts123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899ONCE signalAchat=0ONCE signalVente=0RepereHaut = 0 // aura pour valeur le +haut de la bougie de repère haussièreRepereBas = 0 // aura pour valeur le +bas de la bougie de repère baissièremonOpen = openmonClose = closemonHigh = highmonLow = low//=================================================================// MACD Zero Lag (code pris dans PRC) :p = 12q = 26r = 9z1=DEMA[p](Close)z2=DEMA[q](Close)e = z1 - z2z3=DEMA[r](e)f = z3g = e-f//return e AS "MACD ZEROLAG",f AS "signal",g as "macd-signal",0 as "zero"//=================================================================maEMMacdZL = ExponentialAverage[9](e) // Moyenne mobile Exponentielle du MACD Zero LagmaMMC = Average[7](close) // Moyenne mobile Simple courte//****************************************************** VENTESIF NOT SHORTONMARKET THENCV1 = maMMC < maMMC[1] AND maEMMacdZL < maEMMacdZL[1] // la MM7 et la EM9(macdZL) sont baissièresCV2 = monClose < maMMC // cloture au-dessous de la MM7IF CV1 AND CV2 AND signalVente=0 THENRepereBas = monLowsignalVente=1ENDIFIF CV1 AND CV2 AND signalVente=1 AND monLow < RepereBas THEN// Bougie courante a cassé le plus bas de la "bougie repère"SELLSHORT 1 CONTRACT AT MARKETsignalVente=0SET STOP pLOSS 60SET TARGET pPROFIT 120ENDIFENDIF// exit SHORTIF ShortOnMarket THENIF monHigh > maMMC THEN //OR NOT TimeOK THEN// on clôture la position si le haut du cours passe au-dessus de la moyenne mobile courte 7EXITSHORT AT MARKETRepereBas=0ENDIFENDIF// ************************************************************ ACHATSIF NOT LONGONMARKET THENCA1 = maMMC > maMMC[1] AND maEMMacdZL > maEMMacdZL[1] // la MM7 et la EM9(macdZL) sont haussièresCA2 = monClose > maMMC // cloture au-dessus de la MM7IF CA1 AND CA2 AND signalAchat=0 THENRepereHaut = monHighsignalAchat= 1ENDIFIF CA1 AND CA2 AND signalAchat=1 AND monHigh > RepereHaut THEN// Bougie courante a cassé le plus haut de la "bougie repère"signalAchat=0BUY 1 CONTRACT AT MARKETSET STOP pLOSS 60SET TARGET pPROFIT 120ENDIFENDIF// exit LongIF LongOnMArket THENIF monLow < maMMC THEN // OR NOT TimeOK THEN// on clôture la position si le bas du cours passe SOUS la moyenne mobile courte 7SELL AT MARKETReperehaut=0ENDIFENDIFgraph repereBas coloured(255,0,0) AS "signal Achat" // rougegraph repereHaut coloured(0,0, 255) AS "Signal Vente" // bleuLogiquement je devrais donc avoir des achats et des shorts sur mon graph, et pourtant je n’ai QUE des achats.
La variable “RepereHaut” contient bien les bonnes valeurs et ça se vérifie avec “graph”, alors que “RepereBas” est toujours à “0”.
—————————-
IF CV1 AND CV2 AND signalVente=0 THEN
RepereBas = monLow
signalVente=1
ENDIF
—————————–
“Grapher” la variable “monLow” donne un résultat correct alors que “Grapher” la variable “RepereBas” renvoie “0”, alors que le même code pour les achats ne pose aucun problème… Je ne comprends pas d’où vient le problème, d’où ma requête…
En espérant que vous pourrez m’aider… merci d’avance
11/10/2020 at 3:15 PM #150038Il y a effectivement un problème, mais non lié à ton code, sauf erreur de ma part.
Dans les images suivantes on peut voir que lorsqu’on teste si “signalvente=0”, alors les autres tests sont buggés (ne retourne rien), donc ta condition située à la ligne 39 ne peut jamais être vérifiée, et donc pas de niveau bas et pas d’ordres de vente.
Par ailleurs le graph signalvente=0 ne retourne pas non plus la bonne valeur du booléen, elle devrait être inversé dans la seconde image.
Je vais faire une demande de support en référant ce topic, merci de faire de même. Merci.
11/10/2020 at 3:32 PM #150040Merci pour ton retour Nicolas.
Dans les tests de “graph” que j’ai fait, j’avais “signalvente” toujours = à 1, j’en ai déduit que le test IF THEN mettant signalvente=1 fonctionnait, mais qu’il ne repassait ensuite jamais à 0 car l’ordre de vente n’est jamais exécuté.
J’ai fait des tests graph et j’ai une différence avec la ligne 44 entre :
-> IF CV1 AND CV2 AND signalVente=1 AND monLow < RepereBas
et
->IF CV1 AND CV2 AND signalVente=1
ce qui m’a fait penser que “RepereBas” ne conserve pas la valeur donnée par “monLow” d’une bougie précédente, car cette condition là n’est jamais remplir, alors que côté ACHATS pas de problème… incompréhensible…
Comment dois-je faire pour faire une demande officielle au support ?
Merci encore
11/10/2020 at 3:36 PM #15004111/12/2020 at 10:24 AM #150240Ce matin, ça fonctionne correctement, en ajoutant ONCE devant ces lignes, ou en les supprimant directement :
12once RepereHaut = 0 // aura pour valeur le +haut de la bougie de repère haussièreonce RepereBas = 0 // aura pour valeur le +bas de la bougie de repère baissièreil me semblait pourtant avoir tenté cette approche la semaine dernière, bref 🙄
11/13/2020 at 7:40 AM #15034511/13/2020 at 8:16 AM #150348 -
AuthorPosts
Find exclusive trading pro-tools on