Вопросы новичка в MQL5. Профи не проходите мимо. - страница 7

 
Artyom Trishkin:

DRAW_NONE == 0

DRAW_LINE == 1

Значит где-то у вас ещё что-то. По идее всё должно работать и у вас.

не могу пока сказать в чем дело, но это работает не всегда.
 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 
Artyom Trishkin:

Не, не надо. Всё делается один раз при limit>1. Это первый запуск и подгрузка истории. И если у тебя сглаживание period_sm=10, то и лимит в этом случае должен быть меньше на 10. Соответственно так:

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - значение, которым нужно инициализировать буфер - 0 или EMPTY_VALUE - по обстоятельствам. А может и -100500 ...

как ты предлагаешь в своём примере -- так делать не правильно -- или, если тебя не понял, то дай развёрнутое пояснение.

принятие решения о том, что ты назвал "Это первый запуск и подгрузка истории" -- происходит по значению prev_calculated

limit (непонятно что в твоём случае такое limit) -- если это номер бара, с которого начинается перерасчёт -- то здесь limit вполне может быть больше 1, например, 5 минут не было связи -- при появлении связи на М1 limit=5, и не зачем перерасчитывать индикатор с самого начала

можно посмотреть в штатных терминальных примерах, как всё использовать.

примеры из индикатора "Bears":

MQL4 (нумерация баров с начала в конец):

   int limit=rates_total-prev_calculated;
//---
   if(rates_total<=InpBearsPeriod)
      return(0);
//---
   if(prev_calculated>0)
      limit++;
   for(int i=0; i<limit; i++)

MQL5 (нумерация баров с конца в начало):

   if(prev_calculated<InpBearsPeriod)
      limit=InpBearsPeriod;
   else limit=prev_calculated-1;
//--- the main loop of calculations
   for(i=limit;i<rates_total && !IsStopped();i++)
 

Привет всем. Был у меня демосчет на МТ-5. После перестановки Винды, потерял пароль-логин для входа в МТ-5. Сейчас в Вэб терминале зарегил

Демосчет МТ-5. Все Ок. Вставляю новые Логин, Пароль в обычный домашний терминал МТ-5. Все работает, только при открытии нового ордера F9,

в окошке новый ордер-кнопки Бай и Селл не активные. Я не могу сделать заявку. Подскажите плиз что мне делать?

Извените если не в той теме спрашиваю.

Спасибо.

 
Shara1:

Привет всем. Был у меня демосчет на МТ-5. После перестановки Винды, потерял пароль-логин для входа в МТ-5. Сейчас в Вэб терминале зарегил

Демосчет МТ-5. Все Ок. Вставляю новые Логин, Пароль в обычный домашний терминал МТ-5. Все работает, только при открытии нового ордера F9,

в окошке новый ордер-кнопки Бай и Селл не активные. Я не могу сделать заявку. Подскажите плиз что мне делать?

Извените если не в той теме спрашиваю.

Спасибо.

Спасибо разобрался. В окошке новый ордер F9, в графе обьем было 0,00. Поставил 0,01 и все заработало.

 

Здравствуйте, подскажите, в некоторых советниках встречаются данные строки.

  double highest=DBL_MIN,lowest=DBL_MAX;

Вопрос- для чего переменные, приравниваются к данным константам DBL_MIN, DBL_MAX?

 
refounder83:

Здравствуйте, подскажите, в некоторых советниках встречаются данные строки.

Вопрос- для чего переменные, приравниваются к данным константам DBL_MIN, DBL_MAX?

Для сравнения с реальными данными, которые заведомо меньше DBL_MAX и заведомо больше DBL_MIN.

Например:

double x=DBL_MIN;
int total=ArraySize(array);
for(int i=0; i<total; i++)
  {
   double y=array[i];  
   if(y>x) x=y;
  }
Print("x=",DoubleToString(x,Digits()));
 
Спасибо, понятно)
 

А вот эта процедура делается чтобы время сервера перевести в секунды?

datetime time=TimeTradeServer()+60*60*24;
   
  
 
refounder83:

А вот эта процедура делается чтобы время сервера перевести в секунды?

Это "время сервера" плюс одни сутки (60 секунд * 60 минут * 24 часа)

Можно использовать PeriodSeconds()

Print("PeriodSeconds(PERIOD_D1)=",PeriodSeconds(PERIOD_D1),", PeriodSeconds(PERIOD_H1)*24=",PeriodSeconds(PERIOD_H1)*24,", 60*60*24=",60*60*24);
Причина обращения: