[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 550

 

Bonjour, chers amis. Veuillez conseiller un débutant sur la direction à prendre pour creuser. Le problème n'est pas résolu. Le résultat final est le suivant :

Sur le H4, la barre casse la barre du bas vers le haut, où elle se ferme réellement et c'est une condition d'achat. Nous achetons. Maintenant, nous devrions prendre quelques points, ou environ dix, pour fermer (tout était simple et clair pour moi jusqu'à ce moment) et aller fumer jusqu'à la prochaine barre (cela ne fonctionne pas). Dès qu'un ordre est fermé, un nouvel ordre est ouvert (la condition est toujours remplie), comment éviter de négocier jusqu'à la prochaine barre ?

La solution semble être simple, je sens qu'elle est proche de moi, mais je manque de connaissances (ou de cerveaux)). Je dois admettre que je n'ai pas lu 549 pages et si quelqu'un a déjà demandé... Ne pas trop jurer))))

Pouvez-vous m'aider ?

 

FAQ

 
Merci.
 
ex_kalibur:

Bonjour, aidez-moi s'il vous plaît, je ne vois pas la chose la plus évidente((((.

double LotsAllPos(int op) {

int i ;

double ll=0 ;

pour (i=0 ; i<OrdersTotal() ; i++) {

si (OrderType()!=op) continuer ;

si (OrderSymbol()!=sy) continuer ;

si (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic+1) ll+=OrderLots() ;

}

retour(ll) ;

ici j'ai besoin de retourner le volume additionné par mon symbole, et par type.

for (i=0; i<OrdersTotal(); i++) {
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
   if (OrderType()!=op) continue;

....
   }
 
Sepulca:


Merci pour votre aide.
 

Pouvez-vous me dire quel pourrait être le problème ? La variable newlots est 0.2.

Lorsque j'exécute un EA, Print 1 imprime d'abord un message disant 1 0.2, puis la condition pour ouvrir un ordre se déclenche, l'ordre est ouvert mais la fonction Print 2 qui le précède n'affiche pas le message, je n'arrive pas à comprendre pourquoi elle est sautée, puisque la condition se déclenche et que si la fonction d'ordre est ouverte, la fonction Print devrait être fermée aussi. En plus de cela, le journal n'affiche pas de message indiquant que l'ordre a été envoyé, le message standard qui était affiché à l'ouverture de chaque ordre.

Mais ce n'est pas encore le pire, le problème principal est que la variable newlots est égale à 0.2 et l'ordre s'ouvre avec un volume de 0.1, comment est-ce possible du tout, puisque c'est clairement spécifié dans la fonction au lieu du volume comme variable newlots.

  Print("1 ",newlots);
  
  if(условие)
    {
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("2 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

// пробовал даже вот так, в этом случае выводятся только первые два сообщение, причем значение выводится что newlots все таки равен 0.2, но третье сообщение
не выводится, и ордер открывается с лотом 0.1.


Print("1 ",newlots); - равен 0.2


Print("2 ",newlots); - равен 0.2

Print("3 ",newlots); - не выводится сообщение, и далее ордер открывается с лотом 0.1



Print("1 ",newlots);
  if(((Ask > (MA1+3*Point*a)) && (Open[0] < (MA1+3*Point*a)) && (Ask < (MA1+5*Point*a))) || ((Low[0] < (MA1+3*Point*a)) && (Bid > (MA1+3*Point*a)) && (Bid < (MA1+5*Point*a))))
    {
    Print("2 ",newlots);
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("3 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

 
sss2019:

Pouvez-vous me dire quel pourrait être le problème ? La variable newlots est 0.2.

Lorsque j'exécute un EA, Print 1 imprime d'abord un message disant 1 0.2, puis la condition pour ouvrir un ordre se déclenche, l'ordre est ouvert mais la fonction Print 2 qui le précède n'affiche pas le message, je n'arrive pas à comprendre pourquoi elle est sautée, puisque la condition se déclenche et que si la fonction d'ordre est ouverte, la fonction Print devrait être fermée aussi. En outre, le journal n'affiche pas de message indiquant que la commande a été envoyée, le message standard qui était affiché chaque fois qu'une commande était ouverte.

Mais ce n'est pas encore le pire, le problème principal est que la variable newlots est égale à 0,2 et que l'ordre s'ouvre avec un volume de 0,1 ; cela peut arriver parce qu'il est clairement indiqué dans la fonction au lieu du volume que la variable newlots.


Où se trouve l'ouverture d'une commande dans le code ? Où se trouve OrderSend?

Dans cette section, que vous avez montrée, la condition n'est pas exécutée, et par conséquent votre Print 2, et par conséquent, OrderSend dans cette condition aussi, n'ouvre pas un ordre avec 0.2 lot.

Un autre OrderSend est en cours d'exécution.

 
zxc:


Où d'autre dans le code se trouve l'ouverture de l'ordre ? Où se trouve OrderSend ?

Dans la section que vous avez montrée, la condition n'est pas remplie et donc votre Print 2, et donc l'OrderSend dans cette condition n'est pas non plus ouvert - aucun ordre avec le lot 0.2 n'est ouvert.

Un autre OrderSend est exécuté.


C'est parti.

if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)

J'ai un seul OrderSend dans mon EA, la condition est remplie et l'ordre est ouvert avec un volume peu clair.

 

Pouvez-vous me dire, lorsqu'un EA est livré avec un jeu, dans quel dossier je dois le mettre ? Merci.

 

Bonjour !

Pouvez-vous m'aider, en lisant un fichier, il y a une ligne (en général, il y en aura plus, mais cela n'a pas d'importance), elle tourne en boucle, comme si elle ne voyait pas la fin du fichier...

int qq=0;
 while (FileIsEnding(h3)==false)
 {
  int uu=0;
  while (FileIsLineEnding(h3)==false)
  { 
    Histxmas[qq][uu]=StrToDouble(FileReadString(h3));
    Print("Histxmas[",qq,"][",uu,"]=",Histxmas[qq][uu]);
    uu+;
  }
  FileSeek(h3,0,SEEK_END);   
  qq++;
  Print("Бро зациклился, покажи мне кюкю",qq);
 }