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

 
artem86:

Pouvez-vous m'aider ? Comment fermer 5 ordres en attente avec la même magie lorsqu'un certain prix est atteint.

Merci d'avance !


if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderClose(OrderTicket(),LOT,price,3)==true)
            {  Print("Error = ",GetLastError()); return(0);
}  }  }  }  }
Si tous ces ordres ont été ouverts pour vendre, alors le prix est égal à Ask, si c'est pour acheter , alors le prix est égal à Bid.
 
paladin80:
Si l'ordre a été ouvert pour vendre, alors le prix est égal à Ask, si l'ordre a été ouvert pour acheter, alors le prix est égal à Bid.


Faux, tu devrais

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderDelete(OrderTicket())==true)
              {  
              Print("Error = ",GetLastError()); return(0);
              } 
         } 
      }  
   }  
}
 
r772ra:


Faux, tu dois

Merde, je n'ai pas remarqué que j'aurais dû fermer les ordres en attente, je pensais à fermer des positions.
 

Les gars - dites-moi, dans le testeur, et ensuite lors du trading sur le compte de trading, y compris manuellement, il s'avère qu'il est possible de NE PAS NORMALISER le volume de la position ouverte, alors qu'elle sera ouverte par le volume requis. Par exemple, si j'ouvre un ordre avec 0,1210 lots, le terminal ouvrira avec 0,12, c'est-à-dire que la partie fractionnelle "supplémentaire" est éliminée par défaut.

Veuillez indiquer s'il s'agit d'une autre "mise à jour" du terminal ou si cela était possible à l'origine.

J'ai utilisé cette méthode de normalisation du volume auparavant mais j'ai manqué ce point dans une de mes opérations et les ordres continuent à s'ouvrir et l'onglet Expert Advisors me donne avant d'ouvrir une position le volume préliminaire à ouvrir, en particulier, 0.121 lots - je teste ceci sur un compte de démonstration.

Fonction de normalisation du lot :

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotStep, 0) * lotStep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}

Je l'ai dit dès le début de l'EA :

// ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (lastType == OP_SELL) WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask, 0, 0, "итерация" , MagicNumber);
                    if (lastType == OP_BUY)  WmOrderSend(Symbol(), OP_SELL,Lots_New, Bid, 0, 0, "итерация" , MagicNumber);

Qui est au courant - commentez, s'il vous plaît...

P.S. J'ai vérifié à nouveau - apparemment il y a une situation qui fait que lorsque vous essayez d'ouvrir un volume de 0.1466 - il ouvre 0.14, c'est-à-dire qu'il rejette tout ce qui est à droite du 2ème signe après la virgule.

Si vous effectuez la normalisation, il semble que cela ouvrira 0,15 lot - c'est-à-dire avec l'arrondi.

Je vais devoir vérifier...

P.P.S. Tout de même : Qui sait - commentez, s'il vous plaît...

 

Ignorer, putain.

 
AIDEZ-MOI...S'IL VOUS PLAÎT...J'exécute le conseiller expert sur un compte démo et un compte réel, il dit : sera lancé au prochain tick...Le tick arrive mais il ne démarre pas bien que l'option "autoriser l'EA à trader" soit cochée, l'EA est activé, aucune erreur dans le journal, l'Internet fonctionne et d'autres EAs fonctionnent également.Ce conseiller fonctionne bien dans le testeur.Si cela peut aider : l'EA a cessé de fonctionner après que j'ai ajouté la fonction de filtre de cet article en elle.
 
sellena:
Si cela peut vous aider : l'EA a cessé de s'activer après que j'ai ajouté la fonction de filtre de cet article.

Si cela peut vous aider, parlez à l'un des travailleurs ici.
 
sergeev:

Si cela peut vous aider, parlez à l'un des travailleurs ici.
Alex, jette un coup d'oeil à ma question si tu as le temps... Merci.
 
Roman.:
Alex, jette un coup d'oeil à ma question si tu as le temps... Merci.

Je peux vous dire une chose : j'ai déjà contacté le service (à une autre occasion) et ils m'ont dit : "se fier aux valeurs par défaut est néfaste, utilisez vos propres filtres et traitements si vous voulez être sûr". Donc, c'est à vous...
 
Roman.:
Alex, jetez un coup d'œil à ma question si vous avez le temps... Merci.

La FAQ le dit bien. Vous ne pouvez pas vous fier aux "valeurs par défaut". Parce que je me souviens que l'erreur 131 (mauvais lot) apparaissait souvent, si vous ne faites pas une normalisation avant d'envoyer une commande.
Peut-être que maintenant les MMOs ont fait leur propre vérification de lot par défaut sur les serveurs lorsqu'ils envoient un ordre pour exécution.

Vous devez donc toujours effectuer votre propre normalisation des prix et des lots avant de les envoyer.

C'est pour vous les règles d'un bon codage et le gage de moins de tracas avec des problèmes potentiels à l'avenir.