Errori, bug, domande - pagina 1720

 
Karputov Vladimir:

L'errore sta qui (spazio tra virgolette):


È vero. Ora funziona. Grazie! :-)
 
Ilfile Bases\BCS-MetaTrader5\ticks\Si-12.16\201610.tkc ha unadimensione di 6 Gb. Questo non dovrebbe essere il caso.
 
fxsaber:
Il file Bases\BCS-MetaTrader5\ticks\Si-12.16\201610.tkc ha una dimensione di 6 Gb. Questo non dovrebbe essere il caso.

Probabilmente nel mese 10 la struttura dei dati di tick è cambiata (forse sono state introdotte molte informazioni aggiuntive). O forse è solo che il simbolo è diventato attivamente scambiato.

In questo momento, quando si fa una query con un tale script:

//+------------------------------------------------------------------+
//|                                                    CopyTicks.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.01"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
input int  ticks=200000000;  // количество запрашиваемых тиков
//---
MqlTick ExTicks[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- запросим тики
   int copied=CopyTicks(_Symbol,ExTicks,COPY_TICKS_ALL,0,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask  
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
   Print("Size ",((long)copied*sizeof(MqlTick))>>20, " Mb");
  }
//+------------------------------------------------------------------+

sul server "Open-Broker" la dimensione dei tick (e nel mese 10 non è definitiva, i tick continuano ad essere caricati)

Dimensione del database delle zecche

2016.10.05 07:34:05.886 Terminal        MetaTrader 5 x64 build 1434 started (MetaQuotes Software Corp.)
2016.10.05 07:34:05.888 Terminal        Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 3800 / 8077 Mb, HDD: 57955 / 233310 Mb, GMT+02:00
2016.10.05 07:34:05.888 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
File:
CopyTicks.mq5  2 kb
 
Karputov Vladimir:

Probabilmente nel mese 10 la struttura dei dati di tick è cambiata (forse sono state inserite molte informazioni aggiuntive). O forse è solo che il simbolo è diventato attivamente scambiato.Ora, quando interrogato da un tale script:

sul server "Open-Broker" la dimensione dei tick (e nel mese 10 non è definitiva, i tick continuano ad essere caricati)

Script

#define  TOSTRING(A) #A + " = " + (string)(A) + " "

void OnStart()
{
  MqlTick Ticks[];
  
  const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, D'2016.10.01' * 1000, 1000000000);
  
  if (Amount > 0)
    Print(TOSTRING((Amount * sizeof(MqlTick)) >> 20) + "Mb " + TOSTRING(Ticks[0].time) + TOSTRING(Ticks[Amount - 1].time));
}

Risultato (eseguendolo su altri simboli dà lo stesso risultato) su terminale vuoto (un grafico senza Expert Advisors e indicatori)

2016.10.05 08:16:56.824 Scripts script Test (Si-12.16,M1) removed
2016.10.05 08:16:56.821 MemoryException 52000000072 bytes not available
2016.10.05 08:16:56.816 Scripts script Test (Si-12.16,M1) loaded successfully
2016.10.05 08:10:10.408 Terminal        RAM: 81 Mb reserved, 491 Mb committed

 
Karputov Vladimir:

Probabilmente nel mese 10 la struttura dei dati di tick è stata cambiata (forse sono state introdotte molte informazioni aggiuntive). O forse è solo che il simbolo è diventato attivamente scambiato.

In questo momento, quando si fa una query con un tale script:

sul server "Open-Broker" la dimensione dei tick (e nel mese 10 non è definitiva, i tick continuano ad essere caricati)

Non ho avuto abbastanza pazienza - alla dimensione del file 201610.tkc di 7,5 Gb ho deciso di interrompere il download delle zecche.
 

Se si bazzica il file, ci sarà un errore anche dopo il riavvio.

Se si richiedono 1000 tick dal 1 ottobre, il file tkc corrispondente continuerà a crescere dopo ogni avvio. In breve, il bug è fottuto.

 
Karputov Vladimir:
Non ho avuto abbastanza pazienza - alla dimensione del file 201610.tkc di 7,5 Gb ho deciso di interrompere il download dei tick.

