Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 128
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ci sono indicatori/consigli sui grafici?
Nessun Expert Advisors, solo indicatori standard dal terminale
Cioè si apre il grafico, si disegna una linea orizzontale, si chiude il terminale, si apre il terminale, il grafico (aperto per disegnare la linea) è a posto, ma la linea stessa è sparita?
Lo è.
È mistico, non dovrebbe esserlo...
Ciao, potresti dirmi come posso controllare programmaticamente se un certo indicatore personalizzato esiste o non esiste nella cartella MQL4\Indicators in base al suo nome?
Mi serve per controllare se la funzione iCustom ha trovato e funziona con un indicatore.
Controllare se l'indicatore con questo nome esiste (non so come)
if( !=Indicatorname)//Bene, o un altro "segnale" che non esiste un indicatore con questo nome, come -1, false ...
{qui scrivo qualcosa :)}
else //ricevere il valore dall'indicatore
{
iCustom(....Indicatorname....)
}
Ho il sospetto che l'argomento si trovi nel piano delle "Operazioni sui file senza vincoli" (potrei sbagliarmi), ma non ho mai incontrato le librerie di sistema che si usano di solito in "questo argomento"...
Comunque, ho bisogno di qualche consiglio..., forse c'è già qualcosa di pronto, o almeno - dove "scavare"
Grazie
Ciao, potresti dirmi come posso controllare programmaticamente se un certo indicatore personalizzato esiste o non esiste nella cartella MQL4\Indicators in base al suo nome?
Mi serve per controllare se la funzione iCustom ha trovato e funziona con un indicatore.
Controllare se l'indicatore con questo nome esiste (non so come)
if( !=Indicatorname)//Bene, o un altro "segnale" che non esiste un indicatore con questo nome, come -1, false ...
{qui scrivo qualcosa :)}
else //ricevere il valore dall'indicatore
{
iCustom(....Indicatorname....)
}
Ho il sospetto che l'argomento si trovi nel piano delle "Operazioni sui file senza vincoli" (potrei sbagliarmi), ma non ho mai incontrato le librerie di sistema, che di solito sono utilizzate in "questo argomento"...
Comunque, ho bisogno di qualche consiglio..., forse c'è già qualcosa di pronto, o almeno - dove "scavare"
Grazie
è meglio collegare l'indicatore come risorsa, allora non avrete bisogno di cercarlo, sarà sempre lì
le operazioni sui file potrebbero aiutarvi, ecco un esempio dalla documentazione sulla ricerca dei file
#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]);
}
}
....
allora le operazioni sui file potrebbero aiutarti, ecco un esempio dalla documentazione sulla ricerca dei file
#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]);
}
}
....
allora le operazioni sui file potrebbero aiutarti, ecco un esempio dalla documentazione sulla ricerca dei file
}
....
Se non funziona, non puoi entrare nella cartella degli indicatori, prova ad aprirla tramite win api se non funziona
#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!");
}
...