Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 113

 
Alexey Kozitsyn:

Il existe plusieurs façons d'obtenir les prix actuels :

1. Pour n'importe quel symbole : si vous voulez obtenir les prix courants garantis, appelez SymbolInfoDouble() avec les identifiants corrects avant de les utiliser.

2. Pour le symbole actuel, vous pouvez également obtenir les prix actuels grâce aux variables prédéfinies Bid et Ask. Ils peuvent devenir obsolètes, donc si OnTick() est en cours d'exécution, vous devez les rafraîchir avec RefreshRates().

Merci !
 
Avertissement du compilateur :

"perte possible de données due à la conversion de type"

Comment surmonter cet avertissement ?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));
 
Maksym Mudrakov:
Avertissement du compilateur :

"perte possible de données due à la conversion de type"

Comment puis-je surmonter cet avertissement ?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));

Vous devez connaître les types exacts des valeurs renvoyées par les fonctions et utiliser une conversion explicite. https://www.mql5.com/ru/docs/basis/types/casting

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:
Vous n'avez pas un modèle complet - vous n'avez probablement pas défini les tampons d'indicateur dans l'assistant, où les données calculées seront écrites.

Mais le principe de base pour la plupart des indicateurs est le suivant :

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<1) return(0);              // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;    // количество посчитанных уже баров
   if(limit>1) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total-1;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for(int i=limit; i>=0; i--) {
      // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Artem, il y a une erreur dans le compilateur : ExtMapBuffer' - identifiant non déclaré

 
Andrey Koldorkin:
Artem, le compilateur a donné une erreur : ExtMapBuffer' - identifiant non déclaré

Bien sûr que oui. Je l'ai écrit à l'improviste. Et avant d'écrire l'exemple, je vous ai dit qu'aucune variable externe n'est spécifiée dans le modèle (ce n'est pas nécessaire) et qu'aucun tampon pour afficher les calculs des indicateurs n'est spécifié. Bien sûr, il existe des indicateurs qui n'utilisent pas la sortie du tampon, mais pas dans votre cas.

C'est pourquoi j'ai mis ce tampon. Vous devez recréer le modèle, mais vous devriez être plus responsable de cette simple action et vous demander : "Mais que me demande l'assistant et de quoi a-t-il besoin ?
 
Bonjour, il y a environ quatre mois, j'ai commencé à étudier MQL4 en utilisant le tutoriel de Kovalev. J'ai aussi des vidéos. Je regarde la vidéo, j'étudie le tutoriel, je copie les codes qui y sont utilisés. je comprends que c'est un sujet très sérieux et qu'il faut du temps pour le maîtriser. mais je sais exactement que j'ai besoin de pratique. j'ai besoin de tâches simples et de les écrire et que quelqu'un les vérifie alors je pourrai aller plus loin ! un autre problème est que le livre et les vidéos ont été mis à jour, je répète même le code du livre, je le compile, j'obtiens des erreurs, je ressemble à un mouton devant une nouvelle porte...... c'est la tristesse !
 
FOTOGRAF14:
Bonjour, il y a environ quatre mois, j'ai commencé à étudier MQL4 en utilisant le tutoriel de Kovalev. J'ai aussi des vidéos. Je regarde la vidéo et étudie le tutoriel, je répète les codes qui y sont utilisés. je comprends que c'est un sujet très sérieux et qu'il faut du temps pour le maîtriser. mais je sais exactement que j'ai besoin de pratique. j'ai besoin de tâches simples et de les écrire et que quelqu'un les vérifie alors je pourrai aller plus loin ! un autre problème est que le livre et les vidéos ont été mis à jour, je répète même le code du livre, je le compile, j'obtiens des erreurs, je ressemble à un mouton à la nouvelle porte...... c'est la tristesse !

Lisez la documentation pour une fois. Le manuel est dépassé à certains endroits. La documentation vous aidera dans ce domaine. À propos des tâches - résolvez les mêmes tâches que celles décrites dans le manuel. Lisez le problème, regardez la solution, répétez-la. Et ainsi de suite jusqu'à ce que vous ayez le coup de main. Il est préférable de prendre les tâches les plus proches possibles de celles que vous voulez apprendre à mettre en œuvre vous-même.

Tout cela, bien sûr, IMHO.

 
Sergey Gritsay:
Il compile bien pour moi.

Ok, voulez-vous expliquer pourquoi de tels objets ne sont pas différenciés ?

Si vous changez le type d'objet, les propriétés seront réduites à 2 étiquettes ou lignes de tendance.

 
Alexey Kozitsyn:

Lisez la documentation pour une fois. Le manuel est dépassé à certains endroits. La documentation vous aidera dans ce domaine. En ce qui concerne les tâches, résolvez les mêmes tâches que celles décrites dans le manuel. Lisez le problème, regardez la solution, répétez-la. Et ainsi de suite jusqu'à ce que vous ayez le coup de main. Il est préférable de prendre les tâches les plus proches possibles de celles que vous voulez apprendre à mettre en œuvre vous-même.

Tout cela, bien sûr, IMHO.

Merci !

 
trader781:

Ok, voulez-vous expliquer pourquoi de tels objets ne sont pas différenciés ?

Si vous changez le type d'objet, les propriétés seront réduites à 2 étiquettes ou lignes de tendance.

R Quels sont les objets qui ne sont pas différenciés ? et que voulez-vous dire par remplacer le type d'objet, les propriétés vont s'effondrer ?