Errori, bug, domande - pagina 1804

 
I commenti non relativi a questo argomento sono stati spostati in "Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici".
 
fxsaber:
Il sonno è necessario solo quando il simbolo non è in Market Watch. Per tutti i simboli che sono in Market Watch prima (e durante) l'indicatore, non sono necessari slittamenti.
Capisco.
 

1531 - i freni di Metaquotes-Demo non sono andati via.

Richiesta e risposta

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = #KO
Request.volume = 1.0
Request.price = 40.31
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Position
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117613087
Result.order = 133997293
Result.volume = 1.0
Result.price = 40.31
Result.bid = 40.28
Result.ask = 40.31
Result.comment = Request executed 345.781 + 26.356 ms
Result.request_id = 5712
Result.retcode_external = 0

OrderSend ha impiegato 345 ms, e ci sono voluti 26 ms perché l'ordine e l'affare corrispondenti diventassero disponibili nella storia. Cioè una sincronizzazione molto lenta che non ho mai visto prima.

Registro standard

2017.02.14 22:26:46.767 Trades  '5122740': prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': accepted prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': answer prices for #KO 1.00 40.28 / 40.31 in 86.046 ms (0.190 ms on server)
2017.02.14 22:26:46.852 Trades  '5122740': request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': accepted request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': deal #117613087 buy 1.00 #KO at 40.31 done (based on order #133997293)
2017.02.14 22:26:47.107 Trades  '5122740': order #133997293 buy 1.00 / 1.00 #KO at 40.31 done in 345.709 ms (3.022 ms on server)

Il nuovo registro è ora nel 1531! Per favore, spiegate in questo caso come stanno le cose.

ZZY log quasi immediatamente dopo il rallentamento.

2017.02.14 22:26:47.433 Trades  '5122740': prices for #KFT 1.00
2017.02.14 22:26:47.503 Trades  '5122740': accepted prices for #KFT 1.00
2017.02.14 22:26:47.506 Trades  '5122740': answer prices for #KFT 1.00 49.17 / 49.20 in 70.980 ms (4.166 ms on server)
2017.02.14 22:26:47.506 Trades  '5122740': request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': accepted request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': deal #117613092 buy 1.00 #KFT at 49.20 done (based on order #133997299)
2017.02.14 22:26:47.583 Trades  '5122740': order #133997299 buy 1.00 / 1.00 #KFT at 49.20 done in 149.304 ms (3.015 ms on server)

Questi sono caratteri richiesti, quindi gli ordini di mercato sono più lenti degli altri.

 

I freni di TRADE_ACTION_REMOVE.

Request.action = TRADE_ACTION_REMOVE (8)
Request.magic = 0
Request.order = 134003202
Request.symbol =
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134003202
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 290.089 + 0.005 ms
Result.request_id = 10078
Result.retcode_external = 0
FL      0       23:02:46.797    Trades  '5122740': buy limit 1.00 Si-3.17 at 56288
GG      0       23:02:46.849    Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 56288
PR      0       23:02:46.852    Trades  '5122740': order #134003202 buy limit 1.00 / 1.00 Si-3.17 at market done in 54.423 ms (0.342 ms on server)
PR      0       23:02:46.854    Trades  '5122740': cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
LL      0       23:02:47.142    Trades  '5122740': accepted cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
CE      0       23:02:47.144    Trades  '5122740': cancel #134003202 buy limit 1.00 Si-3.17 at market done in 290.050 ms (1.400 ms on server)
HH Guardando il giornale di bordo dal terminale non ha dato queste linee in alcun modo. Ho dovuto prenderli direttamente dal file.
 
Errore [Nessun prezzo] sul posto
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Com'è possibile che non ci sia un prezzo, c'è persino un prezzo nel registro!

Query

