Automatische Kontrolle des Marktplatzes - Seite 6

 
Evgeniy Scherbina:
XAUUSDcheck wird nicht getestet. Aber das Testen ist erfolgreich, weil es alles andere testet....
Haben Sie doch einen Test gemacht? Ich habe es heute Morgen ausprobiert, und der Autotest ist ganz verschwunden, und der EA wurde direkt an den Moderator zum Testen weitergeleitet, wobei der Autotest umgangen wurde. Wie zuvor.
 
Gut zu wissen.
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:
Gut zu wissen.
"Wenn Sie glauben, dass Sie genug gewartet haben und das Problem immer noch besteht, schreiben Sie an den Kundendienst und warten Sie weiter ;-)".
 

und wie es sich gehört mit

OrderSend-Fehler 131

auf keinen Fall

Das Prüfgerät hat bei der automatischen Prüfung keinen Fehler.

Ich habe alle Anweisungen befolgt und es hat funktioniert:

OrderSend-Fehler 131

Uffffffff!!!!
 

Ich denke, dass die Autovalidierung das Erste ist, was ein Verkäufer durchmachen muss.

Auch ich habe einige Fehler gemacht, die auf Unachtsamkeit zurückzuführen sind.

Aber die Autovalidierung ist die erste Mauer vor "Typen", die kostenlosen Code aus einer Codebasis herunterladen und versuchen, ihn durch Änderung des Namens zu verkaufen. :-(

Leider gibt es deshalb Tausende von Programmen auf dem Markt, aus denen es schwierig ist, ein paar würdige zu finden.

Ich würde einen speziellen Code in die Codebase einfügen, damit Market ihn nicht zum Verkauf annimmt. Weil es weh tut :-( Hier verbringt man Jahre, sogar 5 Jahre damit, Programme zu entwickeln, zu optimieren und zu verbessern, um Kunden zufrieden zu stellen.

Und jemand hat das fertige Produkt heruntergeladen, den Namen geändert und es zu einem Dumpingpreis auf den Markt geworfen, und das war's.... Die Kunden denken: "Billiger heißt, ich kaufe es".....

Wie in China,

Ich sitze auf aliexpress - mindestens 5 Sticks für GOPRO günstig bestellt - das Ergebnis - eine Woche auf See - der Stick verrostet.

Das ist nicht meine Hand geht nach oben, um die ursprüngliche Stick für 100 Pfund, die nicht rosten zu kaufen. Aber nein, in China haben bereits 120 Pfund gegeben, und bestellte einen anderen Stick die gleiche ................. Fucking greed......

 
Stefan Stoyanov:

und wie es sich gehört mit

OrderSend-Fehler 131

auf keinen Fall

Das Prüfgerät hat bei der automatischen Prüfung keinen Fehler.

Ich habe alle Empfehlungen befolgt und trotzdem :

OrderSend-Fehler 131

Uffffffff!!!!
Sie müssen nur den Mindestwert überprüfen, und das ist gar nicht so schwer
 
Evgeniy Scherbina:
Sie müssen nur den Mindestwert überprüfen, und das ist gar nicht schwer.


Ich habe eine Funktion zur Berechnung einer Menge, die dies tut.

           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);}}
  
//================================================================
 

Es ist auch ein Beispiel auf dem Markt


//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
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);
  }
 

Vor dem Aufruf von OrderSend prüfe ich über

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

Trotz allem taucht der Fehler 131 wieder auf

 
Stefan Stoyanov:


Ich habe eine Vielberechnungsfunktion, die folgendes tut

           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);}}
  
//================================================================

Ihr lotDigit ist ein kniffliger Trottel, der immer 0 berechnet. Es ist nicht im Beispiel in der Dokumentation. Offenbar mögen Sie viele Klammern?

Auch dies: FreeMg*Risk/100/Margin/Schritt... Woher kommen die 100? Offensichtlich von der Decke.

Das sind eine ganze Menge Saiten. Das ist wirklich viel, was rechnest du?