Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

EA Obtenir le prix de clôture de la dernière bougie baissière

  • yaoalphonse

    Bonjour à Tous

    Je suis un debutant dans la programmation sur MT4.
    j'aimerais coder une prise de position selon des bougies baissieres qui ont les bas plus bas dans une serie de bougies.

    Exemple: Apres la traversée de la moyenne mobile simple (25), du haut vers le bas par la paire EURUSD, prendre une position SELL, à la troisième bougie baissière ayant le bas le plus bas parmi la serie bougies baissièeres ayant les bas ,les plus bas sous la moyenne mobile.

    Quelqu'un pourrait m'aider?
    Merci
  • yaoalphonse — en réponse à yaoalphonse dans son message #115885

    UNE illustration
    yaoalphonse a joint une image
    ea-obtenir-le-prix-de-cloture-de-la-derniere-bougie-baissiere-bas-plus-bas-dans-une-serie-de-bougies-baissiere-11581
  • yaoalphonse — en réponse à yaoalphonse dans son message #115885

    UNE illustration
    yaoalphonse a joint une image
    ea-obtenir-le-prix-de-cloture-de-la-derniere-bougie-baissiere-bas-plus-bas-dans-une-serie-de-bougies-baissiere-11582
  • stani

    Ce n'est pas si simple, il y a quantité de choses que tu ne précises pas, par exemple la position de l'open de chaque bougie par rapport a la ma.
  • yaoalphonse — en réponse à stani dans son message #115888

    tous les open des bougies sont sous la ma c'est a dire ma>"open".
    En outre, on ne prend en compte que chaque bougie baissière qui a son bas plus bas que la bougie baissière (plus bas) précedente.
    Sur l'image que j'ai posté, jee n'ai pas pris en compte la troisieme bougie baissière sous la ma parce que son bas n'est pas plus bas que la bougie baissière qui la précède.
    Merci de votre promptitude
  • riden

    Salut,

    Code
    //----------------------abréviation MA25--------------------- double mm25(int shift, int t){ double res=0; res = iMA(Symbol(),t,25,0,MODE_SMA,PRICE_CLOSE,shift); return(res);} //---------------------détection de la position par rapport à mm25------------------ // Cette fonction retourne -1 si on est au-dessus de la mm25 // Si on est au-dessous de mm25 retourne le shift de la première bougie sous mm25 int pos_mm25(int t){ int res = -1; if(Bid>mm25(0,t) || iOpen(Symbol(),t,0)>mm25(0,t)) return(-1); for(int i=1;i<1000; i++){ if( MathMax(iOpen(Symbol(),t,i),iClose(Symbol(),t,i))< mm25(i,t) ) continue; if( MathMax(iOpen(Symbol(),t,i),iClose(Symbol(),t,i))> mm25(i,t) ) {res = i-1; break;} } return(res);} //--------------------------------détection du signal--------------------------------- // retourne 1 si les conditions sont réunies sinon 0 int signal(int t){ double pb1,pb2,pb3; int j,k,m; ; int rep; m=0 rep = pos_mm25(t); if(rep<3) return(0); for(int i = rep; i>=1; i--){ if(iClose(Symbol(),t,i) < iOpen(Symbol(),t,i)) {pb1 = iClose(Symbol(),t,i); k = i-1; break;}} if(k<2) return(0); for(i = k; i>=1; i--){ if((iClose(Symbol(),t,i) < iOpen(Symbol(),t,i))&& (iClose(Symbol(),t,i)<pb1)) {pb2 = iClose(Symbol(),t,i); j = i-1; break;}} if(j<1) return(0); for(i = j; i>=1; i--){ if((iClose(Symbol(),t,i) < iOpen(Symbol(),t,i))&& (iClose(Symbol(),t,i)<pb2)) {pb3 = iClose(Symbol(),t,i); m = i; break;}} if(m==1) return(1); return(0);}

    La fonction "signal" retourne 1 si les conditions que tu as citées sont réunies. Avant la prise de position il faut faire attention de ne pas entrer trop tard donc il faut ajouter un morceau du genre:
    Code
    if( MathAbs(iClose(Symbol(),t,1)-Bid)<Marge_Max )
  • yaoalphonse — en réponse à riden dans son message #115893

    Bonjour à Tous
    Merci Riden de votre promptitude.
    je vais la tester (compiler).