Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 128
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
Y a-t-il des indicateurs/conseillers sur les graphiques ?
Pas de conseillers experts, uniquement des indicateurs standard du terminal.
Par exemple, vous ouvrez le graphique, tracez une ligne horizontale, fermez le terminal, ouvrez le terminal, le graphique (ouvert pour tracer la ligne) est en place, mais la ligne elle-même a disparu ?
Elle l'est.
C'est mystique, ça ne devrait pas l'être...
Bonjour, pourriez-vous me dire comment je peux vérifier par programme si un certain indicateur personnalisé existe ou non dans le dossier MQL4\Indicators par son nom ?
J'en ai besoin pour vérifier si la fonction iCustom a trouvé et fonctionne avec un indicateur.
Vérifier si l'indicateur avec ce nom existe (je ne sais pas comment)
if( !=Indicatorname)//Bien, ou un autre "signal" qu'il n'y a pas d'indicateur avec ce nom, comme -1, false ...
{ici j'écris quelque chose :)}
else //recevoir la valeur de l'indicateur
{
iCustom(....Indicatorname....)
}
Je soupçonne que le sujet se situe dans le plan des "Opérations sur les fichiers sans contraintes" ( je peux me tromper), mais je n'ai jamais rencontré les bibliothèques système qui sont habituellement utilisées dans "ce sujet"....
Quoi qu'il en soit, j'ai besoin de conseils..., peut-être y a-t-il quelque chose de déjà prêt, ou du moins - où "creuser"...
Merci
Bonjour, pourriez-vous me dire comment je peux vérifier par programme si un certain indicateur personnalisé existe ou non dans le dossier MQL4\Indicators par son nom ?
J'en ai besoin pour vérifier si la fonction iCustom a trouvé et fonctionne avec un indicateur.
Vérifier si l'indicateur avec ce nom existe (je ne sais pas comment)
if( !=Indicatorname)//Bien, ou un autre "signal" qu'il n'y a pas d'indicateur avec ce nom, comme -1, false ...
{ici j'écris quelque chose :)}
else //recevoir la valeur de l'indicateur
{
iCustom(....Indicatorname....)
}
Je soupçonne que le sujet se situe dans le plan des "Opérations sur les fichiers sans contraintes" ( je peux me tromper), mais je n'ai jamais rencontré les bibliothèques système, qui sont habituellement utilisées dans "ce sujet"....
Quoi qu'il en soit, j'ai besoin de conseils..., peut-être y a-t-il quelque chose de déjà prêt, ou du moins - où "creuser"...
Merci
vous feriez mieux de connecter l'indicateur comme une ressource, alors vous n'aurez pas besoin de le chercher, il sera toujours là
Les opérations sur les fichiers pourraient vous aider, voici un exemple tiré de la documentation sur la recherche de fichiers
#property script_show_inputs
//--- дата для старых файлов
input datetime InpFilesDate=D'2013.01.01 00:00';
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string file_name; // переменная для хранения имен файлов
string filter="*.txt"; // фильтр для поиска файлов
datetime create_date; // дата создания файла
string files[]; // список имен файлов
int def_size=25; // размер массива по умолчанию
int size=0; // количество файлов
//--- выдели память для массива
ArrayResize(files,def_size);
//--- получение хэндла поиска в корне локальной папки
long search_handle=FileFindFirst(filter,file_name);
//--- проверим, успешно ли отработала функция FileFindFirst()
if(search_handle!=INVALID_HANDLE)
{
//--- в цикле перебираем файлы
do
{
files[size]=file_name;
//--- увеличим размер массива
size++;
if(size==def_size)
{
def_size+=25;
ArrayResize(files,def_size);
}
//--- сбрасываем значение ошибки
ResetLastError();
//--- получим дату создания файла
create_date=(datetime)FileGetInteger(file_name,FILE_CREATE_DATE,false);
//--- проверим, старый ли файл
if(create_date<InpFilesDate)
{
PrintFormat("Файл %s удален!",file_name);
//--- удаляем старый файл
FileDelete(file_name);
}
}
while(FileFindNext(search_handle,file_name));
//--- закрываем хэндл поиска
FileFindClose(search_handle);
}
else
{
Print("Files not found!");
return;
}
//--- проверим какие из файлов остались
PrintFormat("Результаты:");
for(int i=0;i<size;i++)
{
if(FileIsExist(files[i]))
PrintFormat("Файл %s существует!",files[i]);
else
PrintFormat("Файл %s удален!",files[i]);
}
}
....
alors les opérations sur les fichiers pourraient vous aider, voici un exemple tiré de la documentation sur la recherche de fichiers
#property script_show_inputs
//--- дата для старых файлов
input datetime InpFilesDate=D'2013.01.01 00:00';
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string file_name; // переменная для хранения имен файлов
string filter="*.txt"; // фильтр для поиска файлов
datetime create_date; // дата создания файла
string files[]; // список имен файлов
int def_size=25; // размер массива по умолчанию
int size=0; // количество файлов
//--- выдели память для массива
ArrayResize(files,def_size);
//--- получение хэндла поиска в корне локальной папки
long search_handle=FileFindFirst(filter,file_name);
//--- проверим, успешно ли отработала функция FileFindFirst()
if(search_handle!=INVALID_HANDLE)
{
//--- в цикле перебираем файлы
do
{
files[size]=file_name;
//--- увеличим размер массива
size++;
if(size==def_size)
{
def_size+=25;
ArrayResize(files,def_size);
}
//--- сбрасываем значение ошибки
ResetLastError();
//--- получим дату создания файла
create_date=(datetime)FileGetInteger(file_name,FILE_CREATE_DATE,false);
//--- проверим, старый ли файл
if(create_date<InpFilesDate)
{
PrintFormat("Файл %s удален!",file_name);
//--- удаляем старый файл
FileDelete(file_name);
}
}
while(FileFindNext(search_handle,file_name));
//--- закрываем хэндл поиска
FileFindClose(search_handle);
}
else
{
Print("Files not found!");
return;
}
//--- проверим какие из файлов остались
PrintFormat("Результаты:");
for(int i=0;i<size;i++)
{
if(FileIsExist(files[i]))
PrintFormat("Файл %s существует!",files[i]);
else
PrintFormat("Файл %s удален!",files[i]);
}
}
....
alors les opérations sur les fichiers pourraient vous aider, voici un exemple tiré de la documentation sur la recherche de fichiers
}
....
Si cela ne fonctionne pas, vous ne pouvez pas accéder au dossier des indicateurs, essayez de l'ouvrir via win api si cela ne fonctionne pas.
#property script_show_inputs
//--- фильтр
input string InpFilter="Dir1\\*";
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string file_name;
string int_dir="";
int i=1,pos=0,last_pos=-1;
//--- ищем последний бэк-слеш
while(!IsStopped())
{
pos=StringFind(InpFilter,"\\",pos+1);
if(pos>=0)
last_pos=pos;
else
break;
}
//--- в фильтре присутствует имя папки
if(last_pos>=0)
int_dir=StringSubstr(InpFilter,0,last_pos+1);
//--- получение хэндла поиска в корне локальной папки
long search_handle=FileFindFirst(InpFilter,file_name);
//--- проверим, успешно ли отработала функция FileFindFirst()
if(search_handle!=INVALID_HANDLE)
{
//--- в цикле проверим являются ли переданные строки именами файлов или директорий
do
{
ResetLastError();
//--- если это файл, то функция вернет true, а если директория, то функция генерирует ошибку ERR_FILE_IS_DIRECTORY
FileIsExist(int_dir+file_name);
PrintFormat("%d : %s name = %s",i,GetLastError()==ERR_FILE_IS_DIRECTORY ? "Directory" : "File",file_name);
i++;
}
while(FileFindNext(search_handle,file_name));
//--- закрываем хэндл поиска
FileFindClose(search_handle);
}
else
Print("Files not found!");
}
...