khorosh: Извините, я перепутал, - там нужно ставить 1, тогда будет правильно. В смысле цена Close/Close на графике будет соответствовать цене в функции.
Ну, наконец-то! Про это здесь почитайте. Только в старте эксперта и скрипта работают функции с ожиданием. Во всех остальных местах это жёстко пресекается.
Ваш код не подходит под стандарты языка MQL4. Ещё, где-то было написано, что ожидание в функциях инит и деинит при системном вызове ограничено 2,5 секундами. Затем, функция принудительно завершается.
Всё работает. Вот код мини-системы реального времени. Вне функции start(). Хотя конечно абсолютно не принципиально размещать ее в init().
Ниже представлен код, проверено на рабочем терминале, ордер открывает, все Алерты пишутся в окне сообщений. Функция Sleep() то-же
прекрасно работает, проверял до 30 сек. ожидания - Sleep(30000). Хотя такое ожидание совершенно ни к чему, достаточно и 50-ти мс.
//--- input parametersexternint int10 = 10; // вызов процедуры каждые 10 сек.externint int30 = 30; // вызов процедуры каждые 30 сек.externint int60 = 60; // вызов процедуры каждые 60 сек. int orders; // кол-во открытых ордеровint init()
{
bool end = 1; // для завершения работы установить в falsebool f_int10 = 1; // флаг разрешающий прерывание int10bool f_int30 = 1; // флаг разрешающий прерывание int30bool f_int60 = 1; // флаг разрешающий прерывание int60int St_Time_10; // стартовое время отсчета 10 сек;int St_Time_30; // стартовое время отсчета 30 сек;int St_Time_60; // стартовое время отсчета 60 сек;
St_Time_10 = TimeLocal();
St_Time_30 = TimeLocal();
St_Time_60 = TimeLocal();
//-----------------------------основной цикл программы--------------------------------while(end)
{
Sleep (50);
if ((TimeLocal()==(St_Time_10 + int10))&&f_int10) {St_Time_10 = TimeLocal(); Call_int10();}
if ((TimeLocal()==(St_Time_30 + int30))&&f_int30) {St_Time_30 = TimeLocal(); Call_int30();}
if ((TimeLocal()==(St_Time_60 + int60))&&f_int60) {St_Time_60 = TimeLocal(); Call_int60();}
RefreshRates();
}
return(0);
}
//-----------------------------конец основного цикла----------------------------------//--------------------процедура вызываемая по прерыванию int10------------------------void Call_int10()
{
Alert ("Прерывание = 10 сек. Котировка >>>>", Close[0]);
}
//------------------------------------------------------------------------------------//--------------------процедура вызываемая по прерыванию int30------------------------void Call_int30()
{
Alert ("Прерывание === 30 сек. В резерве.");
}
//------------------------------------------------------------------------------------//--------------------процедура вызываемая по прерыванию int60------------------------void Call_int60()
{
Alert ("Прерывание ===== 60 сек");
if (orders!=0) return;
if (OrdersTotal( ) == 0) {
OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0, "from init()",123,Blue);
if (ticket<0)
{
Alert("OrderOpen BUY failed, with error #",GetLastError()); return;
}
Alert (" Открытие ордера BUY из init() прошло успешно");
orders++;
}
}
//------------------------------------------------------------------------------------//---------------------------эти функции не используются------------------------------int start() {return(0);}
//--------------------------------------------int deinit() {return(0);}
//--------------------------------------------
У меня такая проблема, вчера зарегистрировался на МТ 4, начал ознакамливатся и эксперементировать на демо. С утра решил продолжить изучать МТ4, но графики остановились на отметке времени 6 мая 23:57, ни помогает ни перезагрузка компа, не переутановка программы, что делать ?
Arthibald: 1. У меня такая проблема, вчера зарегистрировался на МТ 4, начал ознакамливатся и эксперементировать на демо. С утра решил продолжить изучать МТ4, но графики остановились на отметке времени 6 мая 23:57, ни помогает ни перезагрузка компа, не переутановка программы,...
2....что делать ?
1. Мир рухнул, рынок встал - посмотрите на день недели...:-))) ВЫХОДНЫЕ У ВСЕХ НОРМАЛЬНЫХ ЛЮДЕЙ... :-)))
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Все ровно((((
Извините, я перепутал, - там нужно ставить 1, тогда будет правильно. В смысле цена Close/Close на графике будет соответствовать цене в функции.
УРА! Заработало!!!!
Спасибо, большое!
Зацените!
Зацените!
Ну, наконец-то! Про это здесь почитайте. Только в старте эксперта и скрипта работают функции с ожиданием. Во всех остальных местах это жёстко пресекается.
Ваш код не подходит под стандарты языка MQL4. Ещё, где-то было написано, что ожидание в функциях инит и деинит при системном вызове ограничено 2,5 секундами. Затем, функция принудительно завершается.
Всё работает. Вот код мини-системы реального времени. Вне функции start(). Хотя конечно абсолютно не принципиально размещать ее в init().
Ниже представлен код, проверено на рабочем терминале, ордер открывает, все Алерты пишутся в окне сообщений. Функция Sleep() то-же
прекрасно работает, проверял до 30 сек. ожидания - Sleep(30000). Хотя такое ожидание совершенно ни к чему, достаточно и 50-ти мс.
Вопрос по массивам.
Есть три одномерных массива:
1. закрытие бара
Close[i]={Close_1,Close_2,...,Close_i};
2. открытие бара
Open[i]={Open_1,Open_2,...,Open_i};
3. его индекс
Index[i]={1, 2, ..., i};
Задача: необходимо организовать двумерный массив mas[i,2], отвечающий условиям
mas[i,0]= |Close_i-Open_i|;
mas[i,1]=i;
Как это правильно сделать?
Arthibald:
2....что делать ?1. У меня такая проблема, вчера зарегистрировался на МТ 4, начал ознакамливатся и эксперементировать на демо. С утра решил продолжить изучать МТ4, но графики остановились на отметке времени 6 мая 23:57, ни помогает ни перезагрузка компа, не переутановка программы,...
1. Мир рухнул, рынок встал - посмотрите на день недели...:-))) ВЫХОДНЫЕ У ВСЕХ НОРМАЛЬНЫХ ЛЮДЕЙ... :-)))
2. Отдыхать...:-)))
1. Мир рухнул, рынок встал - посмотрите на день недели...:-))) ВЫХОДНЫЕ У ВСЕХ НОРМАЛЬНЫХ ЛЮДЕЙ... :-)))
2. Отдыхать...:-)))