Lotsizestep

 

Hallo,


wie füge ich Lotsizestep zu einem MT4 und zu einem MT5 EA hinzu?


folgendes habe ich versucht:

input int LotsizeStep =5000; 

double Accountbalance=AccountInfoDouble(ACCOUNT_BALANCE);

double amount    =  Accountbalance / LotsizeStep * 0.01;


Das hat soweit auch funktioniert, allerdings nur wenn Accountbalance größer als 5000 war.

Das soll aber auch bei einem z.b. 1000 Account funktionieren.


Es kommt invalid Volume als Fehler.

 

Lotsizestep wird vom Broker gesetzt und ist als VolumeStep in den Spezifikationen angegeben oder unter den Infos des Symbols: double VolStp  = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);

Im Mt4 ist das ähnlich.

Hier ein Link für alle, die das Programmieren von MQL5 lernen wollen: https://www.mql5.com/de/forum/455957#comment_50048608
Überfliege die Beiträge und lande dort wo Du es brauchst.
Dokumentation zu MQL5: MQL5 Funktionenliste
Dokumentation zu MQL5: MQL5 Funktionenliste
  • www.mql5.com
MQL5 Funktionenliste - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 

LotsizeStep kann und soll man selbst setzen können.

Unter MT4 funktioniert das alles auch. Siehe Screenshot:

EA

Nur MT5 hat damit Probleme (invalid Volume). (Auch mit einem nicht perfekt teilbarem Wert).

Beispiel:

Account hat 6000 Balance und lotsizestep ist 5000.

kommt als Ergebnis 0.012 lots.

Das checkt MT5 nicht.


Wie kann ich double amount "abschneiden"? so dass es nur 2 stellen hinter dem Komma hat?

 

ok, habs hinbekommen:

double accountbalance=AccountInfoDouble(ACCOUNT_BALANCE);

double acc     = accountbalance / LotsizeStep * 0.01 + 0.01;

string dts     = DoubleToString(acc,2);

double std     = StringToDouble(dts);

double amount  = std;


EA


ziemlich gut geworden der EA.

 
Matthias Bessler #:

ok, habs hinbekommen:

double accountbalance=AccountInfoDouble(ACCOUNT_BALANCE);

double acc     = accountbalance / LotsizeStep * 0.01 + 0.01;

string dts     = DoubleToString(acc,2);

double std     = StringToDouble(dts);

double amount  = std;



ziemlich gut geworden der EA.

Naja, mach ein Signal daraus (geht jetzt nur noch mit Echtgeld-Konten!) und dann schauen wir, wie der EA sich schlägt.

 
Kommt bald. Er ist Teil eines ganzen Portfolios von insgesamt 7 EAs.