MT5 et la vitesse en action - page 31

 
fxsaber:

Si vous exécutez cet EA sur un compte sans positions ou ordres actuels.

puis fermez manuellement la position ouverte par l'EA, il y aura alors trois positions ouvertes sur le hedge (sur la compensation de la position triple volume).


Est-ce le bon comportement ? Je n'ai probablement pas bien compris le terminal. Alors, veuillez clarifier.

Tout d'abord, vous devez lire l'aide.

https://www.mql5.com/ru/docs/event_handlers/ontrade

Veuillez noter :

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction(). В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

En termes simples, le gestionnaire OnTrade() peut être appelé pour chaque transaction individuelle. La conséquence de la clôture d'une position peut être l'arrivée de plusieurs transactions distinctes.

Ceci est facilement vérifiable - il suffit d'ajouter Print() à OnTrade() de votre exemple.

De plus, je veux attirer votre attention sur votre test précédent où vous vous attendez en vain à connaître le ticket de commande via OrderSendAsync().

Документация по MQL5: Обработка событий / OnTrade
Документация по MQL5: Обработка событий / OnTrade
  • www.mql5.com
//|                                               OnTrade_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Anton:

De plus, je veux attirer votre attention sur le fait que, d'après votre test précédent, vous espérez en vain trouver le ticket de commande via OrderSendAsync().

Il semble qu'il n'y en ait nulle part. Seul HistorySelect est en retard dans OnTrade.

 
fxsaber:

Il ne semble pas être là, nulle part. Seuls les décalages de HistorySelect dans OnTrade sont affichés.

if (PositionSelectByTicket(Result.order)) // Если позиция открыта - закрываем.
 
Anton:

La première chose à faire est de lire la fiche d'information.

https://www.mql5.com/ru/docs/event_handlers/ontrade

Veuillez noter :

Обработчик OnTrade() вызывается после соответствующих вызовов OnTradeTransaction(). В общем случае нет точного соотношения по количеству вызовов OnTrade() и OnTradeTransaction(). Один вызов OnTrade() соответствует одному или нескольким вызовам OnTradeTransaction.

En termes simples, le gestionnaire OnTrade() peut être appelé pour chaque transaction individuelle. La conséquence de la clôture d'une position peut être l'arrivée de plusieurs transactions distinctes.

Il est facile de le vérifier - il suffit d'ajouter Print() à OnTrade() de votre exemple.

Bien sûr, j'ai fait l'empreinte. La question ne portait pas sur le nombre d'appels OnTrade mais sur le nombre de positions ouvertes.

Après le premier OnTrade, un ordre au marché est placé. Lors du prochain OnTrade, cet ordre de marché ne doit pas permettre l'ouverture d'autres ordres par la condition. Mais dans le OnTrade suivant, la somme de OrdersTotal() + PositionsTotal() est également nulle. Est-ce correct ?

 
Anton:

Merci, je n'avais pas vu le morceau de copier-coller.

 
fxsaber:

Il ne semble pas être là, nulle part. Seuls les décalages HistorySelect dans OnTrade sont affichés.

La mise en cache des sélections de commandes est encore améliorée aujourd'hui, elle sera en version bêta dans quelques heures.

 
Renat Fatkhullin:

La mise en cache des sélections de commandes est encore améliorée aujourd'hui, elle sera en version bêta dans quelques heures.

Voulez-vous dire HistorySelect ? Le lien automatique ne mène pas à OrderSelect.

 
Nelson Wanyama:

Savez-vous pourquoi mt5 ne dispose pas de l'onglet "Commissions" ? Ils n'apparaissent qu'après la clôture d'une transaction.

Savez-vous pourquoi mt5 ne dispose pas de l'onglet 'Commissions' ? Ils n'apparaissent qu'après la clôture d'une transaction.



 
fxsaber:

J'ai fait l'impression, bien sûr. La question n'était pas le nombre d'appels OnTrade, mais le nombre de positions ouvertes.

Après le premier OnTrade, un ordre au marché est placé. Lors du prochain OnTrade, cet ordre de marché ne doit pas permettre l'ouverture d'autres ordres par la condition. Mais dans le OnTrade suivant, la somme de OrdersTotal() + PositionsTotal() est également nulle. Est-ce correct ?

Tout est dans l'aide : https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.  Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade.
Ainsi, OrdersTotal() peut sans aucun doute être nul. Il en va de même pour PositionsTotal(). Tout dépend des transactions, de leur type et de leur contenu.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function                                   | //| Expert deinitialization function                                 | //| TradeTransaction function                                        |...
 
Anton:

Tout est dans l'aide : https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.
Ainsi, OrdersTotal() peut certainement être nul. Il en va de même pour PositionsTotal().

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

Chaque ordre a un statut qui décrit son état. Pour obtenir des informations, utilisez la fonctionOrderGetInteger() ouHistoryOrderGetInteger() avec le modificateur ORDER_STATE. Les valeurs valides sont enregistrées dans l'énumération ENUM_ORDER_STATE.

ENUM_ORDER_STATE

Identifiant

Description

ÉTAT_DE_LA_COMMANDE_DÉMARRÉ

Commande dont l'exactitude a été vérifiée, mais qui n'a pas encore été acceptée par le courtier.



L'état de départ ne se produit-il pas après un OrderSendAsync réussi ?