Beim Erstellen des Themas"AccountInfo... Informationsrelevanz" habe ich gelernt, dass es Funktionen gibt, die "in der Softwareumgebung zwischengespeicherte Daten" verwenden und es gibt Funktionen, die immer "direkten Zugriff auf aktuelle Daten" haben.
Zu welcher Kategorie von Funktionen gehört die Funktion SeriesInfoInteger()?
Die beigefügten Quellcodedateien und die Quellcodeeinschübe im HTML-Code sind jetzt vollständig ins Portugiesische übersetzt, um Ihnen die Arbeit zu erleichtern.
You have just registered and most likely you have questions such as, "How do I insert a picture to my a message?" "How do I format my MQL5 source code?" "Where are my personal messages kept?" You may have many other questions. In this article, we have prepared some hands-on tips that will help you get accustomed in MQL5.community and take full advantage of its available features.
Und nachdem ich die Funktion so modifiziert habe, dass sie keine schwebenden Aufträge berücksichtigt, ergibt sie 0
double NewOrderAllowedVolume(string symbol)
{
double allowed_volume=0;
//--- die Begrenzung des Höchstvolumens eines Auftragsdouble symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- Ermittlung der Volumenbegrenzung durch ein Symboldouble max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);
//--- Ermitteln des Volumens der offenen Position für ein Symboldouble opened_volume=PositionVolume(symbol);
if(opened_volume>=0)
{
//--- wenn wir bereits verfügbares Volumen verwendet habenif(max_volume-opened_volume<=0)
return(0);
//--- das Volumen der offenen Position überschreitet nicht max_volume//double orders_volume_on_symbol=PendingsVolume(symbol);//allowed_volume=max_volume-opened_volume-orders_volume_on_symbol;
allowed_volume=max_volume-opened_volume;
if(allowed_volume>symbol_max_volume) allowed_volume=symbol_max_volume;
}
return(allowed_volume);
}
Das liegt daran, dass max_volume 0 ist und opened_volume 0;
Warum ist das maximale Volumen 0, wenn es keine offenen Positionen gibt?
Predefined Macro Substitutions - Named Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
Ich danke Ihnen.
SYMBOL_VOLUME_LIMIT' - nicht deklarierter Bezeichner.............
'SymbolInfoDouble' - keine der Überladungen kann auf den Funktionsaufruf angewendet werden.............
Liegt es nur an mir?
SYMBOL_VOLUME_LIMIT' - nicht deklarierter Bezeichner.............
'SymbolInfoDouble' - keine der Überladungen kann auf den Funktionsaufruf angewendet werden.............
Liegt das nur an mir?
Können Sie das tun?
Noch eine Frage zur Funktion SeriesInfoInteger().
Beim Erstellen des Themas"AccountInfo... Informationsrelevanz" habe ich gelernt, dass es Funktionen gibt, die "in der Softwareumgebung zwischengespeicherte Daten" verwenden und es gibt Funktionen, die immer "direkten Zugriff auf aktuelle Daten" haben.
Zu welcher Kategorie von Funktionen gehört die Funktion SeriesInfoInteger()?
Der folgende Code wird in der Funktion CheckVolumeValue verwendet:
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);
}
Aber er ist korrekter:
int ratio = (int)MathRound((volume-min_volume)/volume_step);
if (MathAbs(ratio*volume_step+min_volume-volume)>0.0000001)
{
description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
volume_step,ratio*volume_step+min_volume);
return(false);
}
Denn der minimale Schritt der Volumenänderung muss vom Minimalwert aus gezählt werden.
Und vielleicht sollte der Codeschnipsel
//--- вычислим значение маржи
bool check=OrderCalcMargin(type,Symbol(),lots,last_tick.ask,margin);
ersetzt werden durch:
//--- вычислим значение маржи
double price = (type == ORDER_TYPE_BUY || type == ORDER_TYPE_BUY_LIMIT || type == ORDER_TYPE_BUY_STOP || type == ORDER_TYPE_BUY_STOP_LIMIT) ? last_tick.ask : last_tick.bid;
bool check=OrderCalcMargin(type,Symbol(),lots,price,margin);
Aufgrund von Änderungen in MQL5 kann nun das maximal zulässige Gesamtvolumen für ein Symbol wie folgt ermittelt werden:
Verwenden Sie nicht die alte Variante! Sie war wie folgt:
Der Artikel wurde korrigiert und der neue Expertencode Check_Order_And_Volume_Limits.mq5 wurde angehängt.Lieber Admin
ich versuche, diese Funktion zu verwenden, aber sie gibt in allen Fällen 0 zurück.
Mein MT5-Build ist 2280
double orders_volume_on_symbol=PendingsVolume(symbol);gibt Fehler, keine solche Funktion
Und nachdem ich die Funktion so modifiziert habe, dass sie keine schwebenden Aufträge berücksichtigt, ergibt sie 0
Das liegt daran, dass max_volume 0 ist und opened_volume 0;
Warum ist das maximale Volumen 0, wenn es keine offenen Positionen gibt?
Build 2715