Bug! Tutte le informazioni di ottobre sono mostrate dagli indicatori. E il file cresce all'infinito.

Ho bisogno di un aggiornamento critico della build, perché è impossibile lavorare - il disco è intasato, per non parlare del traffico.

 

ciao a tutti

Chi ha incontrato il seguente strano errore

il mio Expert Advisor sta cercando di aprire un trade suWDOX16 per esempio, ottiene risposta = 0

allo stesso tempo scrive che l'operazione è riuscita:Risultato = 0 simbolo WDOX16 volume 1.0 azione 1 tp 3264.5 sl 3239.5 tipo 0 prezzo 3250.0 L'operazione è stata completata con successo

Ma ancora niente si apre da nessuna parte. ?


 
fxsaber:

Script

Risultato (eseguendolo su altri simboli dà lo stesso risultato) su terminale vuoto (un grafico senza EAs e indicatori)

Richiedi sempre un miliardo di zecche? Sono 49 gigabyte solo per array. I tick su Si-12.16 da gennaio ad oggi sono 15789962.

Un piccolo script, basato sul tuo, conta il numero di tick per mese.

void OnStart()
  {
   MqlTick Ticks[];
   int Amount=CopyTicks(_Symbol,Ticks,COPY_TICKS_ALL,D'2016.01.01'*1000,ulong(100000000));
   MqlDateTime str;
   TimeToStruct((Ticks[0].time_msc-Ticks[0].time_msc%1000)/1000,str);
   char m=(char)str.mon;
   long n=StringToTime(StringFormat("01.%d.2016",m+1))*1000;
   int pos=0;
   for(int i=0;i<Amount;i++)
     {
      if(Ticks[i].time_msc>=n || i==Amount-1)
        {
         PrintFormat("Month %d: %d ticks, %d Mb",m,i-1-pos,(sizeof(MqlTick)*(i-1-pos))>>20);
         m++;
         n=StringToTime(StringFormat("01.%d.2016",m+1))*1000;
         pos=i;
        }
     }
  }


e dà questo risultato.

2016.10.05 10:31:51.249 CalcTick (Si-12.16,M1)  Month 1: 122413 ticks, 6 Mb
2016.10.05 10:31:51.249 CalcTick (Si-12.16,M1)  Month 2: 78627 ticks, 3 Mb
2016.10.05 10:31:51.252 CalcTick (Si-12.16,M1)  Month 3: 758652 ticks, 37 Mb
2016.10.05 10:31:51.253 CalcTick (Si-12.16,M1)  Month 4: 388578 ticks, 19 Mb
2016.10.05 10:31:51.254 CalcTick (Si-12.16,M1)  Month 5: 181053 ticks, 8 Mb
2016.10.05 10:31:51.255 CalcTick (Si-12.16,M1)  Month 6: 408080 ticks, 20 Mb
2016.10.05 10:31:51.257 CalcTick (Si-12.16,M1)  Month 7: 458366 ticks, 22 Mb
2016.10.05 10:31:51.260 CalcTick (Si-12.16,M1)  Month 8: 867396 ticks, 43 Mb
2016.10.05 10:31:51.297 CalcTick (Si-12.16,M1)  Month 9: 10973162 ticks, 544 Mb
2016.10.05 10:31:51.301 CalcTick (Si-12.16,M1)  Month 10: 1555625 ticks, 77 Mb


Ecco come appare su disco


 
Alexey Da:

Richiedi sempre un miliardo di zecche? Sono 49 gigabyte solo per array. I tick su Si-12.16 da gennaio ad oggi sono 15789962.

No, solo in questo caso. Se sto richiedendo un trilione di tick, e in realtà sono meno di 20 milioni, perché cercare di allocare memoria per un trilione?

Un trilione è con un margine. Ma questo non dice affatto che io richieda così tanto. Dice solo "dammi tutte le zecche dalla data specificata".

Un piccolo script, basato sul tuo, conta il numero di tic per mese.

e dà questo risultato.

Questo è l'aspetto su disco.

Tu fai esperimenti su Otkritie, io ho BCS. Il tuo screenshot non ha nulla in comune con il mio e con quello di Karputov (stessa apertura) - entrambi hanno molto più ottobre-tkc. E diventa sempre più grande!