Erreurs, bugs, questions - page 2940

 
Vladimir Karputov:

Toutes les suggestions sont sur Google. Toute discussion concernant des tiers est interdite ici.

Je l'ai. MERCI de m'avoir aidé à répondre à ma question.

 
x572intraday:

Ce n'est pas la question. La question est de savoir où il peut être utile, notamment pour les traders, qui ne sont pas des programmeurs. Je n'ai pas vu de tels chiffres dans le terminal, ni dans l'échelle des prix, ni dans la fenêtre de placement des ordres, tout est identique partout (quelque part cinq chiffres, quelque part ailleurs).

Il ne s'agit pas de savoir où il peut être utile. Il s'agit de savoir comment les nombres sont représentés dans les ordinateurs, de savoir qu'il n'y a pas de nombre 0,72352 pour les ordinateurs, mais seulement 0,7235200000000001 qui peut être imprimé à 5 chiffres et pour cela, il existe une fonction DoubleToString.
 

Impossible de copier les données :

MqlRates mql_rates[];
bar_kol = Bars("EURUSD", _Period);
copy_rates = CopyRates("EURUSD", _Period, bar_kol, 100, mql_rates);

bar_kol devient 6105 et copy_rates -1 (erreur) en essayant de copier les données de 6105 bars à +100 bars.

Le journal indique ce qui suit :

EURUSD : historique synchronisé de 2007.01.02 à 2020.06.30

EURUSD,H1 : le cache de l'historique est alloué pour 74955 barres et contient 6105 barres du 2008.01.02 10:00 au 2008.12.31 17:00

EURUSD,H1 : l'historique commence à partir de 2008.01.02 10:00

L'historique est en cache à 74955 barres, mais 2008 contient les mêmes 6105 barres. C'est-à-dire un maximum de copies de barres pendant un an. Il n'est pas possible de copier plus de 6105 barres. Le nombre maximum de barres dans la fenêtre est de 100000, l'historique complet est visible dans le graphique, vous pouvez le faire défiler, toutes les barres sont présentes et tout est chargé. Littéralement, le tableau mql_rates n'est pas copié.

 

Débogage, pas de données réelles. En restant sur une ligne, l'appui répété sur F11 ou F10 ne fait pas continuer le débogage. Le pointeur reste sur une ligne et fait juste clignoter l'écran.

Construire 2715. Win10, 20H2 build 19042.746.


c'est l'état de la mémoire

 
Ilyas:

Dites-moi, quel est le danger potentiel de ZeroMemory qu'une erreur se produise dans cette situation ?

struct A
{
private:
  int i;
};

void OnStart()
{
  A a[1];
  
  ZeroMemory(a); // not allowed for objects with protected members or inheritance
}
 
Aleksey Mavrin:

Débogage, pas de données réelles. En restant sur une ligne, l'appui répété sur F11 ou F10 ne fait pas continuer le débogage. Le pointeur reste sur une ligne et fait juste clignoter l'écran.

Construire 2715. Win10, 20H2 build 19042.746.


c'est l'état de la mémoire

Mettez à jour vers la dernière bêta 2747 s'il vous plaît.

Nous changeons beaucoup de choses dans le débogueur.

 
fxsaber:

Dites-moi, quel est le danger potentiel de ZeroMemory, qu'une erreur se produise dans cette situation ?

private/protected et const (dans la plupart des cas) sont purement pour les programmeurs, le compilateur aide seulement à respecter les restrictions imposées au code

Un exemple classique :
Vous utilisez la bibliothèque de quelqu'un d'autre, sous le capot se trouve un code lourd avec des liens que des modifications non autorisées feraient échouer, donc le créateur de la bibliothèque cache une partie de l'objet en privé pour interdire les modifications non planifiées.

 
Ilyas:

private/protected et const (pour la plupart) sont réservés aux programmeurs, le compilateur n'aide qu'à respecter les restrictions imposées au code.

Un exemple classique :
Vous utilisez la bibliothèque de quelqu'un d'autre, sous le capot se trouve un code lourd avec des liens que des modifications non autorisées feraient échouer, donc le créateur de la bibliothèque cache une partie de l'objet en privé pour interdire les modifications non planifiées.

Compris, merci pour l'explication détaillée !

 

Il semble que le champ real_volume de la structure MqlRates, bien qu'il soit de type long, ne soit pas capable de stocker des valeurs dans la plage de toutes les valeurs longues (selon la documentation - 0x7FFFFFFFFFFFFFFF). Par exemple, 0x4000000000000000A8 sera écrit dans le champ 0xA8. Je parle de personnages personnalisés.

La gamme réelle des valeurs valides est-elle spécifiée quelque part ? Fondamentalement, il n'y a aucune raison pour que cela ne fonctionne pas comme une longue normale - cela ressemble à un bug.

PS. pour tick_volume probablement le même problème

 
Pouvez-vous suggérer, s'il y a lieu, un moyen de sauvegarder la valeur précédente de la variable chaîne dans l'indicateur après l'événement Init? Les variables globales du terminal ne fonctionnent pas avec les chaînes de caractères. Pour être exact, à la fin de OnCalculate() nous devons faire prev_val=val et sauvegarder prev_val aprèsInit, tandis que val prendra une nouvelle valeur, comme d'habitude. Mais je ne voudrais pas créer un objet sur le graphique, le nommer avec le nom requis et lire l'ancienne valeur après Init. Ce serait plutôt moche, bien que ce soit possible... Et le nom peut être long et les objets ont un nombre très limité de noms.
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные - Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Raison: