Bonsoir
Je suis débutant dans le développement d'indicateur en MQL5 et là je ne vois pas
Un peu d'aide serait la bienvenu
Je voudrais un canal de donchian mais sans utiliser de boucle For ou autre
Mon code fonctionne mais quand j'ai voulu avoir la représentation graphique, je n'arrive pas à alimenter le buffer
j'ai une erreur tout en bas du code dans OnCalculate
'HighestPrice' - invalid array access
'LowestPrice' - invalid array access
Voici le code
//+------------------------------------------------------------------+
Merci pour vos aides car ça fait un bout de temps que je suis dessus sans en sortir
Bonjour, vous avez déclaré des tableaux ( HighestPrice[] et LowestPrice[]) forcément il manque quelque chose non?
LowestPrice [ ? ] = PrixInformation[LowestCandle].low;
Peut être que votre erreur vient de la!
Bonjour
Merci pour votre réponse
C'est sûr qu'il manque qqch mais je ne sais pas comme l'écrire
Ce qui me perturbe le plus c'est que ce code fonctionnait, sans erreur quand les arrays highestPrice et LowestPrice étaient déclarés en local
Pour pouvoir le dessiner sur le graphe, j'ai du déplacer ces déclarations au global et là ça ne marche plus et bien entendu je ne vois pas ce qu'il attend
Donnez moi plus d'aides et d'explications STP pour que je puisse progresser
Merci
Belle journée
Bonjour
Merci pour votre réponse
C'est sûr qu'il manque qqch mais je ne sais pas comme l'écrire
Ce qui me perturbe le plus c'est que ce code fonctionnait, sans erreur quand les arrays highestPrice et LowestPrice étaient déclarés en local
Pour pouvoir le dessiner sur le graphe, j'ai du déplacer ces déclarations au global et là ça ne marche plus et bien entendu je ne vois pas ce qu'il attend
Donnez moi plus d'aides et d'explications STP pour que je puisse progresser
Merci
Belle journée
Bonjour, il y a plusieurs erreurs dans votre code. Sans indiscrétion comment l'avez vous codé? Vous l'avez récupéré et essayer de le modifier?
Je veux bien vous aider si c'est le cas.
Vous ne pouvez pas déclarer vos buffer en local et je suppose que quand ils étaient déclarés en local ce n'étaient pas des tableaux mais de simples variables. double highestPrice ; au lieu de double highestPrice [];
Réctifiez:
Car je pense qu'il y a une erreur (je vous laisse trouver).
Et essayez:
HighestPrice[rates_total-1] = PrixInformation[HighestCandle].high; ( rates_total-1 est égal a une bougie avant votre bougie en cour pour la bougie en cour il faudra écrire rates_total)
LowestPrice[rates_total-1] = PrixInformation[LowestCandle].low;
Bonjour
J'ai perdu mon message, je recommence.
Je me suis inspiré de plusieurs codes trouvés sur ce site car c'est mon premier script et il me faut tout découvrir et tout apprendre sur metrader
Pour un souci de performance, je souhaite me débarrasser des boucles et ne passer que pour les fonctions Array, si possible ...
je vois les commandes pour les remplissages, les évènements, les fonctions array.
celui-ci https://www.mql5.com/fr/code/1601
je n'aime pas car la représentation n'est pas bonne, ça se voit d'ailleurs sur la page de présentation, les extrêmes sont décalés d'une bougie
Encore des boucles FOR, mais je vois bien que la réponse à mon souci est dans ce code "en parti"
La plus gros parti viens de ce code
https://www.mql5.com/fr/code/402
j'ai pas mal appris avec. Les params externes et les fonctions internes comme les ihighest
D'ailleurs je trouve que c'est bien null dans ce code qu'il est révinventé la roue alors qu'elle était dispo et en plus de rajouter encre plus de boucle
et pour finir ce code sur youtube
https://www.youtube.com/watch?v=eIXGRC0e6Ew
//+------------------------------------------------------------------+ //| Donchian sans boucle.mq5 | //| Copyright 2023, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" void OnTick() { // Création des points les plus hauts et bas int HighestCandle, LowestCandle; // Création arrays pour les hauts et bas double High[], Low[];//, PrixInformation[]; // Données triées par la plus récente ArraySetAsSeries(High,true); ArraySetAsSeries(Low,true); // Remplir les arrays avec les datas de 10 bougies CopyHigh(_Symbol,_Period,0,10,High); CopyHigh(_Symbol,_Period,0,10,Low); // Recherche des extremes HighestCandle = ArrayMaximum(High,0,10); LowestCandle = ArrayMaximum(Low,0,10); // Array pour les prix MqlRates PrixInformation[]; // Trié de la plus récente à la plus ancienne ArraySetAsSeries(PrixInformation, true); // Copier les prix dans l'array int Donnees = CopyRates(_Symbol,_Period,0,Bars(_Symbol,_Period),PrixInformation); double highestPrice = PrixInformation[HighestCandle].high; double LowestPrice = PrixInformation[LowestCandle].low; Print("Higest: ",highestPrice, " Lowest ", LowestPrice); } //+------------------------------------------------------------------+
qui lui passe bien sans boucle
Donc comme tu peux voir j'apprends bien par l'exemple, mais là tout de suite, j'ai du mal à passer l'erreur en cours et je seche depuis un bout de temps
'HighestPrice' - undeclared identifier
Si tu veux bien m'aider, ça me rendra bien plus autonome pour mes autres développements
Très belle journée
// Définition de l'array source double sourceArray[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; // Définition de notre filtre (dans cet exemple, nous copions les éléments supérieurs à 5) bool filter(double value) { return value > 5.0; } // Fonction récursive pour filtrer les éléments de l'array source void filterArrayRecursive(const double& source[], const int& sourceSize, double& destination[], int& destinationIndex, bool (*filter)(double)) { if(sourceSize == 0) return; if(filter(source[0])) { destination[destinationIndex] = source[0]; destinationIndex++; } filterArrayRecursive(source + 1, sourceSize - 1, destination, destinationIndex, filter); } // Appel de la fonction pour filtrer les éléments de l'array source double destinationArray[5]; int destinationIndex = 0; filterArrayRecursive(sourceArray, ArraySize(sourceArray), destinationArray, destinationIndex, filter);
Jai répondu à ton problème, qui était à la base :
'HighestPrice' - invalid array access
Je t'ai dis de rajouter l'index à ton tableau : HighestPrice[rates_total-1] = PrixInformation[HighestCandle].high;
Je ne vois pas comment je peux être plus clair.
Maintenant tu me dis que ton problème c'est:
'HighestPrice' - undeclared identifier
Je ne comprend plus
Bonjour et merci pour ton aide j'ai trouvé une solution
Mon problème était du à cause d'une méconnaissance de ma part
je vais passer au problème suivant à savoir la représentation graphique puis l'Oo car ma stratégie à tester est assez compliqué et je veux un code simple à maintenir
Très belle journée
Ps j'ai suivi votre lien vers votre site et je n'ai pas vu les prix de vos services
Bonjour, effectivement l'apprentissage n'est pas une chose aisée, surtout sans professeur. Avec quelqu'un, la réponse vient rapidement, par contre en autodidacte, il faut apprendre à chercher l'erreur (Print(); te sauve la mise souvent pour vérifier le bon déroulement du code et des valeurs de tes variables par exemple), ensuite il te faut chercher la solution. Concentre toi sur les buffers (essentiel pour les indicateurs et experts, c'est une chose que tu aurais du faire depuis le début). Peut être connais tu un autre langage de programmation et c'est pour cela que tu as mis les mains dans le cambouis des le début. Quoi qu'il en soit, avec la passion et du temps ca vient rapidement.
Et pour mon site, à la base, il sert juste de plateforme pour mon expert (je n'ai jamais trouvé un expert capable de faire ce qu'il fait, alors je l'ai conçu), mais avec le temps je rajouterais des choses. Parfois aussi je rend des services mais cela dépend aussi du Service en question.
Bonne journée et bon courage.
- 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
Bonsoir
Je suis débutant dans le développement d'indicateur en MQL5 et là je ne vois pas
Un peu d'aide serait la bienvenu
Je voudrais un canal de donchian mais sans utiliser de boucle For ou autre
Mon code fonctionne mais quand j'ai voulu avoir la représentation graphique, je n'arrive pas à alimenter le buffer
j'ai une erreur tout en bas du code dans OnCalculate
'HighestPrice' - invalid array access
'LowestPrice' - invalid array access
Voici le code
//+------------------------------------------------------------------+
Merci pour vos aides car ça fait un bout de temps que je suis dessus sans en sortir