[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 177

 

Aide à la compréhension :

La tâche consiste à compter individuellement les ordres d'achat/de vente perdants. Code :

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Le code lui-même est un extrait d'un EA. Le conseiller expert fonctionne et génère constamment des pertes. Il y a beaucoup d'ordres perdants (je les imprime ailleurs), qui sont tous enregistrés. Mais dans ce fragment de code, l'Expert Advisor n'entre pas dans l'intervalle de confiance.

if (OrderProfit() < 0)


Qu'est-ce que je fais de mal ?

 
borilunad:
Avez-vous un EA qui n'ouvre que des positions ? Chaque copie (version) doit avoir son propre magicien et chacune ne surveillera que ses propres positions.

Je l'ai. Merci beaucoup !
 
belozad:

Aide à la compréhension :

La tâche consiste à compter individuellement les ordres d'achat/de vente perdants. Code :

int w = OrdersHistoryTotal()-1;
   if (OrderSelect(w, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      {
         if (OrderType()==OP_BUY) i = i + 1;
         if (OrderType()==OP_SELL) y = y + 1;
         Print("i, y", i, " ", y);
         Print("OrderProfit()", OrderProfit());
      }
   }


Le code lui-même est un extrait d'un EA. L'EA fonctionne et génère constamment des pertes. Il y a un tas d'ordres perdants (je les imprime ailleurs) qui sont tous enregistrés. Mais dans ce fragment de code, l'Expert Advisor n'entre pas dans l'intervalle de confiance.

if (OrderProfit() < 0)


Qu'est-ce que je fais de mal ?

Essayez

int w = OrdersHistoryTotal();
int BUY=0;
int SELL=0;

for (i=0; i<w; i++)
 {
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   {
      if (OrderProfit() < 0)
      { 
         if (OrderType()==OP_BUY) BUY++;
         if (OrderType()==OP_SELL) SELL++;
      }
   }
}
 Print("  BUY = ",BUY);
 Print("  SELL = ",SELL);       
 

Je perds la tête, qu'est-ce qui ne va pas avec mon mql4 ?

Pourquoi le logiciel exécute-t-il la condition suivante sur chaque cycle ? Il est écrit pour imprimer "i" seulement quand un nouvel ordre est fermé !

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }

 
belozad:

Je deviens fou, qu'est-ce qui ne va pas avec mon MQL4 ?

Pourquoi le programme exécute-t-il la condition suivante à chaque cycle ? Il est écrit pour imprimer "i" seulement quand un nouvel ordre est fermé !

  w = OrdersHistoryTotal();
   if (i!=w)
   {
      i = w;
      Print ("i :", i);
   }



Si i n'est pas une variable statique, elle sera imprimée à chaque tick.
 
badbadboy:

Si i n'est pas une variable statique, il s'imprimera quand même à chaque tic.

Ooh, je me demandais pourquoi j'ai plusieurs pièces dans mon programme qui travaillent par le cul ! =)

Donc toutes les variables de travail dont j'utilise les valeurs dans différents ticks doivent être déclarées statiques ?

 
belozad:

Ooh, je me demandais pourquoi j'ai quelques logiciels qui travaillent dans mes fesses ! =)

Donc toutes les variables de travail dont j'utilise les valeurs à différents moments doivent être déclarées statiques ?


C'est difficile à dire. Regardez les propriétés des variables, puis réfléchissez à ce qu'il faut déclarer et comment le déclarer.
 

La fonction OrderModify() ne permet pas de modifier les commentaires. Y a-t-il un autre moyen de procéder ?

 
pasha5282:

La fonction OrderModify() ne permet pas de modifier les commentaires. Y a-t-il un autre moyen de procéder ?


Seulement depuis le terminal.
 
tara:

Seulement depuis le terminal.

Comment faites-vous cela, je n'arrive pas à comprendre, si je peux être plus précis... ? Est-il possible de le faire par programme, si oui, comment ?
Raison: