Comment apprendre à créer des objets graphiques ? MQL4. - page 5

 

J'ai essayé de transférer le code EA vers le script.

Les lignes se chevauchent dans le script, je ne comprends pas pourquoi elles ne fonctionnent pas dans l'Expert Advisor ?

Qui a réussi à dessiner des objets dans la sous-fenêtre du graphique lors du lancement de la visualisation de l'Expert Advisor ?


 
forexman77:

J'ai essayé de transférer le code EA vers le script.

Les lignes se chevauchent dans le script, je ne comprends pas pourquoi elles ne fonctionnent pas dans l'EA ?

Qui a réussi à dessiner des objets dans la sous-fenêtre du graphique lors du lancement de la visualisation de l'Expert Advisor ?


Spécifiez le numéro de la sous-fenêtre de l'indicateur dans laquelle vous allez dessiner.
 
Artyom Trishkin:
Indiquez le numéro de la sous-fenêtre de l'indicateur dans laquelle vous allez dessiner.

De cette façon, il donne -1 dans l'EA. Dans le script, tout va bien, l'image ci-dessus. J'ai lu votre article sur l'indicateur AD, beaucoup de fois, je ne le comprends pas encore. Comme toujours, la raison se trouve dans une petite chose.

D'après ce que je comprends, la fenêtre n'est pas détectée dans l'EA pour une raison quelconque, erreur 4206.

 
forexman77:

De cette façon, il donne -1 dans l'EA. Dans le script, tout va bien, l'image ci-dessus. J'ai lu votre article sur l'indicateur AD, beaucoup de fois, je ne le comprends pas encore. Comme toujours, la raison se trouve dans une petite chose.

D'après ce que je comprends, la fenêtre n'est pas détectée dans l'EA pour une raison quelconque, erreur 4206.

La fenêtre de l'indicateur a besoin de temps pour être créée. La fenêtre de l'indicateur ne peut être dessinée avant le premier appel de OnCalculate(). Voulez-vous tout dessiner dans OnInit() ?
 
Karputov Vladimir:
La fenêtre de l'indicateur a besoin de temps pour être créée. Dans la fenêtre de l'indicateur, vous pouvez dessiner au plus tôt au premier appel de OnCalculate(). Voulez-vous tout dessiner dans OnInit() ?
Non. Seulement après l'ouverture d'une transaction, c'est-à-dire après le passage des lignes d'ouverture de position, quand elle est ouverte, le rendu commence.

Voici le code de l'EA.

string   shortName="fraktalSDV"; 
long   chart_ID=0;        // ID графика
int win_idx=ChartWindowFind(chart_ID,shortName);
string nameobj=TimeToStr(Time[0]);       
            //--- сбросим значение ошибки
            ResetLastError();
            //--- создадим трендовую линию по заданным координатам
           if(!ObjectCreate(chart_ID,nameobj,OBJ_TREND,win_idx,Time[index],maximum1,Time[1],TRENDmax[1]))
            {
            Print(__FUNCTION__,
                  ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
            return(0);
            }
ObjectSet(nameobj,OBJPROP_RAY,false); 

Il y a une ligne dans l'indicateur lui-même :

IndicatorShortName("fraktalSDV");

 
forexman77:

De cette façon, il donne -1 dans l'EA. Dans le script, tout va bien, l'image ci-dessus. J'ai lu votre article sur l'indicateur AD, beaucoup de fois, je ne le comprends pas encore. Comme toujours, la raison se trouve dans une petite chose.

D'après ce que je comprends, la fenêtre n'est pas détectée dans l'EA pour une raison quelconque, erreur 4206.

Il ne trouve pas la sous-fenêtre de l'indicateur. Recherchez la fenêtre de l'indicateur par le nom court de l'indicateur - celui que vous voyez en haut à gauche de la fenêtre de l'indicateur. Vous ne devez pas avoir saisi le nom entier pour le rechercher.
 
Artyom Trishkin:
Il ne trouve pas la sous-fenêtre de l'indicateur. Recherchez la sous-fenêtre de l'indicateur par le nom court de l'indicateur - celui que vous voyez en haut à gauche de la fenêtre de l'indicateur. Vous ne mettez probablement pas le nom entier pour le rechercher.

string shortName="fraktalSDV";

Je l'appelle comme ça. J'ai essayé d'appeler le nom de l'indicateur dans le conseiller expert et de le désactiver, cela n'a pas fonctionné jusqu'à présent.

Voici l'indicateur lui-même. Je le supprimerai plus tard.

 
forexman77:

string shortName="fraktalSDV";

Je l'appelle comme ça. J'ai essayé d'appeler le nom de l'indicateur dans le Conseiller Expert, cela n'a pas fonctionné jusqu'à présent.

Essayez en

int win_idx=ChartWindowFind(chart_ID,shortName);

Je ne devrais pas mettre la recherche de la fenêtre de l'indicateur, mais une seule (y a-t-il une seule fenêtre sur le graphique ?)

Si cela fonctionne, renvoyer la recherche de la fenêtre à

long   chart_ID=0;        // ID графика

le type en

long   chart_ID=ChartID();
 
Artyom Trishkin:

Essayez de

entrer un au lieu de la recherche de la fenêtre de l'indicateur (y a-t-il une fenêtre sur le graphique ?)

En haut du graphique lui-même avec les guillemets et en bas dans le séparateur de l'indicateur.
 
forexman77:
En haut se trouve le graphique lui-même avec les cotations et en bas, dans le séparatum, se trouve l'indicateur.
Alors faites ce qu'ils vous disent ;) Vous devez chercher l'erreur...