[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 52

 
first_may:
Existe-t-il un exemple de fonction permettant de travailler avec des dates, c'est-à-dire de déterminer la différence entre deux dates, si elle est supérieure à zéro ou non ?

et qu'est-ce qu'une date dans votre compréhension et dans la compréhension de MQL ?
 

Les gens, aidez-moi à comprendre le code. La tâche principale consiste à supprimer un ordre en attente lorsqu'un certain niveau est atteint.

if (OrdersTotal()!=0 && Bid == Delete_Level)
   {
   for (int i=1; i<=OrdersTotal(); i++) //Cycle for all orders..
      { 
         if(OrderSelect(i-1,SELECT_BY_POS)==true)//If there is the next one
            { 
               if(OrderType()>1) 
                  {
                  if(OrderDelete(OrderTicket())==true)
                  {
                  Alert ("Ордера удалены");
                  }
                  }
            } 
      }
   }

Le niveau de suppression est déterminé par la position de la MA 30 sur 3 barres jusqu'au moment actuel.

double MA3 = iMA(NULL, 0, MA_Period_2, 0, MODE_SMA, PRICE_CLOSE, 2); //определение уровня MA

double Delete_Level = MA3;// Определение значения переменной

Mais l'ordre n'est pas supprimé à ce niveau de suppression. Aidez-moi à comprendre quelle est mon erreur.

 
où l'algorithme arrive-t-il ? Imprimez le code et vérifiez-le.
 
Que voulez-vous dire par "où va l'algorithme ?"
 
vovan-gogan:
Que voulez-vous dire par "où va l'algorithme ?"

Vous dites qu'il n'est pas supprimé, ce qui signifie qu'il ne va pas à OrderDelete.

La question est donc : où va-t-il ? Quelle condition le bloque ?

 
sergeev:

Vous dites qu'il n'est pas supprimé, ce qui signifie qu'il n'atteint pas OrderDelete.

La question est de savoir où il arrive et quelle condition le bloque.


Je comprends la logique. Je vais essayer de le réparer maintenant.
 

Quelque chose s'est éclairci. Mais je n'arrive toujours pas à trouver comment le résoudre. En utilisant Alert, je trouve que la condition

if (OrdersTotal()!=0 && Bid == Delete_Level)

n'est pas satisfaite. Juste "if(OrdersTotal()!=0" séparément oui, mais pas avec "Bid == Delete_Level". Quelle en est la raison ? Pourquoi lorsque le niveau de suppression est atteint, l'ordre en attente n'est pas supprimé. Veuillez suggérer quelque chose ou proposer une solution alternative pour supprimer un ordre en attente lorsqu'il atteint le niveau Delete_Level.

 
vovan-gogan:

Quelque chose s'est éclairci. Mais je n'arrive toujours pas à trouver comment le résoudre. En utilisant Alert, je trouve que la condition

n'est pas satisfaite. Juste "if(OrdersTotal()!=0" séparément oui, mais pas avec "Bid == Delete_Level". Quelle en est la raison ? Pourquoi lorsque le niveau de suppression est atteint, l'ordre en attente n'est pas supprimé. Veuillez suggérer quelque chose ou proposer une solution alternative pour supprimer un ordre en attente lorsqu'il atteint le niveau Delete_Level.


Normaliser ces variables, "les réduire à un dénominateur commun" - par exemple, utiliser une certaine tolérance (+/-) de la valeur de la variable Delete_Level, car il n'y a pas d'égalité exacte comme vous l'avez maintenant - Bid == Delete_Level.
 
vovan-gogan:

Quelque chose s'est éclairci. Mais je n'arrive toujours pas à trouver comment le résoudre. En utilisant Alert, je trouve que la condition

n'est pas satisfaite. Juste "if(OrdersTotal()!=0" séparément oui, mais pas avec "Bid == Delete_Level". Quelle en est la raison ? Pourquoi lorsque le niveau de suppression est atteint, l'ordre en attente n'est pas supprimé. Veuillez suggérer quelque chose ou proposer une solution alternative pour supprimer un ordre en attente lorsqu'il atteint le niveau Delete_Level.


Par exemple,
if(Bid-MarketInfo(Symbol(),MODE_SPREAD)*Point< Delete_Level && Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point > Delete_Level) - считать за 
if( Bid == Delete_Level )  
 

Désolée, mais pourriez-vous vous calmer ?) Aidez-moi à comprendre l'erreur en

Bid == Delete_Level