Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Hai frainteso.
Era il server che non inviava lo stato dell'ordine PLASED per 20 secondi.
C'è un errore evidente nel terminale, dove lo stato dell'ordineORDER_STATE_STARTED si "blocca".
È stato finalmente risolto?
Che cosa ha detto esattamente lo scambio su questo ordine? È stato collocato rapidamente? Se è così, è ovvio che c'è stato un errore sul server o sul terminale MT che non ha aggiornato lo stato. E con questo si può andare al service-desk.
Come risultato della discussione sul problema con Michael in Service Desk:
A quanto pare dobbiamo spiegare come funziona il sistema degli ordini e cosa significa il posizionamento.
Quindi:
1. Si invia una richiesta
2. Il server MT5 controlla questa richiesta (parametri, pre-trade, ecc.). Se c'è un problema, si otterrà un codice di errore corrispondente in risposta alla richiesta.
Dopo di che si crea un nuovo ordine dandogli un biglietto (#24025010) - con questo lo stato "iniziato" è impostato per l'ordine. Il biglietto d'ordine è utilizzato per collegare l'identificatore dell'ordine in MT5 con l'ordine in borsa al momento del piazzamento dell'ordine in borsa.
Il terminale invia una transazione sull'aggiunta di un nuovo ordine nello stato "iniziato", che può essere tracciato in OnTradeTransaction.
3. Successivamente, il server di trading (tramite il gateway) invia il tuo ordine alla borsa, se la richiesta è stata inviata con successo, la tua richiesta riceverà una risposta - questo significa
"che la richiesta è stata inviata", i risultati saranno eseguiti in modo asincrono, poiché non si sa in anticipo quanto tempo la borsa risponderà.
Rispettivamente è a questo punto che si vede la registrazione nel diario
4. Dopo un po' di tempo, la borsa imposta l'ordine nel suo sistema, gli assegna un identificatore e poi lo notifica al gateway e al server MT5.
Se la borsa ha impostato l'ordine, l'identificatore dell'ordine viene scritto nell'ordine in MT5 e lo stato dell'ordine cambia con => inserito.
Se lo scambio si rifiuta di effettuare un ordine per qualche motivo, l'ordine sarà rimosso.
Tutto questo può essere tracciato semplicemente registrando le transazioni che arrivano in OnTradeTransaction.
================================================================================
Cosa succede:
1. Presenta una richiesta d'ordine - vedi i passi 1-3.
E nel momento in cui l'ordine è già in MT5, e non c'è nessun ordine in borsa, si invia un ordine per ritirare questo ordine.
Devi fare dei controlli-correzioni appropriati nella logica del tuo EA.Ma siccome questo ordine è nel suo stato iniziale (iniziato) e l'esistenza di un ordine per esso non è definita, si riceve un rifiuto di ritirare l'ordine
.
Z.U. L'altra cosa è che in un secondo.
(e per di più per 20 secondi) l'ordine dovrebbe essere stato effettuato, questo è in corso di trattamento, uno dei potenziali problemi è stato trovato - lo stiamo correggendo.Come risultato della discussione sul problema con Michael al Service Desk:
A quanto pare dobbiamo spiegare come funziona il sistema degli ordini e cosa significa il posizionamento.
Quindi:
1. Si invia una richiesta
2. Il server MT5 controlla questa richiesta (parametri, pre-trade, ecc.). Se c'è un problema, si otterrà un codice di errore corrispondente in risposta alla richiesta.
Dopo di che si crea un nuovo ordine dandogli un biglietto (#24025010) - con questo lo stato "iniziato" è impostato per l'ordine. Il biglietto d'ordine è utilizzato per collegare l'identificatore dell'ordine in MT5 con l'ordine in borsa al momento del piazzamento dell'ordine in borsa.
Il terminale invia una transazione sull'aggiunta di un nuovo ordine nello stato "iniziato", che può essere tracciato in OnTradeTransaction.
3. Successivamente, il server di trading (tramite il gateway) invia il tuo ordine alla borsa, se la richiesta è stata inviata con successo, la tua richiesta riceverà una risposta - questo significa
"che la richiesta è stata inviata", i risultati saranno eseguiti in modo asincrono, poiché non si sa in anticipo quanto tempo la borsa risponderà.
Rispettivamente è a questo punto che si vede la registrazione nel diario
4. Dopo un po' di tempo, la borsa imposta l'ordine nel suo sistema, gli assegna un identificatore e poi lo notifica al gateway e al server MT5.
Se la borsa ha impostato l'ordine, l'identificatore dell'ordine viene scritto nell'ordine in MT5 e lo stato dell'ordine cambia con => inserito.
Se lo scambio si rifiuta di effettuare un ordine per qualche motivo, l'ordine sarà rimosso.
Tutto questo può essere tracciato semplicemente registrando le transazioni che arrivano in OnTradeTransaction.
================================================================================
Cosa succede:
1. Si invia una richiesta d'ordine - vedere i passi 1-3.
2. nel momento in cui l'ordine è già in MT5, e non è ancora presente in borsa, si invia un ordine per ritirare questo ordine.
Devi fare dei controlli-correzioni appropriati nella logica del tuo EA.Ma siccome questo ordine è nel suo stato iniziale (iniziato) e l'esistenza di un ordine per esso non è definita, si riceve un rifiuto di ritirare l'ordine
.
P.S. L'altra cosa è che in un secondo
(e inoltre, per 20 secondi) l'ordine dovrebbe essere piazzato, ce ne stiamo occupando, abbiamo trovato uno dei potenziali problemi - sistemiamolo.Non è chiaro a che punto lo stato dell'ordine "iniziato" cambia in "piazzato". Questo accade secondo il punto 3 della sua spiegazione, secondo il punto 4 della sua spiegazione o in entrambi i casi punto 3 e 4?
4. Dopo un po' di tempo, la borsa imposta l'ordine nel suo sistema, assegna il suo identificatore, e poi lo notifica al gateway e al server MT5.
Se la borsa ha impostato l'ordine - l'identificatore dell'ordine viene scritto nell'ordine in MT5, e lo stato dell'ordine cambia da iniziato => piazzato.
3. Poi il server di trading (attraverso il gateway) invia la tua richiesta alla borsa, se la richiesta è stata inviata con successo, allora la tua richiesta sarà risposta, il che significa
"che la richiesta è stata inviata", i risultati del suo lavoro saranno eseguiti in modo asincrono, perché non si sa in anticipo a che ora la risposta di scambio.
Di conseguenza, è a questo punto che si vede nella voce di registro
2015.11.26 10:48:23.726 Trades 'xxxxxx': buy limit 5.00 SNGR-3.16 at 35501 placed for execution in 7 ms
4. Dopo un po' di tempo, la borsa imposta l'ordine nel suo sistema, gli assegna un identificatore e poi lo notifica al gateway e al server MT5.
Se la borsa ha impostato l'ordine, l'identificatore dell'ordine in MT5 viene scritto nell'ordine in MT5 e lo stato dell'ordine cambia con => inserito.
Ecco un altro motivo di confusione: nel log si dice che l'ordine è già stato effettuato, ma in realtà il suo stato non è ancora cambiato.
Forse dovremmo scrivere qualcosa come "inviato" invece di "piazzato" perché l'ordine non è stato effettivamente accettato dallo scambio?
Risulta quanto segue.
Prima (o dopo) di eseguire qualsiasi azione su un ordine,
devi "controllare" il suo stato ogni volta (correggimi se non sono sicuro):
Risulta quanto segue.
Prima (o dopo) di eseguire qualsiasi azione su un ordine,
dovete "controllare" il suo stato ogni volta (correggetemi se mi sono perso qualcosa):
Sbagliato,
Se guardiamo aHistoryOrderSelect( ticket ), allora dobbiamo applicareHistoryOrderGetInteger(),HistoryOrderGetDouble()
Non è corretto,
Se guardiamo inHistoryOrderSelect( ticket ), dobbiamo applicareHistoryOrderGetInteger(),HistoryOrderGetDouble()
Giusto, è un errore di stampa :)
Grazie, l'ho corretto...