- la funzione CopyTicks funziona correttamente (come descritto);
- I dati attuali di tick del mercato dei futures ottenuti con questa funzione coincidono con i dati della borsa;
- La cronologia dei tick del mercato dei futures per gli strumenti più liquidi è corretta a partire dal 28.07.2016 (ovviamente, inizio dell'ultima versione del server);
Tutto ciò si applica al terminale MT5 versione 1395 e ai conti reali del mercato dei derivati in Open-Broker. In linea di principio, l'argomento è chiuso.
Avete controllato anche la direzione degli scambi?
Ho questa domanda. È ragionevole (dal punto di vista delle prestazioni) quando si usa CopyBuffer aggiungere i buffer per numero di valori cambiati(il conteggio dei parametri di input non è zero) o fare sempre una copia completa del buffer?
ma quasi la stessa domanda su CopyTicks.
È ragionevole (dal punto di vista delle prestazioni) quando si usa CopyTicks aggiungere nuovi valori alle zecche già raccolte o fare sempre la richiesta completa dal luogo in cui le zecche sono richieste e non memorizzare i valori precedentemente raccolti?
Примечание
Функция может быть применена только к динамическим массивам. При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов,
назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит
исполняющая подсистема терминала.
Общее число элементов в массиве не может превышать 2147483647.
Lo script emette dei tick quando le migliori bande sono cambiate nello stesso millisecondo
#property script_show_inputssinputint Count = 10000; // Количество тиков на проверку#define TOSTRING(A) " " + #A + " = " + (string)Tick.A
string TickToString( constMqlTick &Tick )
{
staticint i = 0;
i++;
return("Tick" + (string)i + ":" + TOSTRING(time) + "." + (string)(Tick.time_msc %1000) +
TOSTRING(bid) + TOSTRING(ask) + TOSTRING(last)+ TOSTRING(volume));
}
voidOnStart()
{
MqlTick Ticks[];
constint Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
for (int i = 1; i < Amount; i++)
if (Ticks[i].time_msc == Ticks[i - 1].time_msc) // ищем соседние тики с одним временем (с точностью до мс)// if ((Ticks[i].bid > Ticks[i - 1].bid) ||(Ticks[i].ask < Ticks[i - 1].ask)) // ищем выставление лимитной заявки внутрь спредаPrint(TickToString(Ticks[i - 1]) + "\n" + TickToString(Ticks[i]) + "\n");
}
Parte del risultato:
2016.09.1311:58:46.861 Test (RTS-9.16,M1) Tick14: time = 2016.09.1310:12:55.819 bid = 98220.0 ask = 98240.0 last = 98240.0 volume = 22016.09.1311:58:46.861 Test (RTS-9.16,M1) Tick13: time = 2016.09.1310:12:55.819 bid = 98230.0 ask = 98240.0 last = 98240.0 volume = 2
Qui, nello stesso millisecondo qualcuno è riuscito a ritirare il suo BuyLimit= 98230. Esattamente ritirato, non è stato schiacciato con il pennarello.
La verifica ha dimostrato che tutte queste azioni entro un millisecondo sono prelievi (non esecuzioni) del limite migliore dalla tazza.
Un'altra parte del risultato:
2016.09.1311:58:46.861 Test (RTS-9.16,M1) Tick4: time = 2016.09.1310:00:00.235 bid = 98490.0 ask = 99040.0 last = 98500.0 volume = 82016.09.1311:58:46.861 Test (RTS-9.16,M1) Tick3: time = 2016.09.1310:00:00.235 bid = 98490.0 ask = 98600.0 last = 98500.0 volume = 82016.09.1311:58:46.861 Test (RTS-9.16,M1)
2016.09.1311:58:46.861 Test (RTS-9.16,M1) Tick2: time = 2016.09.1310:00:00.235 bid = 98490.0 ask = 98600.0 last = 98500.0 volume = 82016.09.1311:58:46.861 Test (RTS-9.16,M1) Tick1: time = 2016.09.1310:00:00.235 bid = 98500.0 ask = 98600.0 last = 98500.0 volume = 8
Qui, in qualche modo all'apertura della sessione qualcuno è riuscito a rimuovere sia SellLimit che BuyLimit in un millisecondo. Cioè due azioni in un millisecondo!
Come può essere? Dopo tutto, nemmeno l'HFT può rimuovere un ordine limite in meno di 1 ms.
O se attraverso OrderSendAsync vengono inviati due ordini limite (BuyLimit1_price < BuyLimit2_price) all'interno dello spread, allora la borsa genererà due tick consecutivi con miglioramento del prezzo bid allo stesso tempo (con una precisione di 1ms)?
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Dopo un anno, riassumiamo i risultati intermedi:
- la funzione CopyTicks funziona correttamente (come descritto);
- I dati attuali di tick del mercato dei futures ottenuti con questa funzione coincidono con i dati della borsa;
- La cronologia dei tick del mercato dei futures per gli strumenti più liquidi è corretta a partire dal 28.07.2016 (ovviamente, inizio dell'ultima versione del server);
Tutto ciò si applica al terminale MT5 versione 1395 e ai conti reali del mercato dei derivati in Open-Broker. In linea di principio, l'argomento è chiuso.
Ho una domanda su CopyBuffer
Forum sul trading, sistemi di trading automatico e test di strategie di trading
mql5 ti permette di scrivere un indicatore che disegna grafici in diverse finestre o accede ai buffer degli indicatori in altre finestre?
fxsaber, 2016.09.09 10:20
ma quasi la stessa domanda su CopyTicks.
È ragionevole (dal punto di vista delle prestazioni) quando si usa CopyTicks aggiungere nuovi valori alle zecche già raccolte o fare sempre la richiesta completa dal luogo in cui le zecche sono richieste e non memorizzare i valori precedentemente raccolti?
Quando si aggiungono zecche a un array dinamico, quanto reserve_size in ArrayResize è meglio?
Un array dinamico è limitato a INT_MAX, quindi è meglio impostare subito l'array a questa dimensione.
Un array dinamico è limitato a INT_MAX, quindi è meglio impostare subito l'array a questa dimensione.
Mikalas, sei tu? :-)
Lo script emette dei tick quando le migliori bande sono cambiate nello stesso millisecondo
Parte del risultato:
Qui, nello stesso millisecondo qualcuno è riuscito a ritirare il suo BuyLimit= 98230. Esattamente ritirato, non è stato schiacciato con il pennarello.
La verifica ha dimostrato che tutte queste azioni entro un millisecondo sono prelievi (non esecuzioni) del limite migliore dalla tazza.
Un'altra parte del risultato:
Qui, in qualche modo all'apertura della sessione qualcuno è riuscito a rimuovere sia SellLimit che BuyLimit in un millisecondo. Cioè due azioni in un millisecondo!
Come può essere? Dopo tutto, nemmeno l'HFT può rimuovere un ordine limite in meno di 1 ms.
O se attraverso OrderSendAsync vengono inviati due ordini limite (BuyLimit1_price < BuyLimit2_price) all'interno dello spread, allora la borsa genererà due tick consecutivi con miglioramento del prezzo bid allo stesso tempo (con una precisione di 1ms)?
Come può essere? Dopo tutto, nemmeno gli HFT possono rimuovere un ordine limite in meno di 1ms.
Dove ha ottenuto questa conoscenza?
Oltre a Plaza II, c'è un protocollo FAST/FIX
Ci sono centinaia di operazioni in 1ms.