Testare 'CopyTicks'. - pagina 21

 
Network 'xxx': authorized on Alpari-MT5 through mt5.nl.3 (ping: 64.15 ms)

Sul marketwatch quasi vuoto di Alpari, il copitix frena tanto quanto su BCS.

Su Robo, tutto è più di un ordine di grandezza più veloce.

 

Risultati su USDCHF M1, CalcLength dall'indicatore https://www.mql5.com/ru/code/16537:

  • RoboForexEU - 23 ms (la tazza non è nella trasmissione, solo bid/ask)
  • MetaQuotes-Demo - 15-30 ms (c'è una tazza con i volumi nella trasmissione)


I risultati sono costantemente fluttuanti + la regola dei singoli fili non è osservata - su uno dei flussi senza il pick and mix per CopyTicks, sull'altro con il pick. La demo non è aperta su BCS, ma la cosa principale è che non ci sono pile su RoboForex.

Strano codice di misurazione. Sono state misurate molte cose inutili, ma non il tempo di richiesta di CopyTicks:

virtual void Visual( void ) const
  {
    const ulong StartTime = ::GetMicrosecondCount();

    int X0;
    int Y0;

    BARS bars(this.Chart);

    TICKSPICTURE TicksPicture(this.Chart, &bars, X0, Y0);

    this.SetProperty(::OBJPROP_XDISTANCE, X0);
    this.SetProperty(::OBJPROP_YDISTANCE, Y0);

    TicksPicture.Fill(ColorBid, ::BID);
    TicksPicture.Fill(ColorAsk, ::ASK);
    TicksPicture.Fill(ColorSpread, ::AVG);

    TicksPicture.SendToResource(this.Resource);

    ::Comment("LastCalcTime = " + (string)::TimeLocal() +
              ", Ticks = " + (string)bars.GetAmountTicks() +
              ", CalcLength = " + (string)((::GetMicrosecondCount() - StartTime) / THOUSAND) + " ms.");

    ::ChartRedraw(this.Chart);

    return;
  }

In ogni caso, ottimizziamo la chiamata per copiare i tick. Ci vuole molto.
Тиковый индикатор Ticks
Тиковый индикатор Ticks
  • voti: 15
  • 2016.10.14
  • //www.mql5.com/ru/users/fxsaber">
  • www.mql5.com
Показывает тиковую ценовую историю (Bid/Ask) внутри всех видимых баров.
 
Renat Fatkhullin:

Risultati su USDCHF M1, CalcLength dall'indicatore https://www.mql5.com/ru/code/16537:

  • RoboForexEU - 23 ms (nessun stack in trasmissione, solo bid/ask)
  • MetaQuotes-Demo - 15-30 ms (c'è una tazza con i volumi nella trasmissione)

Problemi su Alpari Real e BCS Real. È molto facile aprire il vero

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Statistiche di slittamento degli ordini limite alla borsa

pivomoe, 2016.08.25 15:15

Inizia a fare un conto demo mt5 con bx. Riceverai un'e-mail con un link alla distribuzione. Nella fase di selezione del server scegliete non un server demo, ma per il trading reale. Creare un account con dati arbitrari. Creare un certificato. Tutti voi avete un conto reale con saldo zero con quotazioni e storia reali.


I risultati sono costantemente fluttuanti + la regola dei singoli thread non è rispettata - su uno senza stack i thread (dove non c'è bisogno di fare selezioni e fusioni per CopyTicks), sull'altro con stack. La demo non si apre su BCS, ma la cosa principale è che non ci sono flussi su Roboforex

Strano codice di misurazione. Ha misurato un mucchio di roba extra, ma in nessun modo la tempistica della richiesta di CopyTicks:

Non dipende da me. È tutto misurato insieme. L'unica differenza è il server commerciale. Quindi i freni sono solo legati ai copioni.

In ogni caso, la chiamata copyTicks è ottimizzata. Ci vuole molto.

Copyix nella sua forma attuale è molto scomodo. Per esempio, non è assolutamente chiaro come ottenere la zecca che c'era prima.

Perché non possiamo restituire l'indice dell'array di base e lavorare con la base come con un array? Lasciamo i problemi dell'aggiunta di nuovi dati al database interamente all'utente. Lascia che se ne occupi lui stesso, se qualcosa va storto. In questo momento, lavorare con Copyix è, beh, molto scomodo. Sembra che io sia una delle poche persone che lo usa molto attivamente. E posso dire di questo in modo abbastanza responsabile.

 
Renat Fatkhullin:

Risultati su USDCHF M1, CalcLength dall'indicatore https://www.mql5.com/ru/code/16537:

  • RoboForexEU - 23 ms (nessuna stat in trasmissione, solo bid/ask)
  • MetaQuotes-Demo - 15-30 ms (c'è una tazza con i volumi nella trasmissione)


I risultati sono costantemente fluttuanti + la regola dei threads singoli non è osservata - ci sono threads senza picks e fusioni per CopyTicks su uno di essi, sull'altro con il pick. Su BCS la demo non si apre, ma la cosa principale è che su RoboForex non ci sono pile

Strano codice di misurazione. Misurato un mucchio di cose inutili, ma in nessun modo CopyTicks richiede tempo:

virtual void Visual( void ) const
  {
    const ulong StartTime = ::GetMicrosecondCount();

    int X0;
    int Y0;

    BARS bars(this.Chart);

    TICKSPICTURE TicksPicture(this.Chart, &bars, X0, Y0);

    this.SetProperty(::OBJPROP_XDISTANCE, X0);
    this.SetProperty(::OBJPROP_YDISTANCE, Y0);

    TicksPicture.Fill(ColorBid, ::BID);
    TicksPicture.Fill(ColorAsk, ::ASK);
    TicksPicture.Fill(ColorSpread, ::AVG);

    TicksPicture.SendToResource(this.Resource);

    ::Comment("LastCalcTime = " + (string)::TimeLocal() +
              ", Ticks = " + (string)bars.GetAmountTicks() +
              ", CalcLength = " + (string)((::GetMicrosecondCount() - StartTime) / THOUSAND) + " ms.");

    ::ChartRedraw(this.Chart);

    return;
  }

In ogni caso, ottimizziamo la chiamata per copiare i tick. Ci vuole molto.

Per favore, chiarisci cosa intendi per fili singoli?

Un'altra domanda, affinché i tick arrivino il più velocemente possibile, è necessario che la tazza non sia aperta nel terminale e che non ci sia una sottoscrizione all'evento di aggiornamento della tazza da parte dell'EA/indicatore?

Da riferimento:

Velocità di uscita: il terminale memorizza per ogni simbolo 4096 tick recenti nella cache ad accesso rapido (65536 tick per i simboli con lo stack in esecuzione), le query a questi dati sono più veloci.

Di nuovo, per un accesso rapido, la scommessa dovrebbe essere nascosta e non ci dovrebbe essere una sottoscrizione per aggiornare la scommessa per simbolo? O avere uno stack (nascosto/aperto) è già una garanzia di rallentamento?
 
Alexey Kozitsyn:

Per favore, chiarisci cosa intendi per flussi singoli?

Forum sul trading, sistemi di trading automatico e test di strategia

Testare 'CopyTicks'.

fxsaber, 2016.10.13 10:18

C'è una sfumatura MT con le zecche in cui la storia delle zecche stessa viene sovrascritta retroattivamente a causa di più fonti di zecche ricevute.


 
fxsaber:
Grazie, ma sapete del vetro e della velocità di ricezione?
 
Alexey Kozitsyn:
Grazie, ma sapete del vetro e della velocità di ricezione?
No, purtroppo. Renat ha affermato che il tumblr è costantemente in streaming per tutto il marketwatch. Ma non è una soluzione opportuna (dispendiosa) per la maggior parte delle situazioni.
 
fxsaber:
No, purtroppo. Renat ha sostenuto che il vetro è permanentemente semplificato per tutto il marketwatch. Ma questa non è una soluzione appropriata per la maggior parte delle situazioni.
Sarebbe più logico avere la propria tazza per simbolo.
 

Questo è il modo in cui dovreste testare CopyTicks:

MqlTick ExtArr[2048];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   ulong from   =(TimeTradeServer()-1200)*1000;
   ulong ticks  =GetMicrosecondCount();
   int   records=CopyTicks(_Symbol,ExtArr,COPY_TICKS_INFO,from,2048);

   ticks=GetMicrosecondCount()-ticks;
   Print("Time: ",ticks," msc for ",records," records");
  }

Ecco l'output in microsecondi: 95 microsecondi per campione di 2048 tick INFO negli ultimi 20 minuti

2016.10.18 14:15:38.673 TEST (USDCHF,M1)        Time: 95 msc for 1206 records
Questo è drasticamente diverso dalle decine di millisecondi che avete dichiarato. Questo perché non avete misurato i CopyTicks.
 
Alexey Kozitsyn:

Per favore, chiarisci cosa intendi per fili singoli?

Il flusso bid/ask e il flusso completo di tick con i volumi e gli ultimi prezzi scambiati sono due grandi differenze.

Differenze cardinalmente grandi.


Un'altra domanda, affinché i tick arrivino il più velocemente possibile, è necessario che il vetro non sia aperto nel terminale e che non ci sia una sottoscrizione all'evento di aggiornamento del vetro dall'Expert Advisor/Indicator?

L'apertura nel terminale o la sottoscrizione nell'EA non ha importanza.

Se il simbolo è in marketwatch, allora il terminale riceve tutto il flusso di tick completo con le puntate incondizionatamente.


Ma soprattutto, i calcoli della frequenza di campionamento di cui sopra sono irrilevanti. Sono fatti così maldestramente (si misura tutto tranne il tempo di CopyTicks) che è persino sorprendente.