Выпущен новый клиентский терминал MetaTrader 4 build 199

 
Выпущен новый клиентский терминал MetaTrader 4 build 199 со следующими исправлениями и дополнениями:
  1. Убран Multilanguage Pack, уменьшен размер дистрибутива до 3 Мб;
  2. Tester: уменьшено ограничение в количестве проходов для генетической оптимизации (не менее 200 проходов);
  3. Tester: улучшено фрактальное моделирование бара. Теперь используются более сглаженные паттерны для моделирования движения цены;
  4. Tester: исправлен расчёт свободной маржи, которая в некоторых случаях считалась неправильно;
  5. Tester: исправлен расчёт состояния стопаута в случае абсолютного, а не процентного уровня;
  6. Tester: в структуру заголовка FXT-файла добавлен параметр margin_stopout_mode, при этом размер заголовка не изменился. Номер версии стал 403;
  7. Tester: правильная отрисовка линии аск при визуальном тестировании в состоянии паузы;
  8. MQL4: улучшена работа с временными переменными типа string;
  9. MQL4: добавлены функции:
    • AccountFreeMarginMode
    • AccountStopoutMode
    • AccountStopoutLevel
    • AccountFreeMarginCheck
  10. MQL4: добавлены функции:
    • IsVisualMode
    • TerminalPath
    • WindowExpertName
    • WindowPriceMin
    • WindowPriceMax
    • GlobalVariablesTotal
    • GlobalVariableName
  11. MQL4: изменена логика работы функции GlobalVariablesDeleteAll - теперь можно указывать префикс имени для массового удаления глобальных переменных;
  12. MQL4: в функцию MarketInfo добавлены идентификаторы:
    • MODE_SWAPTYPE
    • MODE_PROFITCALCMODE
    • MODE_MARGINCALCMODE
    • MODE_MARGININIT
    • MODE_MARGINMAINTENANCE
    • MODE_MARGINHEDGED
    • MODE_MARGINREQUIRED
  13. MQL4: в связи с реструктуризацией функций переименованы следующие функции (но эти имена будут поддерживаться и дальше ради совместимости):
    • PriceOnDropped
    • TimeOnDropped
    • FirstVisibleBar
    • BarsPerWindow
    • ScreenShot
    • HistoryTotal
    • CompanyName
    • ClientTerminalName
    • ServerAddress
    • Lowest
    • Highest
    • CurTime
    • LocalTime
  14. MetaEditor: в связи с переименованием функций в словарь добавлен раздел "Устаревшие функции";
  15. Объекту Fibo Expansion добавлено свойство луча;
  16. Исправлено и улучшено сканирование серверов при обрыве связи;
  17. Добавлена закачка и импорт данных в архиве котировок;
  18. Исправлено сохранение умолчательного флага background у объектов;
  19. Поправлена запись в конфигурационные файлы многострочных комментов на чартах - теперь записывается только одна строка;
  20. Добавлен звуковой сигнал после окончания тестирования;
  21. Улучшен показ пустых баз данных в History Center - после первого обращения данные подкачиваются и показываются;
  22. Серьезно ускорена работа с базами данных на огромных массивах исторических данных;
  23. Серьезно ускорена операция удаления больших объемов исторических данных из History Center, исправлена ошибка перезачитывания только что стертой истории;
  24. Исправлены мелкие погрешности в выводе торговых логов.
Терминал можно скачать по ссылке http://www.metatrader4.com/files/mt4setup.exe
Через несколько дней будет официально объявлен новый билд и обновление клиентского терминала также будет доступно через службу LiveUpdate.
 
fxt-файл размером 725 Мб - это круто =)))
 
Важная упомянуть:

Использование огромных многомиллионных баров исторических данных требует серьезных ресурсов компьютера. Рекомендации: оперативной памяти побольше (не менее 1Gb, лучше 2Gb или 4Gb) и процессор помощнее (лучше многоядерный).

Мы пишем очень экономичные и быстрые программы, но чудес не бывает: многомиллионные массивы данных требуют соответствующих вычислительных ресурсов. Чтобы терминал не тормозил, рекомендуем не выставлять глубокую историю в настройках чартов. Рекомендованные значения:
  • Максимум баров в истории 10 000 000
  • Максимум баров на чарте 100 000
Не бойтесь выставлять меньшее значение визуализируемых баров (Максимум баров на чарте). На тестер торговых стратегий этот параметр не действует и в работе тестер использует всю доступную историю с диска.
 
Мда... не ожидал такой оперативности :)
string WindowExpertName( )
Возвращает имя выполняющегося эксперта, скрипта, пользовательского индикатора или библиотеки, в зависимости от того, из какой MQL4-программы вызвана данная функция.
Пример:
string name=WindowExpertName();
GlobalVariablesDeleteAll(name);

К тому же добавили еще работу с глобальными переменными как с объектами - этого тоже не ожидал.
Ну и TerminalPath - чем не кнопка About.
 
