Да согласен, не правильно выразился. Почитав help решил написать вот так:
// советник может выставлять ордера каждый день сесии // в промежуток времени с 10-45 до 18-30 if (Hour()>=10 && Minute()>=45 && Hour()<=18 && Minute()<=30) { ... }
Так правильно написано условие на проверку времени?
нет. таким условием вы вообще не будете торговать, так как Minute()>=45 && Minute()<=30 - невыполнимо в принципе
нет. таким условием вы вообще не будете торговать, так как Minute()>=45 && Minute()<=30 - невыполнимо в принципе
Получается что нельзя сравнивать отдельно часы и минуты? Так как допустим 11-55 под первое условие подходит, так как 11>=10 и 55>=45, а вот под второе нет, так как 11<=18 и 55<=30. Хотя в жизни 11-55 как раз находится винтервале часов с 10-45 до 18-30.
Получается что нельзя сравнивать отдельно часы и минуты? Так как допустим 11-55 под первое условие подходит, так как 11>=10 и 55>=45, а вот под второе нет, так как 11<=18 и 55<=30. Хотя в жизни 11-55 как раз находится винтервале часов с 10-45 до 18-30.
вы должны создать своё время начала и окончания через например StrToTime
Люди, я с этими глобальными и локальными переменными скоро начну по улице босиком бегать и воробьям дули крутить. Блин, я не понимаю почему на ровном месте столько головной боли!!!
int Orders=0; // Объявление глобальной еременной суммы ордеров
int start() // Спец. функция start
{
if (MA2_2<MA1_2 && MA2_1>MA1_1) //Сигнал на пересечении МА
{
if (OrdersTotal()>= 1)
return(0); //Если ордеров больше 1, уходим.
SL = 30; // Стоп лосс
TP = 12; // Тейк профит
S_Price = Low[1] - 1* Point; // Уровень установки SELLSTOP
if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0) // Установка
//ордера SELLSTOP. Если OrderSend возвращает больше 0, то выполняем следующее.
{
Orders++; //Увеличить величину Orders на 1.
Alert ("Ордер выставлен.Orders = ",Orders ); //Вывод нового значения Orders.
}
}
return(0); // Выход из start()
}
Насколько мне известно из учебника MQL4 теперь новое значение глобальной переменной Orders должно равняться 1. На следующей итерации - 2, Потом 3. Потом 4. И т.д. пока эксперт будет ставить отложные ордера. Но мне непонятно почему именений не происходит!!! После выставления очередного отложного ордера SELLSTOP кадый раз я вижу только одно сообщение: Orders = 1! В чем причина? Может ли такое быть из-за самого MetaEditor'а?
Люди, я с этими глобальными и локальными переменными скоро начну по улице босиком бегать и воробьям дули крутить. Блин, я не понимаю почему на ровном месте столько головной боли!!!
Насколько мне известно из учебника MQL4 теперь новое значение глобальной переменной Orders должно равняться 1. На следующей итерации - 2, Потом 3. Потом 4. И т.д. пока эксперт будет ставить отложные ордера. Но мне непонятно почему именений не происходит!!! После выставления очередного отложного ордера SELLSTOP кадый раз я вижу только одно сообщение: Orders = 1! В чем причина? Может ли такое быть из-за самого MetaEditor'а?
Да согласен, не правильно выразился. Почитав help решил написать вот так:
// советник может выставлять ордера каждый день сесии
// в промежуток времени с 10-45 до 18-30
if (Hour()>=10 && Minute()>=45 && Hour()<=18 && Minute()<=30)
{
...
}
Так правильно написано условие на проверку времени?
нет. таким условием вы вообще не будете торговать, так как Minute()>=45 && Minute()<=30 - невыполнимо в принципе
нет. таким условием вы вообще не будете торговать, так как Minute()>=45 && Minute()<=30 - невыполнимо в принципе
Получается что нельзя сравнивать отдельно часы и минуты? Так как допустим 11-55 под первое условие подходит, так как 11>=10 и 55>=45, а вот под второе нет, так как 11<=18 и 55<=30. Хотя в жизни 11-55 как раз находится винтервале часов с 10-45 до 18-30.
Получается что нельзя сравнивать отдельно часы и минуты? Так как допустим 11-55 под первое условие подходит, так как 11>=10 и 55>=45, а вот под второе нет, так как 11<=18 и 55<=30. Хотя в жизни 11-55 как раз находится винтервале часов с 10-45 до 18-30.
вы должны создать своё время начала и окончания через например StrToTime
вы должны создать своё время начал и окончания через например StrToTime
Вот, используя последнее известное время сервера, написал:
if (TimeCurrent()>=StrToTime("10:45") && TimeCurrent()<=StrToTime("18:30"))
{
...
}
Теперь 11-55 попадет в интервал с 10-45 по 18-30?
Теперь 11-55 попадет в интервал с 10-45 по 18-30?
да.
Большое спасибо! :)
Люди, я с этими глобальными и локальными переменными скоро начну по улице босиком бегать и воробьям дули крутить. Блин, я не понимаю почему на ровном месте столько головной боли!!!
Насколько мне известно из учебника MQL4 теперь новое значение глобальной переменной Orders должно равняться 1. На следующей итерации - 2, Потом 3. Потом 4. И т.д. пока эксперт будет ставить отложные ордера. Но мне непонятно почему именений не происходит!!! После выставления очередного отложного ордера SELLSTOP кадый раз я вижу только одно сообщение: Orders = 1! В чем причина? Может ли такое быть из-за самого MetaEditor'а?Люди, я с этими глобальными и локальными переменными скоро начну по улице босиком бегать и воробьям дули крутить. Блин, я не понимаю почему на ровном месте столько головной боли!!!
Насколько мне известно из учебника MQL4 теперь новое значение глобальной переменной Orders должно равняться 1. На следующей итерации - 2, Потом 3. Потом 4. И т.д. пока эксперт будет ставить отложные ордера. Но мне непонятно почему именений не происходит!!! После выставления очередного отложного ордера SELLSTOP кадый раз я вижу только одно сообщение: Orders = 1! В чем причина? Может ли такое быть из-за самого MetaEditor'а?Причина в том, что у Вас на данном торговом счете открыты еще рыночные ордера.
Причина в том, что у Вас на данном торговом счете открыты еще рыночные ордера.
печальнее всего, что это происходит в тестере. причем отложенные ордера советник выставляет, а Orders всегда равен 1
печальнее всего, что это происходит в тестере. причем отложенные ордера советник выставляет, а Orders всегда равен 1
Видимо вы вопрос не совсем правильно сформулировали.