Выпущена бета-версия MetaTrader 4 Build 582 с обновленным языком MQL4 и Маркетом приложений - страница 65

 

Не пойму как работает CopyRates(). Либо документация некорректна, либо функция неверно работает. Цитирую документацию:

...

При запросе данных в заданном диапазоне дат возвращаются только данные, попадающие в запрашиваемый интервал, при этом интервал задается и учитывается с точностью до секунды. То есть время открытия любого бара, для которого возвращается значение (объем, спред, значение в индикаторном буфере, цена Open, High, Low, Close или время открытия Time), всегда находится в запрошенном интервале.

Таким образом, если текущий день недели Суббота, то при попытке скопировать данные на недельном таймфрейме с указанием start_time=Последний_Вторник и stop_time=Последняя_Пятница функция вернет 0, так как время открытия на недельном таймфрейме всегда приходится на воскресенье, но ни один недельный бар не попадает в указанный диапазон.

...

Опыт:

   MqlRates rates[];
   int count = CopyRates(Symbol(), PERIOD_CURRENT, datetime(Time[0] - 15), datetime(Time[0] - 5), rates);
   Alert(count);     // Alert: 1

Диапазон {Time[0] - 15 :Time[0] - 5} не попадает ни на одно открытие бара. Так почему копируется один элемент?

 

Качует из терминала в терминал незначительная грамматическая ошибка.

Там же Ё должно быть вместо Е :-)

 

а так уже больше не будет работать?

switch(MarketInfo(Symbol(),MODE_MINLOT)) 
     {
      case 0.001:
         digits=3;
         break;
      case 0.01:
         digits=2;
         break;
      case 0.1:
         digits=1;
         break;
      case 1.0:
         digits=0;
     }


'MarketInfo' - illegal switch expression type	tga.mq4	98	11
'0.001' - constant expression is not integral	tga.mq4	100	12
'0.01' - constant expression is not integral	tga.mq4	103	12
'0.1' - constant expression is not integral	tga.mq4	106	12
'1.0' - constant expression is not integral	tga.mq4	109	12

 

Зато можно вот так:

digits=(int)MathRound(MathAbs(MathLog(MarketInfo(Symbol(),MODE_MINLOT))/MathLog(10)));

 
Y.A.K._:

Зато можно вот так:

digits=(int)MathRound(MathAbs(MathLog(MarketInfo(Symbol(),MODE_MINLOT))/MathLog(10)));



логично. ;-)
 

кстати в справке и в старой было написано что

Выражение оператора switch должно быть целого типа

но на старом компиляторе работало как-то.

 

установил это в отдельную папку потестить,

захожу в рабочий терминал - обновляется до последней версии (хотя я его не просил)

и самое замечательное, что я не замечаю моих счетов, кроме того, что создан в тестовом терминале!

accounts.ini - перезаписан и получается данные о счетах утеряны.

брависимо!

 
majestic:

установил это в отдельную папку потестить,

захожу в рабочий терминал - обновляется до последней версии (хотя я его не просил)

и самое замечательное, что я не замечаю моих счетов, кроме того, что создан в тестовом терминале!

accounts.ini - перезаписан и получается данные о счетах утеряны.

брависимо!


Тестить 3-го февраля - не лучшая идея, имхенько.

Искренне сочувствую.

 

- Terminal: Добавлен глобальный поиск по клиентскому терминалу MetaTrader 4 и MQL4.com. Поиск в клиентском терминале позволяет быстро находить необходимую информацию во всех разделах клиентского терминала...

Ну, а по инструментам то чего не ищет? Хочца как-то так.

 
majestic:

установил это в отдельную папку потестить,

захожу в рабочий терминал - обновляется до последней версии (хотя я его не просил)

Конфиги должны мигрировать штатно.

Посмотрите, где находится текущий каталог данных через Файл -> Открыть каталог данных и при необходимости скопируйте accounts.ini из локального в новый каталог данных.

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