Caractéristiques du langage mql5, subtilités et techniques - page 10

 
Alexey Volchanskiy:
Y a-t-il un moyen de calculer la marge couverte ?
Je pense que vous pouvez tout calculer via les fonctions Symbol.
 
fxsaber:
Merci pour le conseil ! Dans la nature, c'est SymbolInfoMarginRate. Donc maintenant c'est comme ça
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
}

Nous devons être clairs sur le fait que dans MT5, il peut y avoir des exigences de marge très différentes dans différentes 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
// Альтернатива OrderCalcMargin
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
}

Merci beaucoup ! Il fonctionne partout maintenant sans aucun problème.

Je me demande si la fonction"MyOrderCalcMargin" est toujours commercialisée, et si oui, comment la commercialiser au moins dans le testeur)

 
fxsaber:
Je pense que vous pouvez tout calculer via les fonctions Symbol.
Malheureusement, les fonctions de Symbol fonctionnent de travers

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, compte en USD, RTS-3.17.

TickValue donne une valeur erronée - en roubles, et non dans la devise du compte (USD).

FxPro-ECN. Les symboles GOLD et GOLDEURO ont la même TickValue. Bien que, évidemment, ils devraient être différents en période EURUSD.

 
fxsaber:

Farce MT5 sur le serveur FIBOGroup-MT5 SGDJPY

Dans cette situation, MyOrderCalcMargin calcule correctement, alors que le OrderCalcMargin normal ne le fait pas !


La fonction normale compte conformément à la spécification du contrat spécifié dans les paramètres de l'instrument - avec la devise de marge NOK, respectivement, pour un lot est pris 1000 NOK.

Vous considérez probablement comme un fractionnement le nom de la paire de devises SGDJPY - vous obtenez 1000 SGD pour un lot.

Par conséquent, le problème est une mauvaise spécification du contrat de la part du courtier. Contactez le courtier du serveur approprié.

 
fxsaber:

C'est-à-dire que pour rendre tous les OrderSend synchronisés avec l'environnement de trading et éviter les pièges, il suffit de faire le code source donné comme un fichier mqh et de faire les #include correspondants dans vos programmes.

Vous pouvez arrêter de danser avec le tambourin.

SD m'a dit que dans la prochaine version, OrderSend() fonctionnera correctement :)

 
MQ Alexander:

La fonction régulière compte selon les spécifications du contrat spécifiées dans les paramètres de l'instrument - avec la devise de marge NOK, respectivement, pour un lot, il faut 1000 NOK.

Dans votre cas, il doit s'agir d'un split du nom de la paire de devises SGDJPY - pour un lot, 1000 SGD sont facturés.

Par conséquent, le problème est une mauvaise spécification du contrat de la part du courtier. Contactez le courtier du serveur approprié.

Le MT5 possède un mécanisme interne caché qui peut convertir n'importe quelle devise dans la devise du compte. Dans ce cas, OrderCalcMargin 1000 NOK est converti en un nombre approprié d'USD et le produit.

Veuillez rendre ce mécanisme public. Par exemple,

double CurrencyExchange( const string Currency ); // возвращает курс валюты Currency к валюте счета

Ces taux de change sont disponibles à 100% dans le terminal, puisque c'est OrderCalcMargin qui les calcule. Leur travail est particulièrement visible sur les comptes MetaQuotes-Demo en USD lorsque vous prenez les symboles FORTS - leur devise de marge est en RUR.

Ceci est particulièrement pertinent en raison de la puce/bug TickValue.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.02.28 10:48

Metaquotes-Demo, compte en USD, RTS-3.17.

TickValue donne une valeur erronée - en roubles, et non dans la devise du compte (USD).

FxPro-ECN. Les symboles GOLD et GOLDEURO ont la même TickValue. Bien que, évidemment, ils devraient être différents en période EURUSD.

 
Bonjour, je suis en train de lire la documentation :
OrdersTotal

Возвращает количество действующих ордеров.

int  OrdersTotal();

Возвращаемое значение

Значение типа int.

Примечание

Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
Et où puis-je trouver le décryptage du terme"ordres actifs" ?
" ordres actifs en attente", et " ordres NON actifs en attente", qu'est-ce que c'est ?
 
Leo59:
Bonjour, je suis en train de lire la documentation :
OrdersTotal

Возвращает количество действующих ордеров.

int  OrdersTotal();

Возвращаемое значение

Значение типа int.

Примечание

Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты". Ордер – это распоряжение на проведение торговой операции, а позиция является результатом одной или нескольких сделок.

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

Смотри также

OrderSelect(), OrderGetTicket(), Свойства ордеров
Et où puis-je trouver le décryptage du terme"ordres actifs" ?
" ordres en attente valides", et " ordres en attente NON valides" , qu'est-ce que c'est ?

Ordres en attente - bystop, sellstop, bylimit et bystop.

Positions - achat et vente.

Non actif - ordres supprimés et positions fermées.

 
Vitaly Muzichenko:

Ordres en attente - bystop, sellstop, bylimit et bystop.

Positions - achat et vente.

Non actif - ordres supprimés et positions fermées.

Vitaly Muzichenko : Merci !
Puisqu'un ordre est un ordre d'effectuer une opération commerciale, seuls les ordres en attente peuvent être considérés comme des "ordres actifs", alors que les positions d'achat et de vente ne sont pas des ordres d'effectuer une opération commerciale. Ou est-ce que je "rate quelque chose" ?
 
Ordres actifs - ordres de transaction qui sont en attente d'exécution ou d'annulation, à l'exception des ordres TP/SL et MarginCall. Les ordres actifs peuvent être des ordres d'achat et de vente.
Raison: