Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 128
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Há algum indicador/conselheiro nos gráficos?
Sem conselheiros especializados, apenas indicadores padrão do terminal
Ou seja, você abre a carta, desenha uma linha horizontal, fecha o terminal, abre o terminal, a carta (aberta para desenhar a linha) está no lugar, mas a linha em si desapareceu?
E é.
É místico, não deveria ser...
Olá, você poderia me dizer como posso verificar programmaticamente se um certo indicador personalizado existe ou não na pasta MQL4\Indicators por seu nome?
Preciso dele para verificar se a função iCustom encontrou e funciona com um indicador.
Verifique se o indicador com este nome existe (não sei como)
if( !=Indicatorname)/Well, ou outro "sinal" de que não há nenhum indicador com este nome, como -1, falso ...
{aonde eu escrevo algo :)}
senão //receber valor do indicador
{
iCustom(....Indicatorname....)
}
Suspeito que o tópico está no plano das "Operações de arquivo sem restrições" ( poderia estar errado), mas nunca encontrei as bibliotecas do sistema, que geralmente são usadas neste "tópico"...
De qualquer forma, preciso de alguns conselhos..., talvez já exista algo pronto, ou pelo menos - onde "cavar".
Obrigado
Olá, você poderia me dizer como posso verificar programmaticamente se um certo indicador personalizado existe ou não na pasta MQL4\Indicators por seu nome?
Preciso dele para verificar se a função iCustom encontrou e funciona com um indicador.
Verifique se o indicador com este nome existe (não sei como)
if( !=Indicatorname)/Well, ou outro "sinal" de que não há nenhum indicador com este nome, como -1, falso ...
{aonde eu escrevo algo :)}
senão //receber valor do indicador
{
iCustom(....Indicatorname....)
}
Suspeito que o tópico está no plano das "Operações de arquivo sem restrições" ( poderia estar errado), mas nunca encontrei as bibliotecas do sistema, que geralmente são usadas neste "tópico"...
De qualquer forma, preciso de alguns conselhos..., talvez já exista algo pronto, ou pelo menos - onde "cavar".
Obrigado
é melhor conectar o indicador como um recurso, então você não precisará procurá-lo, ele sempre estará lá
operações de arquivos podem ajudá-lo, aqui está um exemplo da documentação de busca de arquivos
#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]);
}
}
....
então as operações de arquivo podem ajudá-lo, aqui está um exemplo da documentação da pesquisa de arquivo
#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]);
}
}
....
então as operações de arquivo podem ajudá-lo, aqui está um exemplo da documentação da pesquisa de arquivo
}
....
Se não funcionar, você não pode entrar na pasta de indicadores, tente abri-la via win api se ela não funcionar
#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!");
}
...