Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 249
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может так лучше
Только местами поменять. Всё-таки 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;
Поэтому на каком ТФ советник тестировался - на таких минутах он ордера открывал...
Протупил вообще, по тяжелой...
Спасибо...