Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 113
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
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().
"perte possible de données due à la conversion de type"
Comment surmonter cet avertissement ?
Avertissement du compilateur :
"perte possible de données due à la conversion de type"
Comment puis-je surmonter cet avertissement ?
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
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, le compilateur a donné une erreur : ExtMapBuffer' - identifiant non déclaré
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 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.
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.
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 !
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.