//--- покажем окно входных параметров при запуске скрипта #property script_show_inputs //--- дата для старых файлов inputdatetime InpFilesDate=D'2013.01.01 00:00'; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart() { 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]); } }
//--- покажем окно входных параметров при запуске скрипта #property script_show_inputs //--- дата для старых файлов inputdatetime InpFilesDate=D'2013.01.01 00:00'; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart() { 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]); } }
//--- покажем окно входных параметров при запуске скрипта #property script_show_inputs //--- фильтр inputstring InpFilter="Dir1\\*"; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart() { 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!"); }
チャートにインジケーターやアドバイザーを表示することはできますか?
Expert Advisorはなく、ターミナルからの標準的なインジケータのみ
すなわち、チャートを開き、水平線を 引き、ターミナルを閉じ、ターミナルを開くと、チャート(線を引くために開いた)はあるが、線そのものが消えているのでは?
そうなんです。
神秘的で、あってはならないことだが......。
こんにちは、MQL4Indicatorsフォルダーにあるカスタムインジケータが 存在するかしないかを、その名前でプログラム的に確認する方法を教えていただけないでしょうか。
iCustom関数がインジケータを発見して動作しているかどうかをチェックする必要があります。
この名前のインジケータが存在するか確認する(方法がわからない)
if( !=Indicatorname)//Well, or another "signal" that is no indicator with this name, like -1, false ....
{ここに何か書く :)
else //インジケータから値を受け取る
{
iCustom(...インジケータ名...)
}
この話題は「制約のないファイル操作」という平面にあるのではないかと思うのですが(間違っているかも)、「この話題」で普通に使われているシステムライブラリには出会ったことがありません...。
とにかく、何かアドバイスが欲しいのですが、もしかしたら、すでに出来上がったものがあるかもしれませんし、少なくとも、どこを "掘れば "いいのかもわかりません。
感謝
こんにちは、MQL4Indicatorsフォルダーにあるカスタムインジケータが 存在するかしないかを、その名前でプログラム的に確認する方法を教えていただけないでしょうか。
iCustom関数がインジケータを発見して動作しているかどうかをチェックする必要があります。
この名前のインジケータが存在するか確認する(方法がわからない)
if( !=Indicatorname)//Well, or another "signal" that is no indicator with this name, like -1, false ....
{ここに何か書く :)
else //インジケータから値を受け取る
{
iCustom(...インジケータ名...)
}
このトピックは「制約のないファイル操作」の平面にあるのではないかと思うのですが(間違っているかも)、「このトピック」で通常使われるシステムライブラリに出会ったことがありません...。
とにかく、何かアドバイスが欲しいのですが、もしかしたら、すでに出来上がったものがあるかもしれませんし、少なくとも、どこを "掘れば "いいのかもわかりません。
感謝
インジケータをリソースとして接続すれば、探す必要がなく、常にそこにあります。
ファイル操作に役立つかもしれません。以下は、ファイル検索ドキュメントからの例です。
#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]);
}
}
....
の場合、ファイル操作が役に立つかもしれません。以下は、ファイル検索ドキュメントの例です。
#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]);
}
}
....
の場合、ファイル操作が役に立つかもしれません。以下は、ファイル検索ドキュメントの例です。
}
....
うまくいかない場合は、indicatorsフォルダに入れないので、うまくいかない場合はwin apiで開いてみてください
#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!");
}
...