Contrôle automatique de la place de marché - page 6

 
Evgeniy Scherbina:
XAUUSDcheck n'est pas testé. Mais le test est réussi parce qu'il teste tout le reste.....
Avez-vous fait un test après tout ? J'ai essayé ce matin et l'autotest a complètement disparu et l'EA a été directement envoyé au modérateur pour être testé, sans passer par l'autotest. Comme avant.
 
Bon à savoir.
Solving Atomatic Validation Problems
Solving Atomatic Validation Problems
  • 2017.01.11
  • Stanislav Korotky
  • www.mql5.com
If you're distributing some products for MetaTrader 4/5 via the Market, you probably know that a special "welcome" stage of automatic product validation has been added recently by MetaQuotes on the...
 
fxsaber:
Bon à savoir.
"Si vous pensez avoir attendu assez longtemps et que le problème persiste, écrivez au service d'assistance et attendez encore ;-)".
 

et comme il se doit avec

Erreur OrderSend 131

pas du tout

Il n'y a pas d'erreur dans le testeur sur le test automatique

J'ai suivi toutes les instructions et ça a marché :

ErreurOrderSend 131

Uffffff !!!!
 

Je pense que l'autovalidation est la première chose qu'un vendeur doit faire.

Moi aussi, j'ai eu ma part d'erreurs, et elles étaient dues à l'inattention.

Mais, l'autovalidation est le premier mur face aux "mecs" qui téléchargent du code gratuit à partir d'une base de code et essaient de le vendre en changeant le nom. :-(

Malheureusement, pour cette raison, il existe des milliers de programmes sur le marché, parmi lesquels il est difficile de trouver quelques programmes valables.

Je mettrais un code spécial dans le codebase pour que Market ne l'accepte pas à la vente. Parce que ça fait mal :-( ici, on passe des années, voire 5 ans, à développer, peaufiner et améliorer des programmes pour satisfaire les clients.

Et quelqu'un a téléchargé le produit fini, en a changé le nom, l'a mis sur le marché à un prix de dumping, et c'est tout. .... Les clients pensent que "moins cher signifie que je l'achète".....

Comme en Chine,

Je m'assieds sur aliexpress - au moins 5 bâtons pour GOPRO commandés à bas prix - le résultat - une semaine en mer - le bâton rouillé.

Ce n'est pas ma main qui se lève pour acheter le bâton original pour 100 livres, qui ne rouille pas. Mais non, en Chine j'ai déjà donné 120 livres, et j'ai commandé un autre bâton du même .................. Putain d'avidité......

 
Stefan Stoyanov:

et comme il se doit avec

Erreur OrderSend 131

pas du tout

Il n'y a pas d'erreur dans le testeur sur le test automatique

J'ai fait toutes les recommandations et pourtant :

ErreurOrderSend 131

Uffffff !!!!
Il suffit de vérifier la valeur minimale et ce n'est pas difficile du tout.
 
Evgeniy Scherbina:
Il vous suffit de vérifier la valeur minimale et ce n'est pas difficile du tout.


J'ai beaucoup de fonctions de calcul qui font cela.

           double LotsOptimized()
    { int     lotDigit=(int)fabs(log10(SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP)));
            if(!MathIsValidNumber(lotDigit)) lotDigit=0;  
{
double FreeMg =AccountFreeMargin();
double Margin =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Minlot =MarketInfo(Symbol(),MODE_MINLOT);
double MaxLot =MarketInfo(Symbol(),MODE_MAXLOT);
double loty =MathFloor(FreeMg*Risk/100/Margin/Step)*Step;
loty = NormalizeDouble(loty,lotDigit);
if(loty<Minlot) loty=Minlot;
if(loty>MaxLot) loty=MaxLot;  
      Lots=loty;
      Lots=NormalizeDouble(Lots,lotDigit);

      return (Lots);}}
  
//================================================================
 

Il existe également un exemple sur le marché


//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Корректное значение объема";
   return(true);
  }
 

Avant d'appeler OrderSend, je vérifie via

si (CheckVolumeValue(Lots,com) ==false )return(0) ;

Malgré tout, l'erreur 131 réapparaît.

 
Stefan Stoyanov:


J'ai beaucoup de fonctions de calcul qui font ceci

           double LotsOptimized()
    { int     lotDigit=(int)fabs(log10(SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP)));
            if(!MathIsValidNumber(lotDigit)) lotDigit=0;  
{
double FreeMg =AccountFreeMargin();
double Margin =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Minlot =MarketInfo(Symbol(),MODE_MINLOT);
double MaxLot =MarketInfo(Symbol(),MODE_MAXLOT);
double loty =MathFloor(FreeMg*Risk/100/Margin/Step)*Step;
loty = NormalizeDouble(loty,lotDigit);
if(loty<Minlot) loty=Minlot;
if(loty>MaxLot) loty=MaxLot;  
      Lots=loty;
      Lots=NormalizeDouble(Lots,lotDigit);

      return (Lots);}}
  
//================================================================

Votre lotDigit est un imbécile qui calcule toujours 0. Il n'est pas dans l'exemple de la documentation. Apparemment, vous aimez beaucoup de crochets ?

Aussi ceci : FreeMg*Risk/100/Margin/Step... D'où vient le chiffre 100 ? De toute évidence, du plafond.

C'est beaucoup de cordes. C'est vraiment beaucoup, que calculez-vous ?