2017.02.14 23:18:41.442 Request.action = TRADE_ACTION_DEAL (1)
2017.02.14 23:18:41.442 Request.magic = 0
2017.02.14 23:18:41.442 Request.order = 0
2017.02.14 23:18:41.442 Request.symbol = EURPLN
2017.02.14 23:18:41.442 Request.volume = 1.0
2017.02.14 23:18:41.442 Request.price = 4.30632
2017.02.14 23:18:41.442 Request.stoplimit = 0.0
2017.02.14 23:18:41.442 Request.sl = 0.0
2017.02.14 23:18:41.442 Request.tp = 0.0
2017.02.14 23:18:41.442 Request.deviation = 100
2017.02.14 23:18:41.442 Request.type = ORDER_TYPE_BUY (0)
2017.02.14 23:18:41.442 Request.type_filling = ORDER_FILLING_RETURN (2)
2017.02.14 23:18:41.442 Request.type_time = ORDER_TIME_GTC (0)
2017.02.14 23:18:41.442 Request.expiration = 1970.01.01 00:00:00
2017.02.14 23:18:41.442 Request.comment = My Position
2017.02.14 23:18:41.442 Request.position = 0
2017.02.14 23:18:41.442 Request.position_by = 0
2017.02.14 23:18:41.442 Result.retcode = 10021
2017.02.14 23:18:41.442 Result.deal = 0
2017.02.14 23:18:41.442 Result.order = 0
2017.02.14 23:18:41.442 Result.volume = 0.0
2017.02.14 23:18:41.442 Result.price = 0.0
2017.02.14 23:18:41.442 Result.bid = 0.0
2017.02.14 23:18:41.442 Result.ask = 0.0
2017.02.14 23:18:41.442 Result.comment = No prices 0.028 + 0.000 ms
2017.02.14 23:18:41.442 Result.request_id = 0
2017.02.14 23:18:41.442 Result.retcode_external = 0
2017.02.14 23:18:41.442
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_BID) = 4.30151
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_ASK) = 4.30632
 
fxsaber:
Errore [Nessun prezzo] sul posto
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Come è possibile che non ci siano prezzi, nemmeno nel registro!

Ho avuto lo stesso errore recentemente sul mio account reale. Ho provato a piazzare un ordine ma il server non l'ha eseguito.

Attualmente sto comunicando con il supporto tecnico di un'azienda molto famosa su L... (Al momento sto chattando con il supporto tecnico di una società molto nota L. (la nostra corrispondenza è riservata, non la chiamerò così), mi spiegano che il tempo di esecuzione del loro server è lo stesso per gli ordini provenienti da MT4, loro hanno MT4, loro hanno FIX ed è circa 1-6 ms. Poi, ho chiesto loro qual è il tempo trascorso su 40-50 ms. quando il commercio da MT4, dal momento che dal momento dell'invio dell'ordine e ottenere una risposta circa 40-60 ms. Fanno spallucce con tolleranza, come se cercassero la latenza della rete, io dico loro il ping 1-2ms, e loro di nuovo fanno spallucce. La conclusione è che la parte server di MT4/5 è lenta. Ora i nuovi registri lo mostrano. Capisco che il tempo non può essere "pulito" come FIX, ma almeno dovrebbe essere dello stesso ordine.
 
Andrey Dik:
SZY. Al momento sto parlando con il supporto tecnico di un'azienda molto famosa su L... (Non so perché non li chiamo, mi spiegano che il tempo di esecuzione sul loro server di trading è lo stesso di quello degli ordini che escono da MT4 (hanno MT4) che vengono inviati tramite FIX ed è di circa 1-6ms. Poi, ho chiesto loro qual è il tempo trascorso su 40-50 ms. quando il commercio da MT4, dal momento che dal momento dell'invio dell'ordine e ottenere una risposta circa 40-60 ms. Fanno spallucce con tolleranza, come se cercassero la latenza della rete, gli dico il ping 1-2ms, e fanno di nuovo spallucce. La conclusione è che la parte server di MT4/5 è lenta. Ora i nuovi registri lo mostrano. Capisco che il tempo non può essere "pulito" come FIX, ma almeno dovrebbe essere dello stesso ordine.

IN L... aveva in mente che quando ricevono un ordine nel loro sistema, il tempo di esecuzione nel sistema stesso e di invio è minuscolo. Possono ottenere l'ordine dal server MT4 o attraverso FIX e le loro altre API. Il server MT4 stesso spende molte decine di ms per la sua elaborazione interna, che non è collegata in alcun modo all'esecuzione.

Una volta il tempo minimo su MT4 era di 150 ms. Sembra che qualcosa sia stato seriamente modificato, visto che è diventato 40-60. Ma MT5 è notevolmente più veloce. Ora posso vedere nei log quanto tempo il server ha lavorato. Non resta che capire in che cosa consiste il tempo principale.

 
I commenti non pertinenti a questo argomento sono stati spostati in "CopyClose perché un errore?".
 

Errore di compilazione: impossibile accedere a f() //2

typedef void (*fn)();
#import "Test.ex5"
        void f(); //1
#import
void f() {} //2
void OnStart()
{
        fn g1 = Test::f; //нормально
        fn g2 =       f; //Error: 'f' - cannot resolve function address
}
 
@Slawa, per favore chiarisci, ci sono delle restrizioni sulla scrittura dei buffer degli indicatori al di fuori della funzione OnCalculate()? Sarà tutto scritto correttamente in caso di scrittura di buffer nelle funzioni: OnTimer(), OnBookEvent(), OnChartEvent()?

Motivazione: