Storia di zecca - pagina 24

 
juriy5555:

A giudicare dalle query dell'indicatore di tick, i dati del campo time_msk sono un multiplo di 1000. cioè non stiamo parlando di millisecondi, la risoluzione è 1 secondo.

Domanda: che senso aveva allora estendere la struttura di MqlTick?

E a quale server commerciale si è collegato?
 
Ho una demo su Openbroker e un conto reale anche lì. Sul reale tutti i server Access danno lo stesso risultato. bene, e sulla demo è lo stesso. Ho guardato Si-6.16, RTS-6.16, SBRF-6.16. Tutti i cambiamenti sono multipli di 1000.
Non è così da voi?
 
juriy5555:
Ho una demo su Openbroker e un conto reale sullo stesso posto. Sul server reale all Access dà lo stesso risultato. beh sulla demo lo stesso. Guardato Si-6.16, RTS-6.16, SBRF-6.16. Tutti i cambiamenti sono multipli di 1000.
Non è così?

In questo momento, la query SymbolInfoTick restituisce degli zeri nella struttura MqlTick invece di millisecondi reali (un multiplo di 1000)

Si prega di attendere la prossima build.

PS su richiesta i millisecondi di CopyTicks sono dati così come sono

 

Ho scaricato questo indicatore da questo thread per testarlo. Ottiene esattamente gli ultimi 30 tick tramite CopyTicks. Come opzione, forse dovrei provare su un server diverso (non openbroker).

>>"gli zeri sono dati al posto dei millisecondi reali".

Non vengono dati zeri, ma sempre gli stessi numeri con un multiplo di 1000. (...2064, ...2064, ...3064, ..., ..., ..4064 )

File:
 
juriy5555:

Ho scaricato questo indicatore da questo thread per testarlo. Ottiene esattamente gli ultimi 30 tick tramite CopyTicks. Come opzione, forse dovrei provare su un server diverso (non openbroker).

>>"gli zeri sono dati al posto dei millisecondi reali".

Non vengono dati zeri, ma sempre gli stessi numeri con un multiplo di 1000. (...2064, ...2064, ...3064, ..., ..., ..4064 )

Gli zeri sono passati dalla funzione SymbolInfoTick.

In CopyTicks vengono dati millisecondi reali. Se questi sono 2064, 3064, 4064, significa che era così. Perché sia stato così, non lo so.

Ho dato un'occhiata al tuo codice. Qual è lo specificatore di output %-4d? time_msc è lungo, quindi solo d non funziona. Dovrebbe essere %I64d.

 
Slawa:

Gli zeri sono dati dalla funzione SymbolInfoTick.

In CopyTicks vengono dati millisecondi reali. Se è 2064, 3064, 4064, così è stato. Perché fosse così, non lo so.

Ho dato un'occhiata al tuo codice. Qual è lo specificatore di output %-4d? time_msc è lungo, quindi solo d non funziona. Dovrebbe essere %I64d.

Sì, scusate. Il codice non è mio. L'autore del codice ha davvero un lapsus in StringFormat. Ho stampato in ogni iterazione del ciclo attraverso Print (tick.time_msc) . Il risultato è tutti zeri alla fine e non otteniamo ancora nessun millisecondo. La richiesta diCopyTicks persiste.

File:
99999.jpg  332 kb
 
Slawa:

Gli zeri sono dati dalla funzione SymbolInfoTick.

In CopyTicks vengono dati millisecondi reali. Se è 2064, 3064, 4064, così è stato. Perché sia stato così, non lo so.

Ho guardato il tuo codice. Qual è lo specificatore di output %-4d? time_msc - è lungo, ecco perché solo d non funziona. Dovrebbe essere %I64d.

Indicatore modificato dal primo post - non giocare con StringFormat, dovrebbe essere così ora:

string tick_string=IntegerToString(i,2,'0')+"  "+TimeToString(tick.time,TIME_MINUTES|TIME_SECONDS)+"  "+
                            DoubleToString(tick.bid,Digits())+"  "+DoubleToString(tick.ask,Digits())+"  "+
                            DoubleToString(tick.last,Digits())+"  "+IntegerToString(tick.volume,7,'0')+"  "+
                            IntegerToString(tick.time_msc,19,'0')+"  "+IntegerToString(tick.flags,2,'0');
 
juriy5555:

Sì, scusate. Il codice non è mio. L'autore ha davvero un bug in StringFormat. Stampa (tick.time_msc) in ogni iterazione del ciclo. Il risultato è tutti zeri alla fine e non otteniamo ancora nessun millisecondo. La richiestaCopyTicks va sempre.

Ecco il tuo indicatore su dati MetaQuotes Demo


Chiedete al vostro broker l'assenza di millisecondi in tick

 
Slawa:

Ecco il tuo indicatore su dati MetaQuotes Demo


Chiedete al vostro broker della mancanza di millisecondi in tick

Non so ancora cosa e a chi scrivere, ci sto lavorando da qualche mese. Spero che OpenBroker aggiorni il server dopo tutto.
ps il mio cliente costruisce 1340
 

juriy5555 :
Пока не знаю, что и у кому конкретно писать, я в этом несколько месяцев.  Буду надеяться, что  ОпенБрокер всё таки обновит сервер. 
ps мой билд клиента 1340

Ho anche una domanda, anche se con un piano leggermente diverso, e mi chiedo anche se le informazioni trasmesse dalle zecche siano corrette.

Una domanda sui volumi reali.

Se richiedi informazioni sui tick dall'indicatore, il volume reale va lì nell'array volume[]. E, in teoria, se ottieni informazioni dai tick, il volume accumulato per candela dovrebbe corrispondere al valore dell'array volume[].

Ecco un esempio di codice di prova:

 //+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//--- Получение данных по тику
   MqlTick tick;                                               // Структура хранения инфо по тику
   SymbolInfoTick ( _Symbol ,tick );                             // Получение данных по тику
   Print ( "ask: " + DoubleToString (tick.ask, _Digits )+ ", bid: " + DoubleToString (tick.bid, _Digits )+ ", last: " + DoubleToString (tick.last, _Digits )+
         ", vol: " ,tick.volume, ", flags: " ,tick.flags);
//--- Формирование объема
   static ulong sVol;                                         // Суммарный объем из тиков на свече
   if (prev_calculated<= 0 )                                     // Если первый запуск
      sVol=tick.volume;                                       // Запоминаем значение тика
   else
     {
       if (rates_total>prev_calculated) // Если образовалась новая свеча
        {
         sVol=tick.volume;                                     // Запоминаем значение объема первого тика
        }
       else                                                      // Если новая свеча не образовалась
         sVol+=tick.volume;                                    // Суммируем объем тика с накопленным объемом
     }
   Print ( "Реальный объем: " ,volume[rates_total- 1 ], ", накопленный объем: " ,sVol);
//--- 
   return (rates_total);
  }
//+------------------------------------------------------------------+

Non attacchiamoci alle bandiere per ora e assumiamo che ogni tick ricevuto modifichi il volume totale di sVol (anche se, per quanto ne so, non è così).

Stiamo aspettando la formazione di una nuova candela e guardiamo le voci nel diario. Apertura broker, conto reale, build 1340, RTS-6.16:

 2016.06 . 09 17 : 07 : 01.820 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 1 , накопленный объем: 1
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 3 , flags: 24
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 1 , накопленный объем: 4
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 3 , flags: 24
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 5 , накопленный объем: 7
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 3 , flags: 24
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 7 , накопленный объем: 10
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 3 , flags: 24
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 8 , накопленный объем: 13
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 3 , flags: 24
2016.06 . 09 17 : 07 : 03.142 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 11 , накопленный объем: 16
2016.06 . 09 17 : 07 : 03.266 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 03.266 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 16 , накопленный объем: 17
2016.06 . 09 17 : 07 : 03.266 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 03.266 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 18 , накопленный объем: 18
2016.06 . 09 17 : 07 : 03.266 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 03.266 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 19 , накопленный объем: 19
2016.06 . 09 17 : 07 : 03.700 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94660 , vol: 1 , flags: 24
2016.06 . 09 17 : 07 : 03.700 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 20 , накопленный объем: 20
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 22 , накопленный объем: 21
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 27 , накопленный объем: 22
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 28 , накопленный объем: 23
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 29 , накопленный объем: 24
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 31 , накопленный объем: 25
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 33 , накопленный объем: 26
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 38 , накопленный объем: 27
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 43 , накопленный объем: 28
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 45 , накопленный объем: 29
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 47 , накопленный объем: 30
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 49 , накопленный объем: 31
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 51 , накопленный объем: 32
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 56 , накопленный объем: 33
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 59 , накопленный объем: 34
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 60 , накопленный объем: 35
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.319 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 60 , накопленный объем: 36
2016.06 . 09 17 : 07 : 04.347 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.347 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 61 , накопленный объем: 37
2016.06 . 09 17 : 07 : 04.347 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 04.347 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 61 , накопленный объем: 38
2016.06 . 09 17 : 07 : 05.344 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 05.344 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 63 , накопленный объем: 39
2016.06 . 09 17 : 07 : 05.344 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94680 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 05.344 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 64 , накопленный объем: 40
2016.06 . 09 17 : 07 : 05.460 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 24
2016.06 . 09 17 : 07 : 05.460 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 65 , накопленный объем: 41
2016.06 . 09 17 : 07 : 05.516 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 24
2016.06 . 09 17 : 07 : 05.516 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 68 , накопленный объем: 42
2016.06 . 09 17 : 07 : 05.516 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 24
2016.06 . 09 17 : 07 : 05.516 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 69 , накопленный объем: 43
2016.06 . 09 17 : 07 : 06.016 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 24
2016.06 . 09 17 : 07 : 06.016 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 70 , накопленный объем: 44
2016.06 . 09 17 : 07 : 06.557 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94670 , last: 94670 , vol: 1 , flags: 0
2016.06 . 09 17 : 07 : 06.557 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 71 , накопленный объем: 45
2016.06 . 09 17 : 07 : 06.702 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94670 , vol: 2 , flags: 2
2016.06 . 09 17 : 07 : 06.702 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 73 , накопленный объем: 47
2016.06 . 09 17 : 07 : 06.702 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94680 , bid: 94660 , last: 94670 , vol: 2 , flags: 2
2016.06 . 09 17 : 07 : 06.702 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 73 , накопленный объем: 49
2016.06 . 09 17 : 07 : 06.718 test_ticks_openbroker (RTS- 6.16 ,M1)     ask: 94670 , bid: 94660 , last: 94670 , vol: 2 , flags: 0
2016.06 . 09 17 : 07 : 06.718 test_ticks_openbroker (RTS- 6.16 ,M1)     Реальный объем: 74 , накопленный объем: 51

E così via, il volume reale dell'indicatore sarà molto più grande di quello accumulato. Questo solleva alcune domande per gli sviluppatori:

1. Il volume ottenuto dall'array volume[] della funzione OnCalculate() deve essere uguale al volume accumulato ottenuto dai tick? La mia opinione, ovviamente, dovrebbe, altrimenti perché indicarla tra i segni di spunta?

2. È corretto utilizzare la funzione OnCalculate() per accumulare il volume o è meglio ottenere il volume tramite OnBookEvent()? L'aiuto dice:

L' evento Calculate viene generato solo per gli indicatori immediatamente dopo l'invio dell'evento Init e ad ogni variazione dei dati di prezzo. Gestito dalla funzione OnCalculate.

quindi, in teoria, è corretto, ma vorrei sentire un commento in merito.

3. I risultati del test vengono mostrati SENZA analisi flag. Se analizziamo i flag, quindi, per quanto ho capito, devi prendere i volumi dai tick con i flag 24 (modifica simultanea dell'ultimo e del volume):

  • TICK_FLAG_LAST - il segno di spunta ha cambiato il prezzo dell'ultima operazione
  • TICK_FLAG_VOLUME - spunta il volume modificato

Ma in questo caso, il volume accumulato sarà ancora inferiore. Vorrei sentire i commenti degli sviluppatori su come analizzare correttamente i tick ora (poiché tutti i campi sono registrati) e i flag sono implementati correttamente? La domanda sulla correttezza dell'implementazione è sorta perché non ho notato segni di spunta con i flag:

  • TICK_FLAG_BUY - il segno di spunta si è verificato a seguito di un accordo di acquisto
  • TICK_FLAG_SELL – si è verificato un tick a seguito di un'operazione di vendita

Qual è il numero di queste bandiere?

Il file indicatore è anche nell'applicazione.

Motivazione: