//--- покажем окно входных параметров при запуске скрипта #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!"); }
图表上是否有任何指标/顾问?
没有专家顾问,只有终端的标准指标
即:你打开图表,画了一条水平线,关闭终端,打开终端,图表(为画线而打开)在原位,但线本身却不见了?
它是。
它是神秘的,它不应该是...
你好,请你告诉我,我如何通过程序化的方式来检查某个自定义指标 的名称在MQL4/Indicators文件夹中是否存在或不存在?
我需要它来检查iCustom函数是否已经找到并与一个指标一起工作。
检查这个名字的指标是否存在(我不知道怎么做)。
if( !=Indicatorname)//Well,或另一个 "信号 "表明没有这个名称的指标,如-1,false ...
{我在这里写点东西 :)}
否则 //从指标中接收数值
{
iCustom(....Indicatorname....)
}
我怀疑这个主题位于 "无约束的文件操作 "的平面(我可能是错的),但我从来没有遇到过 "这个主题 "中通常使用的系统库...
总之,需要一些建议......,也许已经有现成的东西,或者至少--在哪里 "挖"。
谢谢
你好,请你告诉我,我如何通过程序化的方式来检查某个自定义指标 的名称在MQL4/Indicators文件夹中是否存在或不存在?
我需要它来检查iCustom函数是否已经找到并与一个指标一起工作。
检查这个名字的指标是否存在(我不知道怎么做)。
if( !=Indicatorname)//Well,或另一个 "信号 "表明没有这个名称的指标,如-1,false ...
{我在这里写点东西 :)}
否则 //从指标中接收数值
{
iCustom(....Indicatorname....)
}
我怀疑这个主题位于 "无约束的文件操作 "的平面(我可能是错的),但我从来没有遇到过系统库,这通常在 "这个主题 "中使用...
总之,需要一些建议......,也许已经有现成的东西,或者至少--在哪里 "挖"。
谢谢
你最好把指标作为一种资源连接起来,那么你就不需要去寻找它,它将永远存在。
文件操作可能对你有帮助,这里是文件搜索文档中的一个例子
#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]);
}
}
....
那么文件操作可能对你有帮助,这里是文件搜索文档中的一个例子
}
....
如果不工作,你不能进入指标文件夹,如果不工作,尝试通过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!");
}
...