Erreurs, bugs, questions - page 2263

 
Anaxagor:

Hélas, cela n'arrivera jamais.
Après tout, les trois principaux spammeurs sont un projet du Département d'État. Et le Département d'Etat ne permettra pas que cela se produise.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Record sur le marché

Artyom Trishkin, 2018.08.21 22:28

Un programmeur qui se soucie de la qualité de son produit et de son nom ne peut pas fabriquer des produits artisanaux à la vitesse d'une machine à coudre. Il se soucie avant tout de la qualité, et non de la quantité. Mais ceux qui ont un besoin urgent de faire des quantités ne penseront pas à la qualité.

Contrairement à Market, QB est gratuit. C'est peut-être pour cela que le spam MT5-KB est moins pertinent, même s'il dure des années, et non quelques jours comme le marché.

 
fxsaber:

Pas très au fait du sujet. Je ne savais pas que le Common est le même pour tous, y compris pour le cas MT4+5.

Il s'avère que les photocopieurs détruisent les disques durs, parce qu'ils fonctionnent sur une courte période.

Utilisez le mécanisme MemMap et le disque dur ne sera pas endommagé par la vitesse == vitesse de la mémoire.

 
Konstantin:

Utilisez le mécanisme MemMap et le disque dur ne mourra pas, en termes de vitesse == vitesse de la mémoire.

Il existe de nombreuses façons de communiquer, mais pas pour le marché.

 
fxsaber:

Il existe de nombreuses façons de communiquer, mais pas pour le marché.

Il faut utiliser un SSD pour éviter de détruire le disque dur. Dans ce cas, le fichier n'a pas d'emplacement spécifique dans la mémoire physique et il est toujours "égaré" car il est écrasé et réécrit.
C'est le moment où le disque dur doit être utilisé uniquement pour la banque de données et non pour les disques système.

 
Nikolai Semko:

Il faut utiliser un SSD pour ne pas endommager le disque dur. Là, le fichier n'a pas de place spécifique dans la mémoire physique et se "promène" toujours lorsqu'il est écrasé et réécrit.
C'est le moment où le disque dur doit être utilisé uniquement pour la banque de données et non pour les disques système.

Les copieurs sont mis sur VPS. Presque tous les VPS sont à disque dur.

 
fxsaber:

Les copieurs sont mis sur VPS. Presque tous les VPS sont des disques durs.

Eh bien, c'est un problème pour les propriétaires de vps.
 
fxsaber:

Il existe de nombreuses façons de communiquer, mais pas pour le marché.

memmap peut également être utilisé si vous utilisez des moulages et des unions.

 
Konstantin:

memmap est également possible si vous utilisez le casting et l'union.

Marché sans DLL.

 
Si je le fais
ArrayResize(Array, Size, 100);

La quantité de mémoire allouée sera-t-elle un multiple de cent ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

Ilyas, 2016.08.24 11:08

Le tableau ("inside") stocke les éléments alloués - sous combien d'éléments le tableau est alloué.

La logique de travail avec les attributions (code conditionnel) :
ArrayResize(arr,int size,int reserve)
  {
   if(arr.allocated<size)
      if(!ArrayAllocateMemory(arr,size+reserve))  // -> arr.allocated=size+reserve;
         return(-1);
   //---
   CallConstructorsOrDestructors(arr,size);
   //---
   arr.size=size;
   return(size);
  }
La réponse ci-dessus est non.
 

Aidez-moi, je n'arrive toujours pas à comprendre les raisons.


Ce code compile pour une raison inconnue

class A {};

class B : public A
{
public:
  void f()
  {
    Print(__FUNCTION__);
  }
};

void OnStart()
{
  A a;
  
  ((B*)(&a)).f(); // OK
}

mais il se plante lorsqu'il est exécuté. Je pensais qu'il s'agissait d'un bug de compilation - rien de grave.


Mais ensuite j'ai écrit le code comme ceci

#property script_show_inputs

input string FileName = "Alpari_GBPAUD.ZIP";

#include <Zip\Zip.mqh> // https://www.mql5.com/ru/articles/1971

void OnStart()
{
  CZip Zip;

  Zip.LoadZipFromFile(FileName, 0);

  uchar Bytes[];

  ((CZipFile*)Zip.ElementAt(0)).GetUnpackFile(Bytes);
  Print("UnZip - unpack size " + (string)ArraySize(Bytes) + " bytes.");  
}


Non seulement il compile, mais il est aussi exécuté avec succès ! Je dois être gravement stupide quelque part, mais je n'ai pas compris pourquoi cela fonctionne sans aucun problème.

Malheureusement, je n'ai pas réussi à le localiser, donc l'exemple avec ZIP-bibble. Et, très probablement, ce serait une déception de le découvrir. Mais ça n'a pas d'importance.

Raison: