Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 336

 
evillive:
Попробуйте
Спасибо помогло.
 
evillive:
Не, он потом подумал и решил что 140.15 или 140.35 тоже круглая цена и могут понадобиться. Клиент ещё не решил что ему надо просто )))

artmedia70:
Ну... тогда как наконец решит, чего хочет, тогда пусть и думать начинает ...


Доброго времени суток !

Вы очень вежливы, господа, учитывая название данной ветки.

Я НАЧАЛ думать. И понял, то, что Вы советовали не решает поставленной задачи.

Никакого клиента нет))), пишу я для себя. Задача была принципиальна, как объяснить советнику цену после запятой, при которой выполняется действие.

Цена может быть хоть ХХХ.01 или ХХХ.34 - не важно. ХХХ.00 я указал для примера.

Все оказалось проще.

int start()                                   // Спец. функция start
  {
//----
   double Price, Level, Level_2;                 // Текущая цена и уровень для расчета
   Price=Bid;                                    // Запрашиваем цену
   Level=MathFloor(Bid);                         // Задаем уровень XXX.00
   Level_2 = MathFloor(Bid)+50*Point;            // Задаем уровень ХХХ.50
                              
//----
   if (Price==Level)                                      // Если цена на уровне ХХХ.00
     {
      Comment("Курс был равен  заданному уровню ", Level);    // Сообщение трейдеру
     }
     
   if (Price==Level_2)                                    // Если цена на уровне ХХХ.50
     {
      Comment("Курс был равен  заданному уровню ", Level_2);   // Сообщение трейдеру
     }
   
   return;// Выход из start()

"Левел2" = 50 можно вынести во внешние переменные и задавать любой уровень, который интересует в данный момент.

Вопрос снят.

P.S. Пример для йеновых пар (два знака после запятой). Для 4 знаков немного иначе надо написать (!Новичкам если интересно, спросить у Профи как))) ).

На форумах пишу очень редко. Желания изменить привычкам не появилось.


Всем доброго дня и удачи.

 
Влияют ли алерты и принты в коде на время оптимизации?
Т.е. умеет ли оптимизация их обходить или необходимо делать это на пользовательском уровне?
 
chief2000:
Влияют ли алерты и принты в коде на время оптимизации?
Т.е. умеет ли оптимизация их обходить или необходимо делать это на пользовательском уровне?


Влияют, особенно если выводить результат жадного до времени вычисления. Лучше проверку IsOptimization() вставить перед алертами.
 
evillive:

Влияют, особенно если выводить результат жадного до времени вычисления. Лучше проверку IsOptimization() вставить перед алертами.

Я имел в виду не вычисления для вывода, а сами команды Alert и Print. От них при оптимизации проку нет, но вот отключаются ли они оптимизатором автоматически или нет? (каждая дополнительная проверка тоже влияет на скорость оптимизации)
 
chief2000:

Я имел в виду не вычисления для вывода, а сами команды Alert и Print. От них при оптимизации проку нет, но вот отключаются ли они оптимизатором автоматически или нет? (каждая дополнительная проверка тоже влияет на скорость оптимизации)


Влияют и алерт, и принт, и проверка. Но проверка меньше времени отнимает.
 
evillive:

Влияют и алерт, и принт, и проверка. Но проверка меньше времени отнимает.

Насколько я знаю, Alert и Print в режиме оптимизации (не тестирования) просто пропускаются тестером, таким образом, ни на что не влияя... Гораздо большее влияние на скорость оказывает MarketInfo, она способна сильно тормозить процесс. Тут действительно помогает if (IsTesting()) и if(IsOptimization()); например, если программа постоянно контролирует текущий спред, в тестере это не нужно.

 
alsu:

Насколько я знаю, Alert и Print в режиме оптимизации (не тестирования) просто пропускаются тестером, таким образом, ни на что не влияя... Гораздо большее влияние на скорость оказывает MarketInfo, она способна сильно тормозить процесс. Тут действительно помогает if (IsTesting()) и if(IsOptimization()); например, если программа постоянно контролирует текущий спред, в тестере это не нужно.


Если это не исправили то комментарии могут очень сильно замедлять работу МТ.
Насчет MarketInfo - имеется в виду непосредственно сама команда? А к примеру использование Bid/Ask (в чистом виде, для текущего символа)?
 
chief2000:

Если это не исправили то комментарии могут очень сильно замедлять работу МТ.
Насчет MarketInfo - имеется в виду непосредственно сама команда? А к примеру использование Bid/Ask (в чистом виде, для текущего символа)?

В тестере MarketInfo() не работает, а Bid и Ask тормозят и искажают. Потому по совету Xrust'a получаю их от iClose(NULL,0,0):

  if(IsOptimization() || IsTesting() || IsVisualMode())
  {
    Spread = 21; 
    spr = NormalizeDouble(Spread*Point,Digits);
    bid = NormalizeDouble(iClose(Symbol(),0,0),Digits);
    ask = NormalizeDouble(iClose(Symbol(),0,0)+spr,Digits);
  }
  else
  {
    Spread = MarketInfo(Symbol(),MODE_SPREAD);
    spr = NormalizeDouble(Spread*Point,Digits);
    bid = MarketInfo(Symbol(),MODE_BID);
    ask = MarketInfo(Symbol(),MODE_ASK);
  }
 
borilunad:

В тестере MarketInfo() не работает, а Bid и Ask тормозят и искажают. Потому по совету Xrust'a получаю их от iClose(NULL,0,0):


Костыли, имхенько.
Причина обращения: