[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 56

 
first_may:


Да согласен, не правильно выразился. Почитав help решил написать вот так:

// советник может выставлять ордера каждый день сесии
// в промежуток времени с 10-45 до 18-30
if (Hour()>=10 && Minute()>=45 && Hour()<=18 && Minute()<=30)
{
...
}

Так правильно написано условие на проверку времени?


нет. таким условием вы вообще не будете торговать, так как Minute()>=45 && Minute()<=30 - невыполнимо в принципе

 
sergeev:

нет. таким условием вы вообще не будете торговать, так как Minute()>=45 && Minute()<=30 - невыполнимо в принципе


Получается что нельзя сравнивать отдельно часы и минуты? Так как допустим 11-55 под первое условие подходит, так как 11>=10 и 55>=45, а вот под второе нет, так как 11<=18 и 55<=30. Хотя в жизни 11-55 как раз находится винтервале часов с 10-45 до 18-30.
 
first_may:

Получается что нельзя сравнивать отдельно часы и минуты? Так как допустим 11-55 под первое условие подходит, так как 11>=10 и 55>=45, а вот под второе нет, так как 11<=18 и 55<=30. Хотя в жизни 11-55 как раз находится винтервале часов с 10-45 до 18-30.

вы должны создать своё время начала и окончания через например StrToTime
 
sergeev:

вы должны создать своё время начал и окончания через например StrToTime


Вот, используя последнее известное время сервера, написал:
if (TimeCurrent()>=StrToTime("10:45") && TimeCurrent()<=StrToTime("18:30"))
{
...
}

Теперь 11-55 попадет в интервал с 10-45 по 18-30?

 
first_may:

Теперь 11-55 попадет в интервал с 10-45 по 18-30?

да.
 
sergeev:
да.


Большое спасибо! :)
 

Люди, я с этими глобальными и локальными переменными скоро начну по улице босиком бегать и воробьям дули крутить. Блин, я не понимаю почему на ровном месте столько головной боли!!! 

 

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'а?
 
vovan-gogan:

Люди, я с этими глобальными и локальными переменными скоро начну по улице босиком бегать и воробьям дули крутить. Блин, я не понимаю почему на ровном месте столько головной боли!!!

Насколько мне известно из учебника MQL4 теперь новое значение глобальной переменной Orders должно равняться 1. На следующей итерации - 2, Потом 3. Потом 4. И т.д. пока эксперт будет ставить отложные ордера. Но мне непонятно почему именений не происходит!!! После выставления очередного отложного ордера SELLSTOP кадый раз я вижу только одно сообщение: Orders = 1! В чем причина? Может ли такое быть из-за самого MetaEditor'а?

Причина в том, что у Вас на данном торговом счете открыты еще рыночные ордера.
 
Roman.:

Причина в том, что у Вас на данном торговом счете открыты еще рыночные ордера.

печальнее всего, что это происходит в тестере. причем отложенные ордера советник выставляет, а Orders всегда равен 1
 
vovan-gogan:

печальнее всего, что это происходит в тестере. причем отложенные ордера советник выставляет, а Orders всегда равен 1

Видимо вы вопрос не совсем правильно сформулировали.
Причина обращения: