Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 21.03.18
deadlef deadlef ist offline
Neues Mitglied
 
Registriert seit: May 2015
Beiträge: 12
deadlef befindet sich auf einem aufstrebenden Ast
Standard MQL Market Validierung

Hallo,

ich wollte einen EA bei mql im market verkaufen bzw zur verfügung stellen. Jetzt gibt es dort aber einen Validierungsprozess. Mein Ea läuft soweit im Strategietester und compiler ohne Fehler. Allerdings wird vom mql market folgendes im code gebraucht zur überprüfung.

https://www.mql5.com/de/articles/2555#not_enough_money
https://www.mql5.com/de/articles/2555#invalid_lot

Folgende Funktionen werden zur Verfügung gestellt.

PHP-Code:
bool CheckMoneyForTrade(string symbdouble lots,int type)
  {
   
double free_margin=AccountFreeMarginCheck(symb,type,lots);
   
//-- wenn es Geldmittel nicht ausreichend sind
   
if(free_margin<0)
     {
      
string oper=(type==OP_BUY)? "Buy":"Sell";
      Print(
"Not enough money for "oper," ",lots" "symb" Error code=",GetLastError());
      return(
false);
     }
   
//-- die Überprüfung ist erfolgreich gelaufen
   
return(true);
  } 
Bloß wie führe ich diese aus.

Genauso wie dieses hier:
PHP-Code:
//+------------------------------------------------------------------+
//|  Überprüft den Volumen der Order auf die Korrektheit             |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- der minimale erlaubte Volumens für die Handelsoperationen
   
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(
volume<min_volume)
     {
      
description=StringFormat("der Volumen ist weniger den minimalen erlaubten SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(
false);
     }

//--- der maximale erlaubte Volumens für die Handelsoperationen
   
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(
volume>max_volume)
     {
      
description=StringFormat("der Volumen ist mehr den maximalen erlaubten SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(
false);
     }

//--- wir bekommen die minimale Gradation des Volumens
   
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("Der Volumen ist divisibel der minimalen Gradation SYMBOL_VOLUME_STEP=%.2f, des nächsten korrekten Volumens %.2f",
                               
volume_step,ratio*volume_step);
      return(
false);
     }
   
description="Der korrekte Wert des Volumens";
   return(
true);
  } 

Reicht es aus nur die Funktionen einzubinden?