Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 128
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Hay indicadores/asesores en los gráficos?
No hay Asesores Expertos, sólo indicadores estándar del terminal
Es decir, abres el gráfico, dibujas una línea horizontal, cierras el terminal, abres el terminal, el gráfico (abierto para dibujar la línea) está en su sitio, pero la propia línea ha desaparecido?
Lo es.
Es místico, no debería serlo...
Hola, ¿podríais decirme cómo puedo comprobar mediante programación si un determinado indicador personalizado existe o no existe en la carpeta MQL4\Indicators por su nombre?
Lo necesito para comprobar si la función iCustom ha encontrado y funciona con un indicador.
Comprueba si el indicador con este nombre existe (no sé cómo)
if( !=Indicatorname)//Bueno, u otra "señal" de que no hay ningún indicador con este nombre, como -1, false ...
{aquí escribo algo :)}
else //recibir el valor del indicador
{
iCustom(....Indicatorname....)
}
Sospecho que el tema se sitúa en el plano de las "Operaciones de archivos sin restricciones" ( podría equivocarme), pero nunca me he encontrado con las librerías del sistema que se suelen utilizar en "este tema"...
De todos modos, necesito algún consejo..., tal vez hay algo ya hecho, o al menos - donde "cavar"
Gracias
Hola, ¿podríais decirme cómo puedo comprobar mediante programación si un determinado indicador personalizado existe o no existe en la carpeta MQL4\Indicators por su nombre?
Lo necesito para comprobar si la función iCustom ha encontrado y funciona con un indicador.
Comprueba si el indicador con este nombre existe (no sé cómo)
if( !=Indicatorname)//Bueno, u otra "señal" de que no hay ningún indicador con este nombre, como -1, false ...
{aquí escribo algo :)}
else //recibir el valor del indicador
{
iCustom(....Indicatorname....)
}
Sospecho que el tema se sitúa en el plano de las "Operaciones de archivos sin restricciones" ( podría equivocarme), pero nunca me he encontrado con las bibliotecas del sistema, que se suelen utilizar en "este tema"...
De todos modos, necesito algún consejo..., tal vez hay algo ya hecho, o al menos - donde "cavar"
Gracias
es mejor que conectes el indicador como un recurso, entonces no necesitarás buscarlo, siempre estará ahí
Las operaciones con archivos pueden ayudarle, aquí hay un ejemplo de la documentación de búsqueda de archivos
#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]);
}
}
....
entonces las operaciones de archivo podrían ayudarte, aquí hay un ejemplo de la documentación de búsqueda de archivos
#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]);
}
}
....
entonces las operaciones de archivo podrían ayudarte, aquí hay un ejemplo de la documentación de búsqueda de archivos
}
....
Si no funciona, no puedes entrar en la carpeta de indicadores, intenta abrirla a través de win api si no funciona
#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!");
}
...