Bon après-midi. Question sur un pointeur de fichier... Dans le livre MQL4, que vous trouverez à l'adresse MQL4.community, dans la section "Standard Functions", il y a un exemple du script "File Operations", qui est destiné à lire les données d'un fichier et à afficher des objets graphiques dans une fenêtre de symboles :
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Ci-dessous, lors de l'analyse de ce script dans le livre sur MQL4, la phrase suivante est donnée : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. Et seulement après cela, la condition de fin de la boucle while se déclenchera et le contrôle sera transmis aux blocs 8-9".
Est-ce que je comprends bien ? Un pointeur de fichier n'est PAS INDIQUÉ PAR DES SIGNES DE TEXTE (par exemple : texte| où | est un pointeur de fichier), mais est un pointeur AVEC EXPRESSION, par exemple : texte où k est le caractère "à", le k-ième est mis en évidence par un pointeur de fichier. Cela explique la nécessité des cordes (voir p.164) :
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
En effet. À l'avant-dernière itération, après avoir créé le DERNIER objet
2007.05.11 18:30;JPY
le pointeur de fichier est à la position du dernier objet, c'est-à-dire que
2007.05.11 18:30;JPYFabrication industrielle
(où o est le caractère "o", k est l'index du fichier). Ensuite, lors du passage du contrôle à l'en-tête de l'instruction while, la fonction FileIsEnding(handle) renverra évidemment true, car le pointeur de fichier ne se trouve PAS à la fin du fichier, mais au DERNIER caractère de ce fichier. Ensuite, lorsque les deux premières lignes sont exécutées, le pointeur de fichier se déplace vers un espace vide et s'il n'y a pas de lignes
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
le script créera un graphique (c'est-à-dire une ligne) avec une description vide et une coordonnée temporelle qui correspond à 0. C'est ce que signifie la phrase : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. "
Question: est-ce que je comprends bien :
a ) la définition d'un pointeur de fichier ;
b) la signification de la phrase "Si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, alors un objet supplémentaire sera créé lors de l'exécution du programme.Et seulement après cela, la condition de fin de la boucle while sera déclenchée et le contrôle sera transmis aux blocs 8-9".
P.S. Afin de ne pas encombrer le forum, merci d'avance pour votre réponse.
Les gens ! !! S'il vous plaît, donnez-moi la fonction pour ouvrir la barre des heures (j'ai besoin de déterminer l'Open de la bougie précédente) et si (TimeMinute(TimeCurrent())==m && TimeSeconds(TimeCurrent())==n) pour une raison quelconque ne fonctionne pas en mettant m=1 n=1 je vous en prie, qui s'en soucie....
stater: Les gens ! !! S'il vous plaît, donnez-moi la fonction pour ouvrir la barre des heures (j'ai besoin de déterminer l'Open de la bougie précédente) et si (TimeMinute(TimeCurrent())==m && TimeSeconds(TimeCurrent())==n) pour une raison quelconque, cela ne fonctionne pas en mettant m=1 n=1 mais je vous en prie, qui s'en soucie....
Bonjour.
Pouvez-vous me dire quelles modifications doivent être apportées au code. Je veux que l'histogramme n'affiche que les valeurs des barres baissières.
L'indicateur lui-même https://www.mql5.com/ru/code/8920
Bon après-midi. Question sur un pointeur de fichier... Dans le livre MQL4, que vous trouverez à l'adresse MQL4.community, dans la section "Standard Functions", il y a un exemple du script "File Operations", qui est destiné à lire les données d'un fichier et à afficher des objets graphiques dans une fenêtre de symboles :
Ci-dessous, lors de l'analyse de ce script dans le livre sur MQL4, la phrase suivante est donnée : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. Et seulement après cela, la condition de fin de la boucle while se déclenchera et le contrôle sera transmis aux blocs 8-9".
Est-ce que je comprends bien ? Un pointeur de fichier n'est PAS INDIQUÉ PAR DES SIGNES DE TEXTE (par exemple : texte| où | est un pointeur de fichier), mais est un pointeur AVEC EXPRESSION, par exemple : texte où k est le caractère "à", le k-ième est mis en évidence par un pointeur de fichier. Cela explique la nécessité des cordes (voir p.164) :
En effet. À l'avant-dernière itération, après avoir créé le DERNIER objet
2007.05.11 18:30;JPY
le pointeur de fichier est à la position du dernier objet, c'est-à-dire que
2007.05.11 18:30;JPYFabrication industrielle
(où o est le caractère "o", k est l'index du fichier). Ensuite, lors du passage du contrôle à l'en-tête de l'instruction while, la fonction FileIsEnding(handle) renverra évidemment true, car le pointeur de fichier ne se trouve PAS à la fin du fichier, mais au DERNIER caractère de ce fichier. Ensuite, lorsque les deux premières lignes sont exécutées, le pointeur de fichier se déplace vers un espace vide et s'il n'y a pas de lignes
le script créera un graphique (c'est-à-dire une ligne) avec une description vide et une coordonnée temporelle qui correspond à 0. C'est ce que signifie la phrase : "si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, un objet supplémentaire sera créé au moment de l'exécution. "
Question: est-ce que je comprends bien :
a ) la définition d'un pointeur de fichier ;
b) la signification de la phrase "Si le contrôle spécifié (les 2 dernières lignes du bloc 5-6) est supprimé, alors un objet supplémentaire sera créé lors de l'exécution du programme.Et seulement après cela, la condition de fin de la boucle while sera déclenchée et le contrôle sera transmis aux blocs 8-9".
P.S. Afin de ne pas encombrer le forum, merci d'avance pour votre réponse.
Les gens ! !! S'il vous plaît, donnez-moi la fonction pour ouvrir la barre des heures (j'ai besoin de déterminer l'Open de la bougie précédente) et si (TimeMinute(TimeCurrent())==m && TimeSeconds(TimeCurrent())==n) pour une raison quelconque, cela ne fonctionne pas en mettant m=1 n=1 mais je vous en prie, qui s'en soucie....
https://docs.mql4.com/ru/series
Merci pour la réponse, mais je ne comprends pas quelle fonction est utilisée pour savoir si une bougie horaire s'est ouverte.....
iTime
iTime
EA ne cesse d'afficher l'erreur 0. Comment vérifier ce qui en est la cause, comment trouver cet endroit ?
L'erreur 0 signifie qu'il n'y a pas d'erreur.
Arrêtez de faire du Print (alerte) =)
comment raccourcir l'écriture d'une formule si une équation est répétée plusieurs fois ?