[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 132
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
MERCI BEAUCOUP !
Votre version de l'indicateur fonctionne !
J'ai essayé de les résoudre avec le tutoriel MQL4 et les exemples révisés d'indicateurs, mais rien n'a fonctionné.
Si vous avez le désir, le temps et l'envie de m'aider à comprendre pourquoi :
1. Lorsque vous installez l'indicateur ligne reçoit une valeur de 0 (zéro) et seulement avec l'arrivée du premier tick prend la valeur de la variable top, ou devrait ouvrir la fenêtre des paramètres et la fermer immédiatement ;
2. Le paramètre top est calculé au 4ème signe, bien qu'il y ait la ligne suivante dans init()
IndicateurDigits(Digits+1) ;
et la ligne
top=WindowPriceMax(win_idx) ;
Je l'ai remplacé par
top=NormalizeDouble((WindowPriceMax(win_idx)),Digits+1) ;
Ça ne sert à rien ! Et les valeurs numériques de l'échelle de la fenêtre de l'indicateur sont de 5 chiffres.
3. Avec la suppression de l'indicateur, Commentaire n'est pas supprimé du graphique.
Code
--------
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
double ExtMapBuffer1[],
ExtMapBuffer2[];
//--------------------------------
int init()
{
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
IndicatorShortName("MACD_max-min_v2");
IndicatorDigits(Digits+1);
return(0);
}
//--------------------------------
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),limit,win_idx;
double top;
if(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
win_idx=WindowFind("MACD_max-min_v2");
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
}
// top=WindowPriceMax(win_idx);
top=NormalizeDouble((WindowPriceMax(win_idx)),Digits+1);
Comment( "\n"," top = ",top);
ObjectDelete("max");
if(ObjectFind("max")!=win_idx)
{
ObjectCreate("max",OBJ_HLINE,win_idx,Time[0],top);
ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);
}
return(0);
}
//+------------------------------------------------------------------+
P.S.
pour effacer la ligne de commentaire, insérez Commentaire(") dans deinit() ;
Correction technique - utilisez le bouton SRC sur le panneau supérieur pour insérer du code, comme le font vos conseillers. Il sera beaucoup plus facile à lire.
P.S.
Pour effacer la ligne de commentaire, insérez Commentaire(") dans deinit() ;
Les tableaux ne peuvent pas être passés à Comment(). Les tableaux doivent être imprimés élément par élément.
Les données de type double sont imprimées avec 4 chiffres décimaux après le point.. Pour obtenir des chiffres plus précis, utilisez DoubleToStr().
Les types bool, datetime et color seront imprimés sous forme de nombres.
Pour produire des données de type date-heure sous forme de chaîne, utilisez la fonction TimeToStr().
Pour diviser la sortie en plusieurs lignes, vous pouvez utiliser le caractère de saut de ligne "\n" ou "\r\n".
Voir également Alert() et Print().
Le prix a traversé la ligne horizontale vers le haut....
Et comment décrire cette ligne ?
Bonjour,
Voici le problème que je rencontre.
Travail sur PERIOD_H1.
Pour fermer à la fin de l'heure, je fais ceci :
Pour ouvrir une position au début de l'heure, je fais ce qui suitMais pour le test, cela se passe comme suit
Je n'arrive pas à comprendre où je me trompe.
Cela ne se passe pas toujours comme ça, mais il y a des moments comme ça.
Merci à ceux qui répondront :).
Je ne dis pas ça, je dis quelle différence cela fait-il de savoir où l'EA est attaché ? S'il est écrit correctement, l'endroit où il est placé ne fait aucune différence - il suffit de le placer sur un graphique du change mongol, mais s'il est configuré pour fonctionner sur EURUSD 1 minute, il le fera. Et il n'est pas difficile de le programmer, il suffit de changer quelques lignes.
Merci beaucoup pour cette clarification !
Je suis seulement préoccupé par le fait que le testeur simule des barres d'une minute pour des modifications à l'ouverture de chaque barre d'une minute.
Je vais essayer de changer Open[0] en iOpen(NULL,1,0) et ajouter une fonction pour vérifier l'ouverture de la barre d'une minute.
Quelques minutes se sont écoulées, pendant lesquelles j'ai retouché le code et l'ai essayé avec le testeur à M5 en m'assurant que dans ce cas le testeur n'ouvre pas de barres de 1 minute, pourtant prescrites, et ne le modifie que toutes les 5 minutes, ce que je craignais. En mode tous ticks, il est un peu meilleur, car il modifie plus souvent. Mais sur M1 seulement, à l'ouverture de la barre, cela fonctionne de la même façon, à la fois avec Open[0] et avec iOpen(NULL,1,0), ce dont je suis toujours reconnaissant !
Maintenant, je vais toujours utiliser l'iOpen vert, car je vois que je peux me passer de l'Open rouge. Le bénéfice vert est plus agréable que la perte rouge. ( :))
Bonjour,
Voici le problème que je rencontre.
Travail sur PERIOD_H1.
Pour fermer à la fin de l'heure, je fais ceci :
Pour ouvrir une position au début de l'heure, je fais ceciMais pour le test, cela se passe comme suit
Je n'arrive pas à comprendre où je me trompe.
Cela ne se passe pas toujours comme ça, mais il y a des moments comme ça.
Merci, qui répond :)
Un ami m'a donné un conseil :
Au lieu de TimeCurrent()
TimeSeconds(TimeCurrent())
Et ça a marché.