//-------------Del_file---------------------- #import "kernel32.dll" bool DeleteFileA(string lpFileName); // path\file name #import int start() { string fName = StringConcatenate(WindowExpertName(), "\\filename.csv" ); int hh=FileOpen(fName,FILE_CSV|FILE_WRITE); // файл будет создан в папке \experts\files\Del_file [имя скрипта из которого вызывается функция]\filename.csv FileClose(hh); Sleep(60000);// пауза, что бы успели посмотреть что файл создан и потом удален // DeleteFileA("C:\MIG_MT4\experts\files\Del_file\filename.csv"); // удалять надо конкретно указывая полный путь или так или см. ниже string fName_del=StringConcatenate("C:\MIG_MT4\experts\files\\",WindowExpertName(), "\\filename.csv" ); DeleteFileA(fName_del); return(0); } //+------------------------------------------------------------------+
Если эксперты работают в одном и том же клиентском терминале, то для их взаимодействия можно использовать глобальные переменные
Возможно я не точно обозначил задачу. Мне нужно не удалить файл ex4, а прекратить выполнение эксперта путем например удаления его с графика или любым из способов, описанных в
UninitializeReason()
Вот конкретный пример скрипта создающего файл в папке и затем удаляющий его (через 1 минуту). Вставте подобный код в эксперта и при заданном условии он сотрет сам себя.
Стереть то сотрёт, но работать не перестанет, так как он загружен в память.
Если необходимо отключить только в данном сеансе работы терминала, то проще всего с помощью глобальной переменной:
bool Finish=False; start( if(Finish)return; ....... if( /* Условие отключения эксперта*/ ) {Finish=true; Print(" Эксперт N отключен");return;} .....Тогда эксперт на каждом тике будет сразу же прекращать работу.
Спасибо но это не то. Надо чтобы ему на этом самом тике некуда было входить
Спасибо но это не то. Надо чтобы ему на этом самом тике некуда было входить
#include <WinUser32.mqh> extern int exit; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int win_handle=WindowHandle(Symbol(),Period()); if(win_handle!=0) if(Minute() > exit) PostMessageA(win_handle,WM_CLOSE,0,0); return(0); } //+------------------------------------------------------------------+Эксперт будет удалён вместе с графиком.
Спасибо но это не то. Надо чтобы ему на этом самом тике некуда было входить
#include <WinUser32.mqh> extern int exit; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int win_handle=WindowHandle(Symbol(),Period()); if(win_handle!=0) if(Minute() > exit) PostMessageA(win_handle,WM_CLOSE,0,0); return(0); } //+------------------------------------------------------------------+Эксперт будет удалён вместе с графиком.
WindowHandle(Symbol(),Period())дескриптор именно того окна к которому прикреплен эксперт. В моем случае открыты несколько окон с одинаковыми Symbol(), Period(). Ко всем ним прикрепленны эксперты с одинаковыми именнами
но с разными Magic numbers & input parameters
WindowHandle(Symbol(),Period())дескриптор именно того окна к которому прикреплен эксперт. В моем случае открыты несколько окон с одинаковыми Symbol(), Period(). Ко всем ним прикрепленны эксперты с одинаковыми именнами
но с разными Magic numbers & input parameters
Вопрос к профессионалам, я же любитель и не знаю Виндовских функций. Во всяком случае, в приведённом примере закрытия по времени, два одинаковых эксперта, прикреплённых к графикам одного инструмента и периода, закрывали именно своё окно и удаляли себя.
Кто-бы пояснил ещё, что означают два последних параметра в функции PostMessageA ?
Есть система, состоящая из нескольких экспертов, работающих
с одним инструментом. Могут ли они удалить/деиницилизировать
сами себя после отработки неких условий.
Вариант
extern int ticks_cnt=10; int start() { if(!ticks_cnt) return(); ticks_cnt--; Print("TicksCnt=",ticks_cnt); .... return(0); }не подходит. Есть другие идеи ?
Спасибо
т е разные эксперты
друг другу подают сигналы о дективации - активации ?
типа: я отработал - вышел - твоя очередь
СМЫСЛ ЗАДАЧИ в том что бы торговать разными стратегиями на одной паре ?
мне кажется вполне можно организовать подобный "разговор" между экспертами через глобальные переменные
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть система, состоящая из нескольких экспертов, работающих с одним инструментом. Могут ли они удалить/деиницилизировать сами себя после отработки неких условий.
не подходит. Есть другие идеи ?Вариант
Спасибо