[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 674

 
 

Un tel problème.

J'ai commencé à modifier Expert Advisor à partir du tutoriel - strings.mq4 (lien vers experthttp://c.mql4.com/book/mq4/experts/strings.mq4)

J'ai ajouté quelques lignes, mais cela ne fonctionne pas. Il est clair que j'ai fait une erreur, mais je ne peux pas trouver l'erreur.

Donc. Toutes les modifications sont concentrées dans le bloc 10.

Voici l'original :

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Fonction personnalisée...
{ // ...créer un objet
Color Color ; // couleur de l'objet
datetime T_Bar=Time [Ind_Bar] ; // heure d'ouverture de la barre
double O_Bar=Open [Ind_Bar] ; // Prix d'ouverture de la barre
double C_Bar=Close[Ind_Bar] ; // Prix de clôture d'une barre
double H_Bar=High [Ind_Bar] ; // Prix maximum de la barre.
double L_Bar=Low [Ind_Bar] ; // Prix minimum de la barre.

string Nom_Lin =Line + "_" ; // String - numéro de ligne
// chaîne Nom_Lin = DoubleToStr(Line,0)+"_" ; // Ceci est également possible
string Str_Time=TimeToStr(T_Bar) ; // Chaîne - heure d'ouverture.
string His_Name=Prefix+Nom_Lin+Str_Time;// Nom de l'objet créé
if (O_Bar < C_Bar) Color=Blue ; // la sélection de la couleur dépend...
if (O_Bar > C_Bar) Color=Red ; // ... en fonction des caractéristiques de la barre
si (O_Bar ==C_Bar) Color=Vert ;

switch(Line) // Ligne fine ou épaisse
{
cas 1 : // Ligne fine
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar) ;
break ; // Sortie de l'interrupteur
cas 2 : // ligne épaisse
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar) ;
ObjectSet( His_Name, OBJPROP_WIDTH, 3) ; // Style
}
ObjectSet( Son_Nom,OBJPROP_COLOR,Couleur) ; // Couleur
ObjectSet( Son_Nom, OBJPROP_RAY, false) ; // Faisceau
ObjectSetText(His_Name, "L'objet a été créé par le conseiller expert",10) ; // Description
return ; // Sortie de la fonction

}

Et voici ce que j'ai fait (compile sans erreurs) : (voir aussi fichier joint)

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // Fonction personnalisée...
{ // ...création d'un objet
Color Color ; // Couleur de l'objet
datetime T_Bar=Time [Ind_Bar] ; // heure d'ouverture de la barre
double O_Bar=Open [Ind_Bar] ; // Prix d'ouverture de la barre
double C_Bar=Close[Ind_Bar] ; // Prix de clôture d'une barre
double H_Bar=High [Ind_Bar] ; // Prix maximum de la barre.
double L_Bar=Low [Ind_Bar] ; // Prix minimum de la barre.
//-------------------изменения---------------------------------------
double Macd_M_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,0) ;
// top - accès au calcul du MAACD les jours de la ligne principale
double Macd_S_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0) ;
// Il s'agit de la référence au MACD et du calcul de la ligne de signal sur les jours
double Macd_M_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) ;
// Il s'agit de la référence au MACD et du calcul de la ligne principale sur le cadre temporel actuel.
double Macd_S_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0) ;
// Il s'agit de la référence à la MACD et du calcul de la ligne de signal au niveau du cadre temporel actuel.

string Nom_Lin =Line + "_" ; // String - numéro de la ligne
// chaîne Nom_Lin = DoubleToStr(Line,0)+"_" ; // On peut également procéder ainsi
string Str_Time=TimeToStr(T_Bar) ; // Chaîne - heure d'ouverture.
string His_Name=Prefix+Nom_Lin+Str_Time;// Nom de l'objet créé
si ((Macd_M_D1 < Macd_S_D1)&&(Macd_M_H4 < Macd_S_H4))Color=Blue ;
si ((Macd_M_D1 > Macd_S_D1)&&(Macd_M_H4 > Macd_S_H4))Color=Red ;
//
//if (O_Bar < C_Bar) Color=Blue ; //Sélection de la couleur en fonction de...
//si (O_Bar > C_Bar) Color=Red ; // ... en fonction des caractéristiques de la barre
//si (O_Bar ==C_Bar) Color=Vert ;

//-------------------изменения---------------------------------------

L'objectif - si les lectures MACD sur l'échelle de temps quotidienne et actuelle sont similaires - est de colorer la bougie en rouge ou en bleu en fonction de la direction.

Dossiers :
 

Vous ne pouvez pas déclarer des tableaux comme ceci

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

Le compilateur verra qu'il y a une variable à la place de la taille du tableau. Il ne saura tout simplement pas quelle quantité de mémoire doit être allouée pour le futur tableau. C'est pourquoi votre code ne fonctionne pas

 
drknn:

Vous ne pouvez pas déclarer des tableaux comme ceci

Le compilateur verra qu'il y a une variable à la place de la taille du tableau. Il ne saura tout simplement pas quelle quantité de mémoire doit être allouée pour le futur tableau. Et c'est pourquoi votre code ne fonctionne pas

Le fait est que je n'ai pas touché à cette partie de l'Expert Advisor - et cela a bien fonctionné - et la partie spécifiée du code a été prise dans le tutoriel MQL4 - ici https://c.mql4.com/book/mq4/experts/strings.mq4.

 
victor417:

Le fait est que je n'ai pas touché à cette partie de l'Expert Advisor - et tout a fonctionné - et la partie du code mentionnée est tirée du tutoriel MQL4 - ici https://c.mql4.com/book/mq4/experts/strings.mq4.


Si c'est ainsi que les tableaux sont déclarés dans le tutoriel, c'est assez étrange. Auriez-vous mis en évidence par un commentaire la partie du code à laquelle VOUS avez contribué.

Je n'ai pas lu ce manuel non plus. Et quel est le raisonnement de l'auteur pour justifier la légitimité de la déclaration d'array?

 

J'ai remarqué une caractéristique étrange : plus le volume de citations est important, plus le testeur ralentit... Si je démarre le test à partir de 1999, il fonctionne rapidement, mais plus je me rapproche de l'époque actuelle, plus les freins sont durs... 2008 et plus proche d'"aujourd'hui" - impossible de tester en mode visualisation.

Comment combattez-vous les freins du testeur ???

 

drknn:

Vous ne pouvez pas déclarer des tableaux comme ceci

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

Le compilateur verra qu'il y a une variable à la place de la taille du tableau. Il ne saura tout simplement pas quelle quantité de mémoire doit être allouée pour le futur tableau. Et c'est pourquoi votre code ne fonctionne pas.

Si c'est ainsi que les tableaux sont définis dans le tutoriel, c'est vraiment étrange. Auriez-vous mis un commentaire sur la partie du code que vous avez écrite ?

Je n'ai pas lu ce manuel non plus. Et quel est le raisonnement de l'auteur pour justifier la légitimité de la déclaration d'array ?

Je vois une initialisation de variable. Où sont les tableaux ?

Des séries chronologiques ? ;)

 
Bonjour, quelqu'un peut-il faire un indicateur de zigzag qu'il plie le courant à un écart minimum par rapport au high lowe mais en pips... Par exemple, si vous définissez un écart de 50 pips, tout ce qui est inférieur à cela, il est considéré comme du bruit... Je ne sais vraiment pas comment chercher un tel grand truc kollichestvo sur le forum... Merci d'avance.
 

Pouvez-vous me dire s'il vous plaît, j'ai un problème avec le testeur.

Le rapport montre que la perte totale = 863 et le drawdown maximum = 1427. Comment cela peut-il être possible ?

Si vous regardez la courbe d'équilibre - vous pouvez voir que le drawdown maximum - 863.

Quel genre de problème est-ce, pouvez-vous me dire s'il vous plaît, ou peut-être que c'est comme ça que ça devrait être ?

Merci d'avance)

 
Bonjour ! Quelqu'un pourrait-il ajouter un stop suiveur ici ; et le stoploss est défini différemment à chaque fois... Merci de le corriger.
Dossiers :
a_sidus_1.mq4  5 kb
Raison: