Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Потерли ветку. Господа, будьте любезны, вышлите этот скриптик мне на deepspace-(dog)mail.ru
или положите в этой ветке. Спасибо.
Вот в эту строку нужно внести все инструменты, которыми Вы пользуетесь:
string list[]={"EURUSD","USDJPY"};
Я просто только на EURUSD играю, а USDJPY - просто так возможно для будущих применений.
#property copyright "mandorr@gmail.com" #include <WinUser32.mqh> void start() { if (MessageBox("Закачать все котировки? ","Скрипт",MB_YESNO|MB_ICONQUESTION)!=IDYES) return; double x; string list[]={"EURUSD","USDJPY"}; for (int i=0; i<ArraySize(list); i++) { Print("Закачивание котировок инструмента "+list[i]); x=iClose(list[i],PERIOD_M1 ,0); x=iClose(list[i],PERIOD_M5 ,0); x=iClose(list[i],PERIOD_M15 ,0); x=iClose(list[i],PERIOD_M30,0); x=iClose(list[i],PERIOD_H1 ,0); x=iClose(list[i],PERIOD_H4 ,0); x=iClose(list[i],PERIOD_D1 ,0); x=iClose(list[i],PERIOD_W1 ,0); } }Также наверное этот код (разумеется без окошка с вопросом - оно здесь лишнее) можно внести в функцию init() советника. Я так и сделаю пожалуй. Время от времени имею обычай перезагружать терминал с советником. И это сэкономит лишнюю операцию на запуск скрипта закачки вручную.
Также наверное этот код (разумеется без окошка с вопросом - оно здесь лишнее) можно внести в функцию init() советника. Я так и сделаю пожалуй. Время от времени имею обычай перезагружать терминал с советником. И это сэкономит лишнюю операцию на запуск скрипта закачки вручную.
Благодарю, solandr.
Поэкспериментировал с внесением кода закачки в функцию init() советника.
На одном компе, который P4 2,4ГГц он работает прекрасно, а на другом где проц VIA 800МГц при большом количестве баров истории (М1 >0,5млн) почему-то происходит мёртвое зависание терминала на стадии инициализации эксперта (билд 191, пока что 192 билд брокер не предоставляет для обновления). Поскольку объяснить такое странное поведение я не смог, то просто перенёс данный код в функцию start(), ограничив при этом частоту скачек котировок например периодичностью раз в час (хотя очевидно, что достаточно это делать гораздо реже - но это уже дело вкуса). Вот пример кода, который я поместил в функцию start():
if(min==55 && zakachka) { zakachka=false; //Закачка котировок double x; string list[]={"EURUSD","USDJPY"}; for (i=0; i<ArraySize(list); i++) { Print("Закачивание котировок инструмента "+list[i]); x=iClose(list[i],PERIOD_M1 ,0); x=iClose(list[i],PERIOD_M5 ,0); x=iClose(list[i],PERIOD_M15 ,0); x=iClose(list[i],PERIOD_M30,0); x=iClose(list[i],PERIOD_H1 ,0); x=iClose(list[i],PERIOD_H4 ,0); x=iClose(list[i],PERIOD_D1 ,0); x=iClose(list[i],PERIOD_W1 ,0); }//Конец закачки котировок } if(min!=55) zakachka=true;В глобальные переменные нужно внести bool zakachka=true;
Код нормально уже на протяжении дня работает и на слабенькой машинке тоже.
... то просто перенёс данный код в функцию start(), ограничив при этом частоту скачек котировок например периодичностью раз в час (хотя очевидно, что достаточно это делать гораздо реже - но это уже дело вкуса). Вот пример кода, который я поместил в функцию start():
Я сразу поместил код в start(), добавил ограничение - подкачка происходит только в среду и в субботу.
Заметил особенность - если интернет или связь с сервером на момент запуска скрипта отсутствует, то скрипт отрабатывает,но ошибку не выдает(хотя я поставил проверку) - iClose просто возвращает значение последнего, закачанного ранее бара. Наверное, нужно поставить какую-то проверку на наличие соединения с сервером.
Посмотрите пример, представленный в словаре MetaEditor в описании функции ArrayCopySeries. Идея заключается в контроле даты нулевого бара подкачиваемых данных.