Erreurs, bugs, questions - page 1720

 
Lefichier Bases\BCS-MetaTrader5\ticks\Si-12.16\201610.tkc pèse 6 Go. Cela ne devrait pas être le cas.
 
fxsaber:
Le fichier Bases\BCS-MetaTrader5\ticks\Si-12.16\201610.tkc pèse 6 Go. Cela ne devrait pas être le cas.

Il est probable qu'au cours du mois 10, la structure des données tick ait été modifiée (peut-être que de nombreuses informations supplémentaires ont été introduites). Ou peut-être que c'est juste que le symbole est devenu activement négocié.

Actuellement, lors d'une demande avec un tel 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");
  }
//+------------------------------------------------------------------+

sur le serveur "Open-Broker" la taille des ticks (et au mois 10 ce n'est pas définitif, les ticks continuent à être téléchargés)

Taille de la base de données de Tick

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
Dossiers :
CopyTicks.mq5  2 kb
 
Karputov Vladimir:

Il est probable qu'au cours du mois 10, la structure des données du tick ait changé (peut-être que de nombreuses informations supplémentaires ont été saisies). Ou peut-être que c'est juste que le symbole est devenu activement négocié. Maintenant, lorsqu'il est interrogé par un tel script :

sur le serveur "Open-Broker" la taille des ticks (et au mois 10 ce n'est pas définitif, les ticks continuent à être téléchargés)

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));
}

Résultat (l'exécution sur d'autres symboles donne le même résultat) sur un terminal vide (un graphique sans Expert Advisors ni indicateurs).

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:

Il est probable qu'au cours du mois 10, la structure des données tick ait été modifiée (peut-être que de nombreuses informations supplémentaires ont été introduites). Ou peut-être que c'est juste que le symbole est devenu activement négocié.

Actuellement, lors d'une demande avec un tel script :

sur le serveur "Open-Broker" la taille des ticks (et au mois 10 ce n'est pas définitif, les ticks continuent à être téléchargés)

Je n'ai pas eu assez de patience - à la taille du fichier 201610.tkc de 7.5 Gb a décidé d'interrompre le téléchargement des tics.
 

Si tu connais le fichier, il y aura une erreur même après le redémarrage.

Si vous demandez 1000 ticks à partir du 1er octobre, le fichier tkc correspondant continuera de croître après chaque démarrage. En bref, le mouchard est foutu.

 
Karputov Vladimir:
Je n'ai pas eu assez de patience - à la taille du fichier 201610.tkc de 7,5 Gb j'ai décidé d'interrompre le téléchargement des ticks.

Bug ! Toutes les informations pour le mois d'octobre sont indiquées par les indicateurs. Et le fichier s'agrandit sans cesse.

J'ai besoin d'une mise à jour critique de la construction, car il est impossible de travailler - le disque est encombré, sans parler du trafic.

 

Bonjour à tous

Qui a rencontré l'étrange erreur suivante

Mon conseiller expert essaie d'ouvrir une transaction surWDOX16 par exemple, il obtient une réponse = 0.

en même temps écrit que l'opération est réussie :Résultat = 0 symbole WDOX16 volume 1.0 action 1 tp 3264.5 sl 3239.5 type 0 prix 3250.0 L'opération s'est déroulée avec succès.

Mais toujours rien ne s'ouvre nulle part. ?


 
fxsaber:

Script

Résultat (l'exécution sur d'autres symboles donne le même résultat) sur un terminal vide (un graphique sans EAs ou indicateurs).

Vous demandez toujours un milliard de tiques ? C'est 49 gigaoctets juste par tableau. Les ticks sur Si-12.16 depuis janvier jusqu'à maintenant sont 15789962.

Un petit script, basé sur le vôtre, compte le nombre de tics par mois.

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;
        }
     }
  }


et donne ce résultat.

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


Voici à quoi cela ressemble sur le disque


 
Alexey Da:

Vous demandez toujours un milliard de tiques ? Cela représente 49 gigaoctets par réseau uniquement. Les ticks sur Si-12.16 de janvier à aujourd'hui sont 15789962.

Non, seulement dans ce cas. Si je demande un trillion de ticks, et qu'ils sont en fait moins de 20 millions, pourquoi essayer d'allouer de la mémoire pour un trillion ? !

Un trillion, c'est avec une marge. Mais ça ne veut pas dire du tout que je demande autant. Il dit seulement "donnez-moi TOUS les ticks à partir de la date spécifiée".

Un petit script, basé sur le vôtre, compte le nombre de tics par mois.

et donne ce résultat.

Voici à quoi ça ressemble sur le disque.

Vous faites des expériences sur Otkritie, j'ai BCS. Votre capture d'écran n'a rien en commun avec la mienne et avec celle de Karputov (même Ouverture) - les deux ont beaucoup plus de October-tkc. Et elle ne cesse de s'agrandir !

 
Alexey Da:

Vous demandez toujours un milliard de tiques ? Cela représente 49 gigaoctets par réseau uniquement. Les ticks sur Si-12.16 de janvier à aujourd'hui sont 15789962.

Un petit script, basé sur le vôtre, compte le nombre de tics par mois.


et donne ce résultat.


Voici à quoi ça ressemble sur le disque.


La quantité à commander n'a pas d'importance. Même pour la commande de 20000 ticks (vingt mille), le fichier du mois 10 se mesure en gigaoctets.

Le script, en demandant 20.000

//+------------------------------------------------------------------+
//|                                                    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");
  }
//+------------------------------------------------------------------+

a donné une croissance incroyable des fichiers pour le mois 10 - la taille a été mesurée en gigaoctets.


Le terminal étant éteint, j'ai supprimé le fichier tick du mois 10 (taille d'environ 7,5 Go).

Puis j'ai exécuté votre script

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;
        }
     }
  }

tout s'est bien passé, pas de gigantomanie en taille - très étrange.

J'ai ensuite relancé votre script (paramètres d'entrée 20000). Tout s'est stabilisé - mais le fichier continuait à grossir jusqu'à atteindre des tailles inimaginables le matin ! Je l'ai vu moi-même et j'ai fait l'expérience !


En ce qui concerne le nombre de milliards de ticks - même un trillion - le terminal ne donnera pas plus que ce dont il dispose.