Вы думаете это повысит шустрость советника? Интересно, может быть... Честно говоря никогда не задумывался над порядком выставления условий в IFе..)
Ну... Я не говорю о огромном приросте, но, всё же... пока ещё не вышел обновлённый терминал с новым MQL4, все логические условия читаются до конца, даже если первое ложно
Вроде всё правильно, должно работать. Попробовал Ваш код у себя - работает с минутами. Но только с 14:25 до 14:59, с 15:25 до 15:59 и т.д.
Спасибо за скорый ответ, но - увы, что-то не получается... Код работает только в таком варианте, как в теле скрипта, так и в теле советника. По времени и функционалу - все нормально. Ордера выставляются только по часам!
int start() { int OpenHH=14,OpenMM=25; bool Trade=true; //---- if (Trade) // Разрешение на торговлю. if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час { OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера. //---- return(0); } //+------------------------------------------------------------------+ void OpenOrders(){return(0);}
Но как только в код добавляем минуты ( TimeMinute(TimeCurrent()) >= OpenMM ) - никакого результата.
Советник также отказывается выставлять ордера по минутам, при использовании функции StrToTime().
Даже при использовании другой функции StrToTime() - если указать время в целых часах - все нормально, но как только добавляются минуты - никакого результата. Хотя, как я писал в 1-ом сообщении, по пятницам ордера в 23:45 закрываются без проблем...
bool Trade=true;
string OpenTime = "14:00"; // Вот так работает!!!
string OpenTime = "14:25"; // А вот так - не работает!!!
if ( StrToTime(OpenTime) == TimeCurrent() && Trade )
Даже при использовании другой функции StrToTime() - если указать время в целых часах - все нормально, но как только добавляются минуты - никакого результата. Хотя, как я писал в 1-ом сообщении, по пятницам ордера в 23:45 закрываются без проблем...
bool Trade=true;
string OpenTime = "14:00"; // Вот так работает!!!
string OpenTime = "14:25"; // А вот так - не работает!!!
if ( StrToTime(OpenTime) == TimeCurrent() && Trade )
Sepulca: А как Вы тестируете? Если,к примеру, на H1 и по ценам открытия, то наверное не будет работать.
Ну вот видите как все оказывается просто... Необходимо чтобы минуты были кратны ТФ ...
Теперь / if ( TimeCurrent() == StrToTime(OpenTime) && Trade ), при OpenTime = 14:25 / будет работать, но только на ТФ=М1 и М5... Для функции открытия ордеров нужны текущие котировки, для функции закрытия ордеров они не нужны...
Этот момент я как-то "протупил" (не додумал), видно по неопытности...
Может так лучше
Только местами поменять. Всё-таки Hour()>OpenHH чаще чем час с минутами.
Вы думаете это повысит шустрость советника? Интересно, может быть... Честно говоря никогда не задумывался над порядком выставления условий в IFе..)
Вы думаете это повысит шустрость советника? Интересно, может быть... Честно говоря никогда не задумывался над порядком выставления условий в IFе..)
Вроде всё правильно, должно работать. Попробовал Ваш код у себя - работает с минутами. Но только с 14:25 до 14:59, с 15:25 до 15:59 и т.д.
{
int OpenHH=14,OpenMM=25;
bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH ) // В назначенный час
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}
Но как только в код добавляем минуты ( TimeMinute(TimeCurrent()) >= OpenMM ) - никакого результата.
Советник также отказывается выставлять ордера по минутам, при использовании функции StrToTime().
Спасибо еще раз... Буду копать дальше...
Может так лучше
Не... Так тоже не работает...
Даже при использовании другой функции StrToTime() - если указать время в целых часах - все нормально, но как только добавляются минуты - никакого результата. Хотя, как я писал в 1-ом сообщении, по пятницам ордера в 23:45 закрываются без проблем...
bool Trade=true;
string OpenTime = "14:00"; // Вот так работает!!!
string OpenTime = "14:25"; // А вот так - не работает!!!
if ( StrToTime(OpenTime) == TimeCurrent() && Trade )
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}
Не... Так тоже не работает...
Даже при использовании другой функции StrToTime() - если указать время в целых часах - все нормально, но как только добавляются минуты - никакого результата. Хотя, как я писал в 1-ом сообщении, по пятницам ордера в 23:45 закрываются без проблем...
bool Trade=true;
string OpenTime = "14:00"; // Вот так работает!!!
string OpenTime = "14:25"; // А вот так - не работает!!!
if ( StrToTime(OpenTime) == TimeCurrent() && Trade )
{ OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); }
//----
return(0);
}
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}
Ну не знаю... У меня и этот код работает....
А как Вы тестируете? Если,к примеру, на H1 и по ценам открытия, то наверное не будет работать.
А как Вы тестируете? Если,к примеру, на H1 и по ценам открытия, то наверное не будет работать.
Ну вот видите как все оказывается просто... Необходимо чтобы минуты были кратны ТФ ...
Теперь / if ( TimeCurrent() == StrToTime(OpenTime) && Trade ), при OpenTime = 14:25 / будет работать, но только на ТФ=М1 и М5... Для функции открытия ордеров нужны текущие котировки, для функции закрытия ордеров они не нужны...
Этот момент я как-то "протупил" (не додумал), видно по неопытности...
Спасибо огромное, вроде разобрался...
Sepulca:
А как Вы тестируете? Если,к примеру, на H1 и по ценам открытия, то наверное не будет работать.Ха-ха... А вот и наврал...
Проблема оказалась в функции открытия ордеров OpenOrders(). Совсем забыл убрать контроль открытия ордеров на пробое свечи (баре):
if (Volume[0] > 1) return;
Поэтому на каком ТФ советник тестировался - на таких минутах он ордера открывал...
Протупил вообще, по тяжелой...
Спасибо...