komposter:
fxt-файл размером 725 Мб - это круто =)))
СимволEURUSD (Euro vs US Dollar)
Период1 Минута (M1) 1999.01.04 11:35 - 2006.11.07 17:14
МодельВсе тики (на основе всех наименьших доступных периодов с фрактальной интерполяцией каждого тика)
Баров в истории2785668Смоделировано тиков14629311Качество моделирования25.00%

Ура, товарищи! =)
 
Чуть подробнее расскажу о новых функциях по контролю за рыночным окружением и проверке наличия средств.

Появилась штатная функция, позволяющая легко проверить возможность открытия любой позиции:
double AccountFreeMarginCheck( string symbol, int cmd, double volume)
Возвращает размер свободных средств, которые останутся после открытия указанной позиции по текущей цене на текущем счете. Если свободных средств не хватает, то будет сгенерирована ошибка 134 (ERR_NOT_ENOUGH_MONEY).
Параметры:
symbol - Наименование финансового инструмента, с которым должна проводиться торговая операция.
cmd - Торговая операция. Может быть либо OP_BUY, либо OP_SELL.
volume - Количество лотов.
Пример:
if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)<=0 || GetLastError()==134) return;

Больше не надо вычислять маржевые требования, сравнивать их с AccountFreeMargin() и решать - можно открыть позицию или нет. Достаточно явным образом узнать сколько останется маржи после открытия указанной позиции. Эта функция умеет считать абсолютно любые ситуации для любых символов и их совокупности. Учитываются все серверные настройки.

Пример кода по открытию позиции:
if(.....)  // логика для открытия длинной позиции
  {
   //--- а у нас денег хватит?
   if(AccountFreeMarginCheck(Symbol(),OP_BUY,Lots)<5)   // если останется меньше 5 долларов, то не пытаемся 
     {
      Print("Не могу открыть позицию из-за недостатка средств!");
      return(-1);
     }
   //--- все ок, открываемся
   ticket=OrderSend(.....); 
  }
Функция возвращает остаток маржевых средств в валюте депозита после открытия указанной сделки. Неразумно проверять на границу нуля, так как на такой грани допустимого сервер может дать отказ. Лучше всего проверять с небольшим запасом в несколько долларов.


Также трейдеру станет легче реализовывать детальную логику управления средствами с использованием расширенных возможностей функции MarketInfo:
  • MODE_SWAPTYPE - тип свопов
  • MODE_PROFITCALCMODE - способ расчета прибыли
  • MODE_MARGINCALCMODE - способ расчета маржи
  • MODE_MARGININIT - начальная/initial маржа (обычно для фьючерсов)
  • MODE_MARGINMAINTENANCE - поддерживающая/maintenance маржа (обычно для фьючерсов)
  • MODE_MARGINHEDGED - маржа перекрытой позиций в 1 лот
  • MODE_MARGINREQUIRED - маржевые требования на 1 лот
Подробно эти возможности описаны во встроенной документации в MetaEditor.
 
MetaQuotes:
  1. Tester: исправлен расчёт свободной маржи, которая в некоторых случаях считалась неправильно;
Можно здесь поподробнее, пожалуйста?
Какой workaround больше не нужен?

PS
С таким маркапом цитирование отдельного пункта меняет его номер. А в сорс лезть неохота...
 
komposter:

Ура, товарищи! =)
Небольшое уточнение - мы еще не привели в рабочее состояние весь History Center. Минутные данные по 15 символам пока только с 4 января 1999 до 1 октября 2006.
 
Irtron:
MetaQuotes:
  1. Tester: исправлен расчёт свободной маржи, которая в некоторых случаях считалась неправильно;
Можно здесь поподробнее, пожалуйста?
Какой workaround больше не нужен?
Ошибка была только в тестере. Если сразу же после успешного открытия позиции на том же тике запросить свободную маржу, то можно было получить старое значение. Мало кто на такое натыкался.
 

В процессе дальнейшей разработки языка MQL4 в целях систематизации некоторые функции были переименованы и перемещены из одной группы в другую. Старые названия функций не подсвечиваются и не связаны со справкой MetaEditor. Старые названия функций можно использовать, так как компилятор правильно их воспримет. Однако мы настоятельно рекомендуем использовать новые названия.

Старое название Новое название
BarsPerWindow WindowBarsPerChart
ClientTerminalName TerminalName
CurTime TimeCurrent
CompanyName TerminalCompany
FirstVisibleBar WindowFirstVisibleBar
Highest iHighest
HistoryTotal OrdersHistoryTotal
LocalTime TimeLocal
Lowest iLowest
PriceOnDropped WindowPriceOnDropped
ScreenShot WindowScreenShot
ServerAddress AccountServer
TimeOnDropped WindowTimeOnDropped
 
Я вот попробовал нажать закачать и процесс пошел и судя по скорости движения прогрессбара, то что я качаю весит несколько Мб, а вот хотелось бы знать сколько. И сразу другой вопрос данные передаются в hst или сжатом формате?
Причина обращения: