Je rédigerai un conseiller gratuitement - page 17

 
Bonjour, j'ai commencé à apprendre MQL4 et j'ai commencé avec le MACD Sample Expert Advisor. J'ai tout réglé. Je pense avoir tout compris, mais je n'arrive pas à le faire fonctionner sur mon Demo pour plusieurs paires de devises à la fois. S'il y a déjà une position ouverte dans le terminal (manuellement ou par Expert Advisor), cela ne fonctionnera pas. Je n'ai pas assez de connaissances, veuillez me conseiller sur ce que je dois ajouter ou corriger.
 
igor.malish:
Bonjour, j'ai commencé à apprendre MQL4 et j'ai commencé à utiliser le MACD Sample Expert Advisor. Je l'ai analysé. Je pense avoir tout compris, mais je n'arrive pas à le faire fonctionner en tant que conseiller expert de démonstration sur différentes paires de devises en même temps. S'il y a déjà une position ouverte dans le terminal (manuellement ou par Expert Advisor), cela ne fonctionnera pas. J'ai essayé tout ce que je sais. Je n'ai pas assez de connaissances, veuillez me conseiller sur ce qu'il faut ajouter ou corriger.

Le MACD Sample n'est pas conçu pour être utilisé sur plusieurs instruments.

total=OrdersTotal();

   if(total<1)

     {...
Si vous ne savez pas quoi en faire, vous ne devez pas ouvrir de transactions, si au moins une position a déjà été ouverte pour un instrument quelconque.
 
dimeon:

Le MACD Sample n'est pas conçu pour être utilisé sur plusieurs instruments.

Cette condition interdit pratiquement d'ouvrir des transactions si au moins une, pour tout instrument, est déjà ouverte.
J'ai eu un problème similaire, mais pour une transaction par jour. C'est-à-dire que la condition n'est pas seulement OrdersTotal(), mais aussi de l'historique de ceux qui sont fermés.
 
Existe-t-il un moyen de lier OrdersTotal, OrderSymbol et OrderMagicNumber ?
 
igor.malish:
Existe-t-il un moyen de lier OrdersTotal, OrderSymbol et OrderMagicNumber ?
Question idiote.
 
Salutations. Quelqu'un peut-il adapter mon EA à la nouvelle mql ? (#property strict) Il se développe et sa fonctionnalité s'améliore mais le langage dans lequel il est écrit est dépassé. Cet Expert Advisor est une modification ultérieure de ZigZaHod v1.1 et il nécessite un minimum de changements pour que je puisse le maîtriser et le modifier. Je suis prêt à m'y impliquer profondément. Je ne comprends pas ce qui doit être refait.
 

Aidez à corriger le bug : L'idée est que l'EA devrait fonctionner une fois par jour, quand le nouveau jour commence. 1am. devrait ouvrir deux ordres en attente sur un haut et un bas.

Je veux dire le chandelier qui s'est fermé à 00:00. Je ne devrais rien faire d'autre jusqu'au jour suivant. Qu'est-ce que je fais de mal ?


extern string Times = "Time";
extern int StartHour    = 1;
extern int TakeProfit   = 50;
extern int StopLoss     = 50;
extern int Lots         = 1;

void OnTick()
{ 
   static bool IsFirstTick = true;
   static int ticket = 0;
   int h=TimeHour(TimeCurrent());
   Alert("TimeHor: ", h);
   if(Hour() == StartHour)
   {
    if (IsFirstTick == true)
      IsFirstTick - false;
      
      bool res;
      res= OrderSelect(ticket, SELECT_BY_TICKET);
      if(res == true)
      { 
         if(OrderCloseTime() == 0)
         {
            bool res2;
            res2 = OrderClose(ticket, Lots, OrderClosePrice(), 10);
            
            if(res2 == false)
            {
               Alert("Error Closing Order #", ticket);
               }
         }   
      }
       if(Open[0] < Open[StartHour])
      {
         ticket = OrderSend(Symbol(), OP_BUYLIMIT, Lots, High[1],10, Low[1]-StopLoss*Point, High[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         }  
       }
       else
       {
         ticket = OrderSend(Symbol(), OP_SELLLIMIT, Lots, Low[1],10, High[1]+StopLoss*Point, Low[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         } 
    }   
}
 
MIR_KAZAN:

Aidez à corriger le bug : L'idée est que l'EA devrait fonctionner une fois par jour, quand le nouveau jour commence. 1am. devrait ouvrir deux ordres en attente sur un haut et un bas.

Je veux dire le chandelier qui s'est fermé à 00:00. Je ne devrais rien faire d'autre jusqu'au jour suivant. Qu'est-ce que je fais de mal ?


Lorsque vous collez du code, veuillez utiliser les fonctionnalités intégrées du forum :coller le code correctement sur le forum
 
barabashkakvn:
Lorsque vous collez du code, veuillez utiliser les fonctionnalités intégrées du forum :Insérer le code correctement dans le forum
Je l'ai.
 
MIR_KAZAN:

Aidez à corriger le bug : L'idée est que l'EA devrait fonctionner une fois par jour, lorsque le nouveau jour commence. A 1 heure du matin, il devrait ouvrir deux ordres en attente sur le haut et le bas.

C'est-à-dire un chandelier qui s'est fermé à 00:00. Il ne devrait rien faire d'autre avant le lendemain. Qu'est-ce que je fais de mal ?


Il y a une erreur :

      IsFirstTick - false;

Il devrait être =