Lors de la création de la rubrique"AccountInfo... Pertinence de l'information", j'ai appris qu'il y a des fonctions qui utilisent des données "mises en cache dans l'environnement du logiciel" et d'autres qui ont toujours un "accès direct aux données réelles".
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.
Et après avoir modifié la fonction pour ne pas inclure les ordres en attente, elle donne 0
double NewOrderAllowedVolume(string symbol)
{
double allowed_volume=0;
//--- obtenir la limitation du volume maximal d'une commandedouble symbol_max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
//--- obtenir la limitation du volume par un symboledouble max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_LIMIT);
//--- obtenir le volume de la position ouverte d'un symboledouble opened_volume=PositionVolume(symbol);
if(opened_volume>=0)
{
//--- si nous avons déjà utilisé le volume disponibleif(max_volume-opened_volume<=0)
return(0);
//--- le volume de la position ouverte ne dépasse pas 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);
}
C'est parce que max_volume est 0 et open_volume est 0 ;
Pourquoi le volume max est 0 s'il n'y a pas de positions ouvertes ?
Predefined Macro Substitutions - Named Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
Nous vous remercions.
SYMBOL_VOLUME_LIMIT' - identifiant non déclaré.............
'SymbolInfoDouble' - aucune des surcharges ne peut être appliquée à l'appel de la fonction.............
Est-ce que c'est juste moi ?
SYMBOL_VOLUME_LIMIT' - identifiant non déclaré.............
'SymbolInfoDouble' - aucune des surcharges ne peut être appliquée à l'appel de la fonction.............
Est-ce que c'est juste moi ?
Pouvez-vous faire cela ?
Encore une question sur la fonction SeriesInfoInteger().
Lors de la création de la rubrique"AccountInfo... Pertinence de l'information", j'ai appris qu'il y a des fonctions qui utilisent des données "mises en cache dans l'environnement du logiciel" et d'autres qui ont toujours un "accès direct aux données réelles".
A quelle catégorie de fonctions appartient la fonction SeriesInfoInteger()?
Le code suivant est utilisé dans la fonction CheckVolumeValue :
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);
}
Mais il est plus correct :
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);
}
Parce que le pas minimum de changement de volume doit être compté à partir de la valeur minimum.
Et peut-être que l'extrait de code
//--- вычислим значение маржи
bool check=OrderCalcMargin(type,Symbol(),lots,last_tick.ask,margin);
devrait être remplacé par :
//--- вычислим значение маржи
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);
En raison des modifications apportées à MQL5, le volume global maximal autorisé pour un symbole peut être obtenu comme suit :
N'utilisez pas l'ancienne variante ! Elle se présentait comme suit :
L'article a été corrigé et le nouveau code expert Check_Order_And_Volume_Limits.mq5 y a été joint.Cher administrateur
J'essaie d'utiliser cette fonction mais elle renvoie 0 dans tous les cas.
Mon MT5 build est 2280
double orders_volume_on_symbol=PendingsVolume(symbol);donne une erreur, aucune fonction de ce type
Et après avoir modifié la fonction pour ne pas inclure les ordres en attente, elle donne 0
C'est parce que max_volume est 0 et open_volume est 0 ;
Pourquoi le volume max est 0 s'il n'y a pas de positions ouvertes ?
Version 2715