Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2059

 
законопослушный гражданин #:

здравствуйте!

к простенькому советнику пытаюсь приделать фильтр работы по времени.

нашел пример кода работы по времени, вставил в код советника, но сов всё равно открывает сделки по сигналу, беж учета времени.

В журнале пишет: 2022.10.13 17:43:09.970 2022.10.12 21:15:00  SMA по времени USDJPY,M15: Alert: Операции запрещены

однако сделки идут (в тестере стратегий). Подскажите пожалуйста, что я упускаю?

вот такой простенький код:


void OnTick()
  {
  
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

if(CheckActiveHours()) 
{
Alert("Операции разрешены");  
// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
      
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }
}
else Alert("Операции запрещены");
   }
 
Tretyakov Rostyslav #:

Спасибо! помогло!

 
Tretyakov Rostyslav #:

а почему сделки открываются не в диапазоне времени (например 2:00 - 3:00), а в диапазоне (2:00 - 3:45)?

25 2022.09.22 03:45 sell 9 0.01 144.211 0.000 0.000 0.00 249994.41


 
законопослушный гражданин #:

а почему сделки открываются не в диапазоне времени (например 2:00 - 3:00), а в диапазоне (2:00 - 3:45)?

25 2022.09.22 03:45 sell 9 0.01 144.211 0.000 0.000 0.00 249994.41


Если ты выбираешь LastHour 3 часа, то пока час будет равен 3 до 3:59 будет торговля. Поставишь 2, то в 3 торговли не будет

 
Tretyakov Rostyslav #:

Если ты выбираешь LastHour 3 часа, то пока час будет равен 3 до 3:59 будет торговля. Поставишь 2, то в 3 торговли не будет

ясно, спасибо за разъяснение

 
(drSYM<2)? ifTlowFST[j]:ifTHighFST[j] = false; почему-то слева операция ? НЕ РАБОТАЕТ только справа или я что-то неправильно набираю?
 
IuriiPrugov #:
(drSYM<2)? ifTlowFST[j]:ifTHighFST[j] = false; почему-то слева операция ? НЕ РАБОТАЕТ только справа или я что-то неправильно набираю?

А что Вы хотите получить этим кодом?
 
Sergey Gridnev #:

А что Вы хотите получить этим кодом?

если drSYM<2   ifTlowFST[j] = false;   иначе ifTHighFST[j] = false; я думал что так но увы операция ?  РАБОТАЕТ только справа я в этом убедился но почему так сделали?

 
IuriiPrugov #:

если drSYM<2   ifTlowFST[j] = false;   иначе ifTHighFST[j] = false; я думал что так но увы операция ?  РАБОТАЕТ только справа я в этом убедился но почему так сделали?

Если Вы вернётесь к своему предыдущему сообщению, то увидите, что код там другой.

Сейчас Ваш код соответствует шаблону:
(Условие) ? Присвоение1 : Присвоение2;

А в том предыдущем сообщении он соответствовал шаблону:
(Условие) ? Значение : Присвоение;

Но на самом деле тернарный оператор "?:" используется в соответствии с шаблоном:
Переменная=(Условие) ? Значение1 : Значение2;
 
IuriiPrugov #:

если drSYM<2   ifTlowFST[j] = false;   иначе ifTHighFST[j] = false; я думал что так но увы операция ?  РАБОТАЕТ только справа я в этом убедился но почему так сделали?

Может вам "относительно" нужно? "==" два знака равенства?..

Потому-что


Причина обращения: