[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
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
https://www.mql5.com/ru/forum/491
Merci.
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.
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. C'est pourquoi votre code ne fonctionne pas
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.
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
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 ? ;)
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)