MT5 e la velocità in azione - pagina 31

 
fxsaber:

Se si esegue questo EA su un conto senza posizioni o ordini correnti.

e poi chiudere manualmente la posizione aperta dall'EA, allora ci saranno tre posizioni aperte sulla copertura (sulla posizione a triplo volume netting).


È questo il comportamento corretto? Probabilmente non ho capito bene il Terminale. Allora, per favore, chiarisci.

Prima di tutto dovreste leggere l'aiuto.

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

Si prega di notare:

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

In parole povere, il gestore OnTrade() può essere chiamato per ogni singolo trade. La conseguenza della chiusura di una posizione può essere l'arrivo di diverse transazioni separate.

Questo è facilmente verificabile - basta aggiungere Print() a OnTrade() del vostro esempio.

Inoltre voglio attirare la tua attenzione sul tuo test precedente che invano ti aspetti di conoscere il biglietto dell'ordine attraverso OrderSendAsync().

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

Inoltre voglio attirare la tua attenzione, secondo il tuo test precedente, che ti aspetti invano di trovare il biglietto d'ordine tramite OrderSendAsync().

Sembra che non ci sia da nessuna parte. Solo HistorySelect ritarda in OnTrade.

 
fxsaber:

Non sembra esserci da nessuna parte. Vengono mostrati solo i ritardi di HistorySelect in OnTrade.

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

La prima cosa da fare è leggere il foglio informativo.

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

Si prega di notare:

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

In parole povere, il gestore OnTrade() può essere chiamato per ogni singola transazione commerciale. La conseguenza della chiusura di una posizione può essere l'arrivo di diverse transazioni separate.

Si controlla facilmente - basta aggiungere Print() a OnTrade() del vostro esempio.

Naturalmente, ho fatto la stampa. La domanda non riguardava il numero di chiamate OnTrade, ma il numero di posizioni aperte.

Dopo il primo OnTrade, viene piazzato un ordine a mercato. Al prossimo OnTrade, questo ordine di mercato non deve permettere l'apertura di altri ordini in base alla condizione. Ma nel prossimo OnTrade, la somma di OrdersTotal() + PositionsTotal() è anche zero. È corretto?

 
Anton:

Grazie, non avevo visto il pezzo del copia-incolla.

 
fxsaber:

Non sembra esserci da nessuna parte. Vengono mostrati solo i ritardi di HistorySelect in OnTrade.

Caching delle selezioni degli ordini ancora migliorato oggi, sarà beta in poche ore.

 
Renat Fatkhullin:

Caching delle selezioni degli ordini ancora migliorato oggi, sarà beta in poche ore.

Intendi HistorySelect? Solo il link automatico non porta a OrderSelect.

 
Nelson Wanyama:

Qualche idea sul perché mt5 non presenti la scheda 'Commissioni'? Appaiono solo dopo la chiusura di uno scambio.

Qualche idea sul perché mt5 non abbia la scheda 'Commissioni'? Appaiono solo dopo la chiusura di uno scambio.



 
fxsaber:

Ha fatto la stampa, naturalmente. La questione non era il numero di chiamate OnTrade, ma il numero di posizioni aperte.

Dopo il primo OnTrade, viene piazzato un ordine a mercato. Al prossimo OnTrade, questo ordine di mercato non deve permettere l'apertura di altri ordini in base alla condizione. Ma nel prossimo OnTrade, la somma di OrdersTotal() + PositionsTotal() è anche zero. È corretto?

È tutto nell'aiuto: https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.  Торговый сервер при обработке полученного запроса отправляет клиентскому терминалу ответное сообщение об изменении текущего состояния позиций, ордеров и сделок, которое приводит к генерации события Trade.
Quindi OrdersTotal() può senza dubbio essere nullo. Lo stesso vale per PositionsTotal(). Tutto dipende dalle transazioni, dal loro tipo e dal loro contenuto.
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
"и режим вывода сообщений в журнал "Эксперты". По умолчанию выводятся все детали.\r\n" //| Expert initialization function                                   | //| Expert deinitialization function                                 | //| TradeTransaction function                                        |...
 
Anton:

Tutto è nell'aiuto: https://www.mql5.com/ru/docs/trading/ordersendasync

Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.
Quindi OrdersTotal() può certamente essere nullo. Lo stesso vale per PositionsTotal().

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

Ogni ordine ha uno stato che descrive il suo stato. Per ottenere informazioni, usate la funzioneOrderGetInteger() oHistoryOrderGetInteger() con il modificatore ORDER_STATE. I valori validi sono memorizzati nell'enumerazione ENUM_ORDER_STATE.

STATO DELL'ORDINE

Identificatore

Descrizione

STATO DELL'ORDINE INIZIATO

Ordine controllato per la correttezza, ma non ancora accettato dal broker



Lo Started-state non avviene dopo un OrderSendAsync riuscito?