C'est le calcul pour le FOREX. Le reste est similaire.
Super, il ne reste plus qu'à apporter la marge dans la devise de dépôt, car la marge, par exemple, pour AUDCAD avec la devise de dépôt USD doit être en USD.
Alexey Volchanskiy: Super, tout ce que nous avons à faire est d'apporter la marge dans la devise de dépôt, parce que la marge, par exemple, pour AUDCAD avec la devise de dépôt USD doit être en USD.
Alexey Volchanskiy: Super, maintenant nous devons apporter la marge dans la devise de dépôt, parce que la marge, par exemple pour AUDCAD avec la devise de dépôt USD devrait être en USD.
on dirait que SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE ) dans la fonction est juste pour ça... pour apporter des lots pour déposer la devise
Tout fonctionne bien en forex, mais il y a une dernière question : "pourquoi est-il divisé par deux et comment le réparer ?".
J'ai constaté que la marge sur SGDJPY est plusieurs fois différente sur le serveur FIBOGroup-MT5 et les serveurs MetaQuotes-Demo. Cela suggère que MT5 calcule lui-même la marge avec des erreurs. Eh bien, si c'est le cas, il n'y a pas de norme de comparaison. Par conséquent, je ne peux pas dire avec certitude s'il s'agit d'une erreur de mon implémentation ou des développeurs. Je pense qu'il y a une erreur dans les deux cas. Le problème est le manque d'informations correctes.
fxsaber: J'ai constaté que sur SGDJPY la marge est plusieurs fois différente sur le serveur FIBOGroup-MT5 et les serveurs MetaQuotes-Demo. Cela suggère que MT5 calcule lui-même la marge avec des erreurs. Eh bien, si c'est le cas, il n'y a pas de norme de comparaison. Par conséquent, je ne peux pas dire avec certitude s'il s'agit d'une erreur de mon implémentation ou des développeurs. Je pense qu'il y a une erreur dans les deux cas. Le problème est le manque d'informations correctes.
J'ai deux serveurs qui s'affichent correctement, avec une exception - mise en évidence en rouge.
Vous devez bien comprendre que dans MT5, les exigences de marge peuvent être très différentes selon les directions. C'est-à-dire qu'une seule variante MT4 peut ne pas fonctionner. Sur le Forex, bien sûr, ce ne sera pas le cas. Mais tu dois te rappeler. Par conséquent, en général, vous devriez l'écrire comme ceci
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
La solution est venue tout de suite.
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) * SymbolInfoDouble(Symb, SYMBOL_TRADE_CONTRACT_SIZE) *
SymbolInfoDouble(Symb, SYMBOL_POINT) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Super, tout ce que nous avons à faire est d'apporter la marge dans la devise de dépôt, parce que la marge, par exemple, pour AUDCAD avec la devise de dépôt USD doit être en USD.
Super, maintenant nous devons apporter la marge dans la devise de dépôt, parce que la marge, par exemple pour AUDCAD avec la devise de dépôt USD devrait être en USD.
C'est ce qui a été fait.
Tout fonctionne bien dans le forex, sauf que la dernière question reste : " pourquoi deux fois moins, et comment y remédier ? ".
Tout fonctionne bien en forex, mais il y a une dernière question : "pourquoi est-il divisé par deux et comment le réparer ?".
J'ai constaté que sur SGDJPY la marge est plusieurs fois différente sur le serveur FIBOGroup-MT5 et les serveurs MetaQuotes-Demo. Cela suggère que MT5 calcule lui-même la marge avec des erreurs. Eh bien, si c'est le cas, il n'y a pas de norme de comparaison. Par conséquent, je ne peux pas dire avec certitude s'il s'agit d'une erreur de mon implémentation ou des développeurs. Je pense qu'il y a une erreur dans les deux cas. Le problème est le manque d'informations correctes.
J'ai deux serveurs qui s'affichent correctement, avec une exception - mise en évidence en rouge.
Comment trouver la propriété surlignée en rouge ?
Merci !
J'ai deux serveurs qui s'affichent correctement, avec une exception - mise en évidence en rouge.
Comment puis-je trouver la propriété surlignée en rouge ?
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask *
SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Vous devez bien comprendre que dans MT5, les exigences de marge peuvent être très différentes selon les directions. C'est-à-dire qu'une seule variante MT4 peut ne pas fonctionner. Sur le Forex, bien sûr, ce ne sera pas le cas. Mais tu dois te rappeler. Par conséquent, en général, vous devriez l'écrire comme ceci
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) /
(SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;
return(Res);
}
C'est ce qui a été fait.
Blague MT5 sur le serveur FIBOGroup-MT5 SGDJPY
Dans cette situation, MyOrderCalcMargin compte correctement mais pas le OrderCalcMargin normal !
Farce MT5 sur le serveur FIBOGroup-MT5 SGDJPY
Dans cette situation, MyOrderCalcMargin compte correctement mais pas le OrderCalcMargin normal !