Discussion de l'article "Modèles prêts à l'emploi pour ajouter des indicateurs dans les Expert Advisors (Partie 1) : Oscillateurs"

 

Un nouvel article Modèles prêts à l'emploi pour ajouter des indicateurs dans les Expert Advisors (Partie 1) : Oscillateurs a été publié :

L'article examine les indicateurs standard de la catégorie des Oscillateurs. Nous créerons des modèles prêts à l'emploi pour être utilisé dans les EA : déclaration et définition des paramètres, initialisation et dé-initialisation des indicateurs, ainsi que la récupération des données et des signaux depuis les buffers des indicateurs dans les EA.

L'ajout d’un indicateur dans un EA et l'utilisation de ses résultats est une tâche assez simple, même si elle nécessite quelques recherches dans les documentations de référence. Nous devons nous souvenir de tous les paramètres transmis à la fonction de création de l'indicateur, formaliser certains d'entre eux comme étant des entrées de l'EA, introduire des contrôles de validité, etc. Pour récupérer les résultats, nous devons écrire des fonctions qui renvoient les données nécessaires à partir de la barre souhaitée. Tout cela implique de passer du temps à accéder à l'aide, à entrer les variables nécessaires dans l'EA, à écrire des fonctions pour recevoir et surveiller les données afin de déterminer les signaux, etc.

L'objectif de cet article est de créer des modèles pour inclure des indicateurs dans les EA. Examinons les indicateurs de la catégorie des oscillateurs, leurs variables d'entrée, la création d'une poignée d'indicateur et la récupération des données nécessaires.


Auteur : Artyom Trishkin

 
Pourquoi passer de wint à int et pourquoi vouloir une telle conception en premier lieu ?
//--- Fixer et ajuster si nécessaire la période de calcul
   period=int(InpPeriod<1 ? 14 : InpPeriod);

Je comprends que l'entrée est une constante. Je n'arrive pas à imaginer la tâche.

Enfin, seulement comme défense contre un imbécile qui mettrait un moins, mais alors il serait préférable d'avoir une alerte indiquant que la personne a fait une erreur.

 
Valeriy Yastremskiy #:
Pourquoi passer de uint à int et pourquoi une telle construction ?

Je comprends que l'entrée est une constante. Je n'arrive pas à imaginer la tâche.

Enfin, seulement comme défense contre un imbécile qui mettrait un moins, mais alors il vaudrait mieux avoir une alerte indiquant que la personne a fait une erreur.

InpPeriod est une variable d'entrée input. Il n'est pas possible d'y mettre un moins. On peut y mettre un zéro. De telles vérifications (pour moins d'un) sont une habitude de ne pas comparer directement des nombres avec zéro - si soudainement dans une autre construction similaire il y aura une variable d'entrée avec un type double, cela me permettra d'éviter la comparaison directe de deux nombres doubles. Oui, c'est "infaillible". Tout d'abord de ma part - pour faire moins d'erreurs lors du portage du code vers d'autres endroits.

 
Artyom Trishkin #:

InpPeriod - variable d'entrée input. Il n'est pas possible d'y mettre un moins. Vous pouvez y mettre un zéro. De telles vérifications (pour moins d'un) sont une habitude de ne pas comparer directement des nombres avec zéro - si soudainement dans une autre construction similaire il y aura une variable d'entrée avec un type double, cela me permettra d'éviter la comparaison directe de deux nombres doubles. Oui, c'est "infaillible". Tout d'abord, de ma part - pour faire moins d'erreurs lors du portage du code vers d'autres endroits.

Eh bien, oui, c'est uint)))))) On ne peut pas y mettre un moins))))

 
Valeriy Yastremskiy #:

Eh bien, oui, wint))))))) On ne peut pas y mettre un moins))))

Et zéro ?

 
Alexey Viktorov #:

Et zéro ?

Et zéro est possible. Mais dans ce cas, l'indicateur sera réglé sur la valeur par défaut.

Mais le but de votre question était autre - vous savez déjà ce qu'est le zéro.

Mais je ne vais pas deviner

 
Artyom Trishkin #:

Et zéro est possible. Mais dans ce cas, l'indicateur sera réglé sur la valeur par défaut.

Mais le but de votre question était autre - vous savez déjà ce qu'est le zéro.

Mais je ne vais pas deviner

C'est exact. Il n'y a pas besoin de deviner. C'était juste une question pour Valery. On ne peut pas mettre un moins, mais un zéro ?

 
Alexey Viktorov #:

Et zéro ?

Le zéro est donc actuel)))) Comme une conception infaillible, c'est bien))))))

Et vous pouvez mettre un masque sur le clavier, de sorte que seuls les chiffres sont pressés, et que les autres touches ne sont pas pressées)))))) C'est ce que faisaient les soldats dans les années 90)))))) Et lorsque l'on appuyait sur d'autres touches, un avertissement apparaissait en grosses lettres))

 
Artyom Trishkin #:

Bonjour !

Comment aligner le texte au centre de la cellule ?


 
Vitaly Muzichenko #:

Salutations !

Comment aligner le texte au centre de la cellule ?


Bonjour. Je ne pense pas avoir fait de sortie de texte dans des cellules avec des points d'ancrage différents.

Mais si nous supposons que column_width est la largeur de la cellule, column_height est sa hauteur,
et text_w et text_h sont les dimensions correspondantes du texte à sortir dans la cellule,
alors les coordonnées du coin supérieur gauche du texte devraient être calculées en utilisant ces formules :

Ancrage texte_x texte_y
LEFT_UPPER 0 0
LEFT 0 (hauteur_colonne - texte_h)/2
LEFT_LOWER 0 hauteur_de_la_colonne - texte_h
LOWER (largeur de la colonne - texte_w)/2 hauteur de la colonne - texte_h
DROITE_MONTANT Largeur de la colonne - texte_w hauteur de la colonne - texte_h
DROITE largeur de colonne - texte_w (hauteur de la colonne - texte_h)/2
DROITE_HAUT largeur de colonne - texte_w 0
EN HAUT (largeur_de_la_colonne - texte_w)/2 0
CENTRE (largeur_de_la_colonne - texte_w)/2 (hauteur de la colonne - texte_h)/2

Ici, l'ancrage du texte - par défaut - initialise les coordonnées du texte dans le coin supérieur gauche, et pour afficher le texte en fonction du point d'ancrage (ancre dans l'en-tête du tableau), vous devez calculer les coordonnées du texte à l'aide des formules ci-dessus.

 
Artyom Trishkin #:

Bonjour. Je ne pense pas avoir fait de sortie de texte dans des cellules avec des points d'ancrage différents.

Mais si nous supposons que column_width est la largeur de la cellule, column_height est sa hauteur,
et text_w et text_h sont les tailles correspondantes du texte à éditer dans la cellule,
alors les coordonnées du coin supérieur gauche du texte devraient être calculées en utilisant ces formules :

Ancrage texte_x texte_y
LEFT_UPPER 0 0
LEFT 0 (hauteur_colonne - texte_h)/2
LEFT_LOWER 0 hauteur_de_la_colonne - texte_h
LOWER (largeur de la colonne - texte_w)/2 hauteur de la colonne - texte_h
DROITE_MONTANT Largeur de la colonne - texte_w hauteur de la colonne - texte_h
DROITE largeur de colonne - texte_w (hauteur de la colonne - texte_h)/2
DROITE_HAUT largeur de colonne - texte_w 0
EN HAUT (largeur_de_la_colonne - texte_w)/2 0
CENTRE (largeur_de_la_colonne - texte_w)/2 (hauteur de la colonne - texte_h)/2

Ici, l'ancrage du texte - par défaut - initialise les coordonnées du texte dans le coin supérieur gauche, et pour afficher le texte en fonction du point d'ancrage (ancre dans l'en-tête du tableau), vous devez calculer les coordonnées du texte selon les formules données.

C'est à peu près ce que je pensais, mais je pensais qu'il y avait une solution plus simple.

Merci de votre compréhension.