Mise à jour du Centre d'histoire - historique gratuit des citations de minutes depuis 1999 - page 8

 
Rosh:
Hélas, mettez le "Max bars on the chart" (environ 3 millions pour aujourd'hui) et vous pouvez regarder n'importe quelle date.
c'est-à-dire qu'il n'est pas possible de définir un segment arbitraire ?
Par exemple, seulement en août 2005 ?
 
Non, et pourquoi. L'article "Secrets du terminal client de MetaTrader 4" décrit certaines fonctions utiles qui facilitent la vie, en voici une :

 
Avez-vous déjà voulu supprimer la limite du nombre de barres dans l'historique et la fenêtre en général ? Ou faire une case à cocher comme illimité. Ainsi, les utilisateurs ne se poseront aucune question à ce sujet.
Vous pouvez remplacer la limitation du nombre de barres dans la fenêtre par une logique plus intelligente de permutation de l'historique à partir d'un fichier. Il y aura un tampon pour l'affichage si nous nous déplaçons sur les données en dehors de ce tampon alors dans ce tampon est chargé à partir d'un fichier de nouvelles données de l'histoire au lieu de la précédente - il peut défilement retarde un peu à elle, bien sûr. Bien que si l'historique entier est chargé ou comme le défilement dans la profondeur de l'historique peut être placé dans un tampon créé par VirtualAlloc dans ce cas la mémoire sera chargée à partir du fichier de swap des données auxquelles le terminal accède à ce moment-là au lieu des anciennes qui sont effacées de la mémoire et restent dans le fichier de swap - le même tamponnage mais au niveau du système d'exploitation.
 
elritmo:
Souhaitez-vous supprimer la limitation du nombre de barres dans l'historique et la fenêtre en général ? Ou bien faites une case à cocher du type "illimité". Les utilisateurs n'auraient aucune question à ce sujet.
Vous pouvez remplacer la limitation du nombre de barres dans la fenêtre par une logique plus intelligente de permutation de l'historique à partir d'un fichier. Il y aura un tampon pour l'affichage si nous nous déplaçons sur les données en dehors de ce tampon alors dans ce tampon est chargé à partir d'un fichier de nouvelles données de l'histoire au lieu de la précédente - il peut défilement retarde un peu à elle, bien sûr. Bien que si l'historique entier est chargé ou comme le défilement dans la profondeur de l'historique peut être placé dans un tampon créé par VirtualAlloc dans ce cas la mémoire sera chargée à partir des données du fichier d'échange auxquelles le terminal accède en ce moment au lieu des anciennes données qui sont effacées de la mémoire et restent dans le fichier d'échange - le même tampon mais au niveau du système d'exploitation.
Dieu nous en préserve, la pagination !
Limiter l'historique est également nécessaire pour ceux qui placent le terminal sur un serveur pour le trading automatisé. Ils ont besoin d'un minimum d'historique pour faire fonctionner les indicateurs et limiter l'espace disque.
 
faites une case à cocher comme illimité ou infini. Celui qui a besoin d'être limité le fera facilement. Par défaut, il n'y a pas de restrictions, de sorte que vous n'avez pas à vous demander : pourquoi je ne peux pas voir tout mon historique ?
 
Oui, et la mémoire de tout le monde est illimitée par défaut...

Si vous affichez toute l'histoire, il y aura des questions sur la raison pour laquelle les choses sont si lentes.
 

Vous pouvez charger l'historique à partir d'un fichier au fur et à mesure que vous défilez. Mais il me semble que cela ralentit parce que la mémoire est relocalisée dans la pile. Il existe d'autres approches pour réserver la mémoire. Nous recommandons d'utiliser l'allocation de mémoire VirtualAlloc pour les tableaux volumineux. Heap peut être utilisé librement pour les tableaux dynamiques ne dépassant pas 1Mbyte
. Dans MT, je suppose que pour l'allocation de mémoire, on utilise l'opérateur new[] et la fonction cpymem ou malloc et realloc qui appellent ensuite HeapAlloc et HeapRealloc. Un message d'absence de mémoire apparaît si vous ne pouvez pas trouver un nouvel espace d'adressage pour placer les éléments les uns après les autres (je ne suis pas sûr de cela :)). Ou peut-être que la taille du fichier d'échange est insuffisante à un moment donné.

Voici un exemple de la façon dont vous pouvez utiliser la mémoire virtuelle pour les séries chronologiques au lieu du tas
.

MemManager::MemManager(int reg_size, int unt_size, void*& p) {
    unit_size = unt_size;
    SYSTEM_INFO si;
    GetSystemInfo(&si);
    page_size = si.dwPageSize;
    region_size = (reg_size / page_size) * page_size;
    if(reg_size % page_size != 0) region_size += page_size;
    next_page = region = (char*)VirtualAlloc(0, region_size, MEM_RESERVE, PAGE_READWRITE);
    p = region;
    capacity = 0;
}
 
MemManager::~MemManager() {
     VirtualFree(region, 0, MEM_RELEASE);
}
 
void MemManager::realloc(int sz) {
    size = sz*unit_size;
    if(size <= capacity)
        return;
    int tmp_size = size - capacity;
    int inc_size = (tmp_size / page_size) * page_size;
    if (tmp_size % page_size != 0) inc_size += page_size;
    char* p = (char*)VirtualAlloc(next_page, inc_size, MEM_COMMIT, PAGE_READWRITE);
    next_page += inc_size;
    capacity += inc_size;
}
 
Oui, oui, moi aussi j'ai beaucoup d'idées sur la façon d'améliorer l'économie dans le monde.
Je peux également donner de précieux conseils aux laboureurs sur la façon de labourer et aux femmes sur la façon d'accoucher.
Et je suis le plus intelligent ici, même si je suis très pauvre. . .
 

Les plus intelligents utilisent les idées des autres ;o) Un peu comme les Japonais après la seconde guerre mondiale...

 
Dites-moi l'historique pour 6E, Euro FX Currencies -Globex est manquant dans le centre d'historique ? Pourquoi seulement les deux derniers jours sont téléchargés ?
Raison: