Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 128
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Gibt es irgendwelche Indikatoren/Ratgeber auf den Charts?
Keine Expert Advisors, nur Standardindikatoren aus dem Terminal
D.h. Sie öffnen das Diagramm, zeichnen eine horizontale Linie, schließen das Terminal, öffnen das Terminal, das Diagramm (geöffnet zum Zeichnen der Linie) ist da, aber die Linie selbst ist weg?
Das ist es.
Es ist mystisch, das sollte es nicht sein...
Hallo, könnten Sie mir bitte sagen, wie ich programmatisch überprüfen kann, ob ein bestimmter benutzerdefinierter Indikator im Ordner MQL4\Indicators anhand seines Namens existiert oder nicht existiert?
Ich muss prüfen, ob die iCustom-Funktion einen Indikator gefunden hat und mit ihm arbeitet.
Prüfen Sie, ob der Indikator mit diesem Namen existiert (ich weiß nicht, wie)
if( !=Indikatorname)//Nun, oder ein anderes "Signal", dass es keinen Indikator mit diesem Namen gibt, wie -1, false ...
{hier schreibe ich etwas :)}
sonst //Wert vom Indikator empfangen
{
iCustom(....Indicatorname....)
}
Ich vermute, dass das Thema im Bereich "Datei-Operationen ohne Einschränkungen" liegt (ich könnte mich irren), aber ich bin noch nie auf die Systembibliotheken gestoßen, die normalerweise in "diesem Thema" verwendet werden...
Wie auch immer, brauchen einige Ratschläge ..., vielleicht gibt es etwas fertige bereits, oder zumindest - wo zu "graben"
Danke
Hallo, könnten Sie mir bitte sagen, wie ich programmatisch überprüfen kann, ob ein bestimmter benutzerdefinierter Indikator im Ordner MQL4\Indicators anhand seines Namens existiert oder nicht existiert?
Ich muss prüfen, ob die iCustom-Funktion einen Indikator gefunden hat und mit ihm arbeitet.
Prüfen Sie, ob der Indikator mit diesem Namen existiert (ich weiß nicht, wie)
if( !=Indikatorname)//Nun, oder ein anderes "Signal", dass es keinen Indikator mit diesem Namen gibt, wie -1, false ...
{hier schreibe ich etwas :)}
sonst //Wert vom Indikator empfangen
{
iCustom(....Indicatorname....)
}
Ich vermute, dass das Thema im Bereich "Datei-Operationen ohne Einschränkungen" liegt (ich könnte mich irren), aber ich bin noch nie auf die Systembibliotheken gestoßen, die normalerweise in "diesem Thema" verwendet werden...
Wie auch immer, brauchen einige Ratschläge ..., vielleicht gibt es etwas fertige bereits, oder zumindest - wo zu "graben"
Danke
Sie sollten den Indikator besser als Ressource einbinden, dann brauchen Sie nicht danach zu suchen, er ist immer da.
Datei-Operationen helfen Ihnen vielleicht weiter, hier ein Beispiel aus der Dokumentation zur Dateisuche
#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]);
}
}
....
dann könnten Datei-Operationen Ihnen helfen, hier ein Beispiel aus der Dokumentation zur Dateisuche
#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]);
}
}
....
dann könnten Datei-Operationen Ihnen helfen, hier ein Beispiel aus der Dokumentation zur Dateisuche
}
....
Wenn das nicht funktioniert, können Sie nicht auf den Indikatorenordner zugreifen. Versuchen Sie, ihn über die Win-Api zu öffnen, wenn das nicht funktioniert.
#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!");
}
...