MT5. Construit en 2055. La fonction ChartGetDouble(0,CHART_PRICE_MAX) et ChartGetDouble(0,CHART_PRICE_MIN) est exécutée incorrectement (écrit des zéros) lors du changement de TF. Et il écrit correctement la première fois en démarrant l'indicateur. Ensuite, lorsque TF est décalé sur le mensuel TF est toujours nul, sur les autres parfois au début, puis il est normalisé.
offsetof – это специальная команда, которая непосредственно связана в атрибутом pack. Она позволяет получить смещение члена от начала структуры.
struct Parent{
char c; // sizeof(char)=1
};
struct Children pack(2) : Parent{
short s; // sizeof(short)=2
};
voidOnStart(){
//--- объявим переменную типа Children
Children child;
//--- узнаем смещения от начала структуры Print("offsetof(child.c)=",offsetof(child.c));
Print("offsetof(child.s)=",offsetof(child.s));
}
Au début, j'ai été surpris, car je ne savais pas que l'offsetof existait. Mais la réalité a remis tout à sa place :
Si vous ouvrez un signal de la section Signaux, vous pouvez voir un exemple d'infographie :
Normalement, l'objectif d'une infographie est de transmettre à l'utilisateur final les avantages et les inconvénients d'un ensemble de propriétés de l'objet analysé. Cependant, l'essence de cette infographie n'est pas claire, lorsqu'un drawdown de 100% est affiché comme un résultat de 100% sur le graphique. De même, le même indicateur est utilisé deux fois dans le même graphique : une fois en positif et une seconde fois en négatif (indicateurs de "Trades profitables" et de "Trades perdants").
Modifications proposées : 1. Introduisez un compte à rebours pour les indicateurs "Maximum drawdown", "Maximum deposit load", "Losing trades" (plus la valeur est petite - plus la valeur de l'indicateur est grande sur le graphique) ; 2. Remplacez l'un des indicateurs dupliqués ("trades profitables" ou "trades perdants") par un nouvel indicateur (par exemple, l'écart moyen du montant des achats et des ventes, ou autre chose) ; 3. Pour certains indicateurs, tels que "Maximum drawdown" et "Maximum deposit load", remplacez l'échelle en % omniprésente sur le graphique par une échelle logarithmique ou autre. L'objectif est d'augmenter l'impact de l'indicateur sur l'attractivité du signal.
boolArrayInsert(
void& dst_array[], // receiving array constvoid& src_array[], // source array uintdst_start, // receiver array index to be inserted uint src_start=0, // source array index to be copied uint count=WHOLE_ARRAY// number of elements to insert
);
intArrayCopy(
void& dst_array[], // destination array constvoid& src_array[], // source array intdst_start=0, // index starting from which write into destination array int src_start=0, // first index of a source array int count=WHOLE_ARRAY// number of elements
);
Des différences dans des fonctions presque "identiques" : 1. pas de paramètre par défaut pour ArrayInsert. 2. l'absence d'une description "standard" des paramètres.
L'utilisation de types de données différents pour les mêmes paramètres (int, uint) peut être comprise, en référence à la compatibilité.
Quelqu'un peut-il me dire comment faire en sorte que le rapport du bilan dans la dernière fenêtre Profit inclue également le swap et la commission !
Ou comment le faire ?
Il n'est pas commode de regarder le bénéfice et de se rendre compte ensuite qu'il faut soustraire la commission et les swaps. C'est terriblement ennuyeux !
MT5. Construit en 2055.
La fonction ChartGetDouble(0,CHART_PRICE_MAX) et ChartGetDouble(0,CHART_PRICE_MIN) est exécutée incorrectement (écrit des zéros) lors du changement de TF.
Et il écrit correctement la première fois en démarrant l'indicateur. Ensuite, lorsque TF est décalé sur le mensuel TF est toujours nul, sur les autres parfois au début, puis il est normalisé.
résultat :
https://www.mql5.com/ru/docs/basis/types/classes
offsetof – это специальная команда, которая непосредственно связана в атрибутом pack. Она позволяет получить смещение члена от начала структуры.
Mais la réalité a remis tout à sa place :
https://www.mql5.com/ru/docs/basis/types/classes
J'ai d'abord été surpris car je ne connaissais pas l'existence de l'offsetof.Mais la réalité a remis tout à sa place :
Vous avez vous-même écrit
Si vous ouvrez un signal de la section Signaux, vous pouvez voir un exemple d'infographie :
Normalement, l'objectif d'une infographie est de transmettre à l'utilisateur final les avantages et les inconvénients d'un ensemble de propriétés de l'objet analysé.
Cependant, l'essence de cette infographie n'est pas claire, lorsqu'un drawdown de 100% est affiché comme un résultat de 100% sur le graphique.
De même, le même indicateur est utilisé deux fois dans le même graphique : une fois en positif et une seconde fois en négatif (indicateurs de "Trades profitables" et de "Trades perdants").
Modifications proposées :
1. Introduisez un compte à rebours pour les indicateurs "Maximum drawdown", "Maximum deposit load", "Losing trades" (plus la valeur est petite - plus la valeur de l'indicateur est grande sur le graphique) ;
2. Remplacez l'un des indicateurs dupliqués ("trades profitables" ou "trades perdants") par un nouvel indicateur (par exemple, l'écart moyen du montant des achats et des ventes, ou autre chose) ;
3. Pour certains indicateurs, tels que "Maximum drawdown" et "Maximum deposit load", remplacez l'échelle en % omniprésente sur le graphique par une échelle logarithmique ou autre. L'objectif est d'augmenter l'impact de l'indicateur sur l'attractivité du signal.
Pourquoi les structures peuvent faire une copie profonde, maisArrayCopy, même si la classe a un constructeur de copie, ne peut rien faire et donne une erreur de compilation?
"Ce n'est pas normal, ce n'est pas juste !" ©
Des différences dans des fonctions presque "identiques" :
1. pas de paramètre par défaut pour ArrayInsert.
2. l'absence d'une description "standard" des paramètres.
L'utilisation de types de données différents pour les mêmes paramètres (int, uint) peut être comprise, en référence à la compatibilité.
Pas de paramètre par défaut pour ArrayInsert.
Pourquoi les structures peuvent faire une copie profonde, maisArrayCopy, même si la classe a un constructeur de copie, ne peut rien faire et donne une erreur de compilation?
"Ce n'est pas normal, ce n'est pas juste !" ©
J'ai dû implémenter moi-même un ArrayCopy à part entière.
Je ne pense pas, mais peut-être que quelqu'un pourrait trouver ça utile...
Résultat :
Erreur logique
Quelle est la différence entre (1) et (2) ?