[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 451

 
Vinin:

Pourquoi le proverbe anglais "les grands esprits pensent de la même façon" en russe
correspond à la phrase "les imbéciles pensent de la même façon" ?

 
Vinin >>:

Наверно надо предварительно выбрать ордер.

Je sais, j'ai déjà écrit à la page 445 mais j'ai toujours un problème.


Mon problème est d'arriver à un point ridicule. Erreur dans la fonction de fermeture de l'ordre.

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

J'ai obtenu une erreur (dans différents terminaux)

EURCHF,M5 : Erreur OrderClose 4107

EURCHF,M5 : prix invalide 1.48566000 pour la fonction OrderClose


si je le fais

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

la même erreur. Mais lorsque j'écris OrderClose(...) non pas dans une fonction séparée, mais dans int start(), cette erreur ne se produit pas.

Quel est le problème et comment le résoudre ?



 
Urain писал(а) >>

Pourquoi le proverbe anglais "les grands esprits pensent de la même façon" en russe
correspond à "les imbéciles se ressemblent" ?

Alors on a de la chance.

 
T-G писал(а) >>

Je sais, j'ai déjà écrit à la page 445 mais j'ai toujours un problème.

Mon problème est d'arriver à un point ridicule. Erreur dans la fonction de fermeture de l'ordre.

J'ai obtenu une erreur (dans différents terminaux)

EURCHF,M5 : Erreur OrderClose 4107

EURCHF,M5 : prix invalide 1.48566000 pour la fonction OrderClose

si je le fais

la même erreur. Mais lorsque j'écris OrderClose(...) non pas dans une fonction séparée, mais dans int start(), cette erreur ne se produit pas.

Quel est le problème et comment le résoudre ?

Je ne sais pas, je ne sais pas. J'utilise toujours ma propre fonction pour clôturer l'ordre.

Par exemple, celui-ci.

//+------------------------------------------------------------------+
//|                                         Функция закрытия ордеров |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| void Order_Close(int lMagic, int lOP=-1);                        |
//+------------------------------------------------------------------+
void Order_Close(int lMagic, int lOP=-1){
   bool res;
   GetLastError();
   for(int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))   continue;
      if (OrderSymbol() != Symbol())                     continue;
      if (OrderMagicNumber() != lMagic)                   continue;
      if (OrderType()!= lOP && lOP!=-1)                     continue;
      
      RefreshRates();
      double _ask      =MarketInfo(Symbol(),MODE_ASK);
      double  _bid     =MarketInfo(Symbol(),MODE_BID);
      double  _point   =MarketInfo(Symbol(),MODE_POINT);
      double  _digits  =MarketInfo(Symbol(),MODE_DIGITS);

      double ClosePrice=NormalizeDouble( iif(OrderType()==OP_BUY,_bid, _ask),_digits);
      res=OrderClose(OrderTicket(), OrderLots(), ClosePrice, 3, iif(OrderType()==OP_BUY, clCloseBuy, clCloseSell));
      if (! res) {
         int err=GetLastError();
         Print("Error(", err,") delete order ", NameOP[ lOP],": ", ErrorDescription( err));
      }
   }
}

Pour l'utiliser, vous avez besoin de plus de fonctions

//+------------------------------------------------------------------+
//|                                    Функция логического сравнения |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| double iif(bool A, double B, double C);                          |
//+------------------------------------------------------------------+
double iif(bool A, double B, double C) {if( A) return( B); return( C); }
 

Aide à résoudre le problème du contrôle des trous d'histoire. Veuillez me conseiller sur un mécanisme qui fonctionne réellement pour que le conseiller expert puisse détecter l'erreur 4066.

S'il n'y a pas de contrôle univoque sur la procédure de chargement des données historiques, le trading à l'aide d'Expert Advisors n'a aucun sens.

Le risque d'un tel trading tend tout simplement vers l'infini, quelle que soit la stratégie de trading utilisée.


J'ai été très surpris de constater que la solution à ce problème, l'utilisateur doit la trouver par lui-même et à un seul endroit.

Je pense que l'absence de soutien clair de la part du développeur sur cette question est un pur coup monté.

Je pense que MetaQuotes pourrait publier un ensemble de solutions recommandées et testées pour les questions et problèmes courants.

 
MoneyJinn писал(а) >>

Je pense que MetaQuotes pourrait publier un ensemble de solutions recommandées et testées pour les questions et les tâches courantes.

L'article "Graphes sans trous". pourrait vous aider... https://www.mql5.com/ru/articles/1407

 

Le sujet est "toute question" et pas seulement sur le code, non ?

J'ai une question, ou plutôt je veux une opinion, où pensez-vous que le prix va aller ?



 
T-G >>:

Тема же называется "любой вопрос" а не только по коду?

У меня вопрос, а точнее хочется узнать мнение, куда по вашему мнению двинется цена?

ce n'est pas une question pour les débutants :)

 
Aidez à résoudre ce problème.
S'il existe une fonction qui divise un lot surdimensionné en plusieurs commandes, merci de la partager.

Merci.