Maintenant je ne comprends pas quelque chose, est-ce que je dois faire 2 buffers pour qu'ils aient le haut et le bas d'une autre période dans l'indicateur ????
et dans l'article
pourquoi les fonctions ne fonctionnent pas correctement, par exemple
//+------------------------------------------------------------------+
//| Obtenir le haut pour un numéro de barre donné|
//+------------------------------------------------------------------+
doubleiHigh(stringsymbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0 ;
ArraySetAsSeries(High,true) ;
intcopied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High) ;
if(copied>0 && index<copied) high=High[index] ;
return(high) ;
}
Vous devriez donner des exemples concrets plutôt que des affirmations générales du type "tout est mauvais".
Essayez d'exécuter l'exemple de la section CopyHigh():
//+------------------------------------------------------------------+
//|HighAndLow.mq5 |
//| Copyright 2009, MetaQuotes Software Corp.
//| http ://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property description "Exemple de sortie des valeurs High[i] et Low[i]"
#property description "pour des barres sélectionnées au hasard".
double High[],Low[];
//+------------------------------------------------------------------+
//|| Obtenir le niveau le plus bas pour un numéro de barre donné.
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double low=0;
ArraySetAsSeries(Low,true);
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
if(copied>0 && index<copied) low=Low[index];
return(low);
}
//+------------------------------------------------------------------+
//| Obtenir le niveau le plus élevé pour un numéro de barre donné |
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0;
ArraySetAsSeries(High,true);
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
if(copied>0 && index<copied) high=High[index];
return(high);
}
//+------------------------------------------------------------------+
//| Fonction de tic-tac expert|
//+------------------------------------------------------------------+
void OnTick()
{
//--- affiche les valeurs haute et basse de la barre avec l'index à chaque tic-tac,
//--- égal à la seconde d'arrivée du tic-tac
datetime t=TimeCurrent();
int sec=t%60;
printf("High[%d] =%G Low[%d] =%G",
sec,iHigh(Symbol(),0,sec),
sec,iLow(Symbol(),0,sec));
}
//+------------------------------------------------------------------+
Voici ce que j'ai obtenu, tout est correct.
Vous devriez donner des exemples concrets plutôt que des affirmations générales du type "tout est mauvais".
Essayez d'exécuter l'exemple de la section CopyHigh():
Voici ce que j'ai obtenu, tout est correct.
Je m'excuse pour le manque de spécificité de mes affirmations.
Il me semble que si une fonction est écrite, il est implicite qu'elle fonctionne avec différents paramètres. Sinon, cela n'a aucun sens.
Ajoutons le paramètre TimeFrame. Et testons le programme avec un paramètre différent, par exemple égal au paramètre actuel, c'est-à-dire, par exemple, égal à PERIOD_D1 sur un graphique journalier.
//+------------------------------------------------------------------+ //|HighAndLow.mq5 | //| Copyright 2009, MetaQuotes Software Corp. //| https ://www.mql5.com //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property description "Exemple de sortie des valeurs High[i] et Low[i]" #property description "pour des barres sélectionnées au hasard". double High[],Low[]; input ENUM_TIMEFRAMES TimeFrame; //+------------------------------------------------------------------+ //|| Obtenir le niveau le plus bas pour un numéro de barre donné. //+------------------------------------------------------------------+ double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double low=0; ArraySetAsSeries(Low,true); int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low); if(copied>0 && index<copied) low=Low[index]; return(low); } //+------------------------------------------------------------------+ //| Obtenir le niveau le plus élevé pour un numéro de barre donné | //+------------------------------------------------------------------+ double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double high=0; ArraySetAsSeries(High,true); int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High); if(copied>0 && index<copied) high=High[index]; return(high); } //+------------------------------------------------------------------+ //| Fonction de tic-tac expert| //+------------------------------------------------------------------+ void OnTick() { //--- affiche les valeurs haute et basse de la barre avec l'index à chaque tic-tac, //--- égal à la seconde d'arrivée du tic-tac datetime t=TimeCurrent(); int sec=t%60; printf("High[%d] =%G Low[%d] =%G", sec,iHigh(Symbol(),TimeFrame,sec), sec,iLow(Symbol(),TimeFrame,sec)); } //+------------------------------------------------------------------+
Je vous prie de m'excuser pour le manque de spécificité de ces affirmations.
Il me semble que si vous écrivez une fonction, il est implicite qu'elle fonctionne avec différents paramètres. Sinon, cela n'a aucun sens.
Ajoutons le paramètre TimeFrame. Et testons le programme avec un autre paramètre, par exemple, égal au paramètre actuel, c'est-à-dire, par exemple, égal à PERIOD_D1 sur un graphique journalier.
J'ai vérifié votre variante - elle fonctionne également correctement. Je l'ai exécutée en tant que script sur l'échelle de temps D1 avec les paramètres H1 et D1. Les valeurs étaient correctes (j'ai vérifié les trois dernières barres)
J'ai vérifié votre variante - elle fonctionne aussi correctement. Je l'ai exécutée en tant que script sur l'échelle de temps D1 avec les paramètres H1 et D1. Les valeurs étaient correctes (j'ai vérifié les trois dernières barres)
Je viens de commencer à apprendre. Je l'ai téléchargé, mis dans le dossier D:/\MetaTrader 5/ MQL5/Indicators.
Je l'ai compilé et je l'ai mis sur le graphique. Certains indicateurs n'affichent rien ((.
Est-ce que c'est censé être comme ça ou est-ce que j'ai fait quelque chose de mal ?
Les indicateurs CrossMa.mq5, Toned_WPR.mq5 et HistogramSample.mq5 ne s'affichent pas.
les autres fonctionnent
Vous devriez donner des exemples concrets plutôt que des affirmations générales du type "tout est mauvais".
Essayez d'exécuter l'exemple de la section CopyHigh():
Voici ce que j'ai obtenu, tout est correct.
Copier tout le tableau de données ???
Je pense qu'il est très peu économique de copier un seul élément.
Prival:
Est-ce que c'est censé être comme ça ou est-ce que j'ai fait quelque chose de mal ?
Bonjour, Sergei. Cet article a été rédigé dans le feu de l'action, pour les toutes premières versions publiques. Beaucoup de choses ont changé depuis, peut-être que certains indicateurs doivent être améliorés.
Je le réviserai dès que j'en aurai le temps.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Embarquement sur de nouveaux rails : Indicateurs personnalisés dans MQL5 a été publié :
Je ne vais pas énumérer toutes les nouvelles possibilités et fonctionnalités du nouveau terminal et du nouveau langage. Elles sont nombreuses, et certaines nouveautés méritent d'être discutées dans un article séparé. De plus, il n'y a aucun code d’écrit avec une programmation orientée objet, c'est un sujet trop sérieux pour être simplement mentionné dans un contexte comme des avantages supplémentaires pour les développeurs. Dans cet article, nous examinerons les indicateurs, leur structure, leur dessin, leurs types et leurs détails de programmation, par rapport à MQL4. J'espère que cet article sera utile aussi bien aux débutants qu'aux développeurs expérimentés, peut-être que certains d'entre eux trouveront quelques éléments d’apprentissage.
Voici un exemple de visualisation des tons, en utilisant le nombre maximum de couleurs :
Auteur : TheXpert