Errori, bug, domande - pagina 2106

 
Andrey Khatimlianskii:

Un timeout indica che la risposta dal server non è stata ricevuta entro un tempo ragionevole. Ma non il risultato dell'ordine.


Salve.

Grazie.

Puramente tecnico, ho capito la peculiarità. in questo caso: quando il time out - devi aspettare che un nuovo ticket appaia nella storia dei trade, se un nuovo ticket appare - allora il trade o l'ordine è aperto.

A proposito, questo succede solo su MQL5 VPS

Non è un problema su un server domestico.

Ci penserò...


Ci penserò.

Пользовательский интерфейс - Начало работы - MetaTrader 5
Пользовательский интерфейс - Начало работы - MetaTrader 5
  • www.metatrader5.com
Интерфейс платформы предоставляет доступ ко всем инструментам, необходимым для торговли на финансовых рынках. Он включает в себя различные меню, панели инструментов и служебные окна. Главное меню В главном меню собраны практически все команды и функции, которые можно выполнять в торговой платформе. Оно позволяет работать с графиками...
 
Vladislav Andruschenko:

Puramente tecnico capisco la peculiarità. in questo caso: quando esci - devi aspettare che un nuovo ticket appaia nella storia del trade, se appare un nuovo ticket - allora il trade o l'ordine viene aperto.

Se un ordine di compravendita è stato inviato tramite OrderSend sincrono, allora non c'è modo di uscire dall'esecuzione di OrderSend. Tutto sembra un bug del terminale VPS.
 
fxsaber:
Se un ordine di compravendita è stato inviato tramite un OrderSend sincrono, allora non c'è modo di uscire dall'esecuzione di OrderSend. Tutto sembra un bug del terminale VPS.


attraverso di essa.

Il problema può in linea di principio essere risolto, dopo aver ricevuto un errore di timeout per eseguire la funzione di ricerca di nuovi biglietti nella storia.

Altrimenti l'EA invia solo una nuova richiesta e ottiene di nuovo un errore di timeout, senza ottenere un ticket.

Grazie.

 
Vladislav Andruschenko:

Il problema può in linea di principio essere risolto, dopo aver ricevuto un errore di timeout, eseguire la funzione di recupero di nuovi biglietti nella storia.

Devi scriverlo in SD. Altrimenti, dopo ogni OrderSend aspetterete tre minuti per un timeout, ottenendo i rischi commerciali corrispondenti.

 
fxsaber:

È necessario scrivere sul CD. Altrimenti, dopo ogni OrderSend aspetterete tre minuti per un timeout e otterrete i rischi commerciali corrispondenti.


E così ho fatto.

Questo errore accade 1 su 1000, e finora è successo solo su VPS da MQL...
 
Vladislav Andruschenko:

Di conseguenza, l'Expert Advisor riceve l'errore 10012 e cerca di piazzare nuovamente l'ordine.

Priverei l'EA dello status di venditore per un anno per un tale codice nel mercato
 
A100:
Ti priverei dello status di venditore per un anno per un codice del genere nel Mercato.

È la prima volta che incontro un errore del genere.

Non ho questo errore nel mio codice. nessun biglietto significa che un trade non si è aperto. significa che l'EA sta cercando di aprire di nuovo un trade.
 
Vladislav Andruschenko:

Il problema è fondamentalmente risolvibile, dopo aver ricevuto un errore di timeout, eseguire la nuova funzione di recupero dei biglietti nella cronologia.

La storia non c'entra niente. OrderSend invia l'ordine e questo appare nel terminale con lo stato ORDER_STATE_STARTED.

Ma questo non significa che OrderSend abbia terminato l'esecuzione. L'OrderSend continuerà ad essere eseguito fino a quando lo stato dell'ordine non cambierà.

Quindi se vedete un timeout, è sicuro al 99% che lo stato dell'ordine è ORDER_STATE_STARTED( lovedo, ma non è chiaro quando ho fatto lo screenshot).

Inoltre, lo stesso timeout può accadere senza il tuo OrderSend - quando il server MT5 fa l'OrderSend stesso (TP/SL/MC/Expiration). Ma non lo vedrete nel Terminale.

 
Vladislav Andruschenko:
Non ho un tale errore nel mio codice. nessun biglietto - significa che il trade non si è aperto. significa che l'Expert Advisor sta cercando di aprire nuovamente il trade.

Questa è una logica sbagliata. Dopo che OrderSend fallisce e OrderSend ha successo, l'attuale ambiente di trading deve essere letto di nuovo completamente. Questa regola dovrebbe essere sempre in vigore.

Riguardo ai codici di ritorno. Non li analizzo nei miei EA. Penso che la logica del trading non dovrebbe dipendere da loro.

 
fxsaber:

Questa è una logica sbagliata. Dopo che OrderSend fallisce e OrderSend ha successo, l'attuale ambiente di trading deve essere letto di nuovo completamente. Questa regola dovrebbe essere sempre in vigore.


Sono d'accordo, deve essere cambiato.