Запросы в MT5 через ... - страница 2

 
sergey087:

А как она подключается? Ну DLL то я найду, там явно исписано тысяча страниц... То есть просто в Visual Studio сделаю себе DLL, а потом что в нем писать? Как связаться с MT5 и получить доступ к его данным?

Писать в ДЛЛ, функции, вестимо для взаимодействия. Где-то на форуме экземпл был, попробую найти.

Вот здесь расписано -

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

MetaQuotes Software Corp., 2018.10.25 17:18

26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5. Обновление содержит следующие изменения:

  1. Terminal: Теперь вы можете выносить графики финансовых инструментов за пределы окна торгового терминала.

    Это удобно при работе с несколькими мониторами. Например, на одном можно расположить основное окно платформы и следить за состоянием счета, а на другом — графики для оценки ситуации на рынке. Чтобы отделить график от терминала, отключите опцию "Закреплен" в его контекстном меню. После этого расположите график на нужном мониторе.





    Чтобы вам не приходилось переключаться между мониторами для нанесения аналитических объектов или индикаторов, у открепленных графиков предусмотрена отдельная панель инструментов. Чтобы изменить набор команд или скрыть панель инструментов, воспользуйтесь ее контекстным меню.

  2. Terminal: Полностью обновлены встроенные чаты. Теперь они поддерживают групповые диалоги и каналы. Вы можете вести закрытые обсуждения с группой людей в едином пространстве, не переключаясь между разными диалогами, создавать тематические каналы по интересам и языкам. Общаться с коллегами и друзьями на MQL5.community можно не заходя на сайт.

    Каждый групповой чат и канал может быть публичным или приватным. Автор сам решает, можно ли к ним присоединяться свободно или только по приглашению. Также в каналы и чаты можно назначать модераторов для дополнительного контроля общения.




  3. Terminal: Добавлена поддержка объемов повышенной точности для торговли криптовалютами. Теперь минимально возможный объем торговых операций составляет 0.00000001 лота. В стакан цен, ленту сделок и другие элементы интерфейса добавлена возможность отображения объемов с точностью до 8 знаков после запятой.

    Минимальный объем и шаг его изменения зависят от настроек финансового инструмента на стороне брокера.




  4. Terminal: В окно "Инструменты" добавлена вкладка статей, опубликованных на MQL5.community. Более 600 подробных материалов о разработке торговых стратегий на MQL5 теперь доступны прямо в терминале. Новые статьи выходят каждую неделю.




  5. Terminal: Добавлена поддержка расширенной авторизации с использованием сертификатов при работе под Wine.
  6. Terminal: Исправлено отображение стакана цен при ограничении его глубины одним уровнем.
  7. Terminal: На панель инструментов "Стандартная" добавлена команда "Сохранить как рисунок". Делать снимки графиков и делиться ими в сообществе стало еще легче.




  8. Terminal: Исправлено применение сдвига времени при импорте баров и тиков. Ранее в некоторых случаях сдвиг не применялся.




  9. Terminal: Исправлено подвисание терминала при большом количестве новостей экономического календаря.
  10. MQL5: Добавлена нативная поддержка .NET библиотек с "умным" импортом функций. Теперь библиотеки .NET можно использовать без написания специальных оберток — MetaEditor берет это на себя.

    Для работы с функциями .NET библиотеки достаточно импортировать саму DLL без указания конкретных функций. MetaEditor автоматически импортирует все функции, с которыми возможна работа:
    • Простые структуры (POD, plain old data) — структуры, которые содержат только простые типы данных.
    • Публичные статические функции, в параметрах которых используются только простые типы и структуры POD или их массивы

    Для вызова функций из библиотеки просто импортируйте ее:
    #import "TestLib.dll"
    
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int x=41;
       TestClass::Inc(x);
       Print(x);
      }
    C# код функции Inc класса TestClass выглядит следующим образом:
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    В результате выполнения скрипт вернет значение 42.

    Работа над поддержкой .NET библиотек продолжается, в будущих версиях планируется расширить возможности их использования.

  11. MQL5: В стандартную библиотеку добавлена поддержка работы с функциями WinAPI. Теперь для использования функций операционной системы в MQL5-программе нет необходимости вручную импортировать библиотеки и описывать сигнатуры функций. Достаточно подключить заголовочный файл из каталога MQL5\Include\WinAPI.

    Функции WinAPI сгруппированы в отдельных файлах по назначению:

    • libloaderapi.mqh — работа с ресурсами
    • memoryapi.mqh — работа с памятью
    • processenv.mqh — работа с окружением
    • processthreadsapi.mqh — работа с процессами
    • securitybaseapi.mqh — работа с системой безопасности ОС
    • sysinfoapi.mqh — получение системной информации
    • winbase.mqh — общие функции
    • windef.mqh — константы, структуры и перечисления
    • wingdi.mqh — работа с графическими объектами
    • winnt.mqh — работа с исключениями
    • winreg.mqh — работа с реестром
    • winuser.mqh — управление окнами и интерфейсом
    • errhandlingapi.mqh — обработка ошибок
    • fileapi.mqh — работа с файлами
    • handleapi.mqh — работа с хэндлами
    • winapi.mqh — подключение всех функций (заголовочных файлов WinAPI)

    Обвязка работает только с 64-битной архитектурой.

  12. MQL5: Добавлена поддержка спецификаторов inline, __inline, __forceinline при синтаксическом анализе кода. Наличие этих спецификаторов в коде не будет вызывать ошибки, но и не будет влиять на компиляцию. На данный момент это позволит легче переносить С++ код в MQL5.
    Более подробная информация о спецификаторах доступна в MSDN.

  13. MQL5: Проведена существенная оптимизация исполнения MQL5-программ. В некоторых случаях прирост производительности может достигать 10%. Чтобы получить прирост скорости, перекомпилируйте ваши программы в новой версии MetaEditor.
    К сожалению, дополнительная оптимизация привела к потере совместимости новых программ с предыдущими версиями терминала. Все программы, скомпилированные в MetaEditor версии 1912 и выше, не будут запускаться в терминалах версии ниже 1912. При этом программы, скомпилированные ранее в предыдущих версиях MetaEditor, будут в работать в новых терминалах.

  14. MQL5: Проведена большая работа по оптимизации множества функций MQL5.
  15. MQL5: Добавлены новые свойства для прикрепления/открепления графиков от основного окна терминала и управления их положением.

    В перечисление ENUM_CHART_PROPERTY_INTEGER добавлены:

    • CHART_IS_DOCKED — окно графика закреплено. Если установить значение false, то график можно перетащить за пределы терминала.
    • CHART_FLOAT_LEFT — левая координата открепленного графика относительно виртуального экрана.
    • CHART_FLOAT_TOP — верхняя координата открепленного графика относительно виртуального экрана.
    • CHART_FLOAT_RIGHT — правая координата открепленного графика относительно виртуального экрана.
    • CHART_FLOAT_BOTTOM — нижняя координата открепленного графика относительно виртуального экрана.

    В перечисление ENUM_TERMINAL_INFO_INTEGER добавлены:

    • TERMINAL_SCREEN_LEFT — левая координата виртуального экрана. Виртуальным экраном является прямоугольник, охватывающий все мониторы. Если в системе имеются два монитора и их порядок задан справа налево, то левая координата виртуального экрана может оказаться на границе двух мониторов.
    • TERMINAL_SCREEN_TOP — верхняя координата виртуального экрана.
    • TERMINAL_SCREEN_WIDTH — ширина терминала.
    • TERMINAL_SCREEN_HEIGHT — высота терминала.
    • TERMINAL_LEFT — левая координата терминала относительно виртуального экрана.
    • TERMINAL_TOP — верхняя координата терминала относительно виртуального экрана.
    • TERMINAL_RIGHT — правая координата терминала относительно виртуального экрана.
    • TERMINAL_BOTTOM — нижняя координата терминала относительно виртуального экрана.

  16. MQL5: Добавлено поле volume_real в структуры MqlTick и MqlBookInfo. Оно предназначено для работы с объемом повышенной точности. Значение volume_real имеет больший приоритет по сравнению с volume. Сервер будет использовать именно это значение, если оно указано.

    struct MqlTick
      {
       datetime         time;            // Время последнего обновления цен
       double           bid;             // Текущая цена Bid
       double           ask;             // Текущая цена Ask
       double           last;            // Текущая цена последней сделки (Last)
       ulong            volume;          // Объем для текущей цены Last
       long             time_msc;        // Время последнего обновления цен в миллисекундах
       uint             flags;           // Флаги тиков
       double           volume_real;     // Объем для текущей цены Last c повышенной точностью
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            // тип заявки из перечисления ENUM_BOOK_TYPE
       double           price;           // цена
       long             volume;          // объем
       double           volume_real;     // объем с повышенной точностью
      };

  17. MQL5: В перечисление ENUM_SYMBOL_INFO_DOUBLE добавлены новые свойства:

    • SYMBOL_VOLUME_REAL — объем последней совершенной сделки;
    • SYMBOL_VOLUMEHIGH_REAL — максимальное значение объема совершенной сделки за текущие сутки;
    • SYMBOL_VOLUMELOW_REAL — минимальное значение объема совершенной сделки за текущие сутки.

    Для получения этих свойств используйте функцию SymbolInfoDouble.

  18. MQL5: В перечисление ENUM_MQL_INFO_INTEGER добавлено свойство MQL_FORWARD — признак того, что программа находится в режиме форвард-тестирования.
  19. MQL5: Для структур добавлено свойство pack( integer_value ). Оно позволяет задать выравнивание расположения полей внутри структуры, это бывает необходимо при работе с DLL. Для integer_value возможны значения 1, 2, 4, 8 и 16.
    Если свойство не определено, по умолчанию используется вырванивание в 1 байт — pack(1).

    Пример использования:
    //+------------------------------------------------------------------+
    //| Default packing                                                  |
    //+------------------------------------------------------------------+
    struct A
      {
       char              a;
       int               b;
      };
    //+------------------------------------------------------------------+
    //| Specified packing                                                |
    //+------------------------------------------------------------------+
    struct B pack(4)
      {
       char              a;
       int               b;
      };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       Print("sizeof(A)=",sizeof(A));
       Print("sizeof(B)=",sizeof(B));
      }
    //+------------------------------------------------------------------+
    Вывод:
    sizeof(A)=5
    sizeof(B)=8
    Более подробная информация о выравнивании в структурах доступно в MSDN.

  20. MQL5: Ослаблены требования к приведению перечислений. При неявном приведении компилятор автоматически подставит значение правильного перечисления и выведет предупреждение.

    Для следующего кода:
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| Start function                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    Компилятор выдаст предупреждение:
    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main'
    'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
    Ранее в этом случае выдавалась ошибка:
    'PRICE_CLOSE' - cannot convert enum
    При неправильном использовании перечислений в параметрах функций компилятор по-прежнему будет выдавать ошибку.

  21. MQL5: Исправлены ошибки компиляции шаблонных функций. Теперь при использовании перегруженных шаблонных функций инстанцируется только нужная перегрузка, а не все имеющиеся.
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // ранее в этом месте компилятор выдавал ошибку
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  

  22. MQL5: Оптимизированы некоторые случаи доступа к тиковой истории через функции CopyTicks*.
  23. MQL5: Добавлена новая функция TesterStop, которая позволяет досрочно завершить тестирование/проход оптимизации. При ее вызове вся накопленная торговая статистика и результат OnTester передаются в клиентский терминал как при штатном заврешении тестирования/оптимизации.
  24. MQL5: Добавлено новое свойство для пользовательских индикаторов #property tester_everytick_calculate. Оно используется в тестере стратегий и позволяет принудительно влючить расчет индикаторов на каждом тике.
  25. Tester: Теперь при невизуальном тестировании/оптимизации все используемые индикаторы (стандартные и пользовательские) рассчитываются только по запросу данных. Исключение составляют индикаторы, содержащие вызовы функции EventChartCustom и использующие обработчик OnTimer. Ранее в тестере стратегий при приходе любого тика (даже от чужого инструмента) все индикаторы рассчитывались безусловно. Нововведение позволило существенно ускорить тестирование и оптимизацию.

    Чтобы принудительно включить расчет индикаторов на каждом тике, добавьте для программы свойство #property tester_everytick_calculate.

    Индикаторы, скомпилированные предыдущими версиями компилятора, будут рассчитываться как раньше — на каждом тике.

  26. Tester: Исправлен учет точности валюты депозита при тестировании/оптимизации и формировании соответствующих отчетов.
  27. Tester: Оптимизирована и ускорена работа тестера стратегий.
  28. Tester: Исправлен ряд ошибок тестирования и оптимизации.
  29. MetaEditor: Исправлен поиск слова целиком. Теперь при поиске знак подчеркивания учитывается как обычный символ, а не разделитель слов.
  30. Обновлена документация.

Обновление будет доступно через систему Live Update.


 

А все теперь понятно, просто DLL используется в своих пределах. То есть работа с БД и подобным, а MT5 туда "скидывает" данные после получения. Я уж подумал, что есть возможность прямо из DLL "связь" наладить. Ладно, попробую сначала файлами, все же они попроще... Потом уже и DLL может быть. Одно плохо, что не так уж просто получить котировки при казалось бы их полной доступности...

Я вообще уже так привык с php  к тому, что есть xml и подобное в шаговой доступности, что все это выглядит как нагромождение бессмысленное и беспощадное...

 
sergey087:

А все теперь понятно, просто DLL используется в своих пределах. То есть работа с БД и подобным, а MT5 туда "скидывает" данные после получения. Я уж подумал, что есть возможность прямо из DLL "связь" наладить. Ладно, попробую сначала файлами, все же они попроще... Потом уже и DLL может быть. Одно плохо, что не так уж просто получить котировки при казалось бы их полной доступности...

Я вообще уже так привык с php  к тому, что есть xml и подобное в шаговой доступности, что все это выглядит как нагромождение бессмысленное и беспощадное...

Пайпы попробуйте. В mql есть возможность работы с ними.
 
Vladimir Simakov:
Пайпы попробуйте. В mql есть возможность работы с ними.

Да я уже думаю заказать, только до конца сформулировать что мне нужно с точки зрения пользователя уже. Если сумма не бог весть какая... Что то много мне возится иначе придется.

 

не хотите dll ну передавайте через файлы, чтобы не было нагрузки на жесткий диск используйте, например, Memory Mapping 

вариантов обмена много, поиском по форуму "обмен", "обмен данными"  должна найтись информация

ЗЫ: поискал мультивалютный тик поиском, кажется вот тут и будет загвоздка в реализации, примеры в кодобазе есть, но судя по комментариям не сильно надежно все работает, хотя может быть я так бегло прочитал

 
sergey087:

Да я уже думаю заказать, только до конца сформулировать что мне нужно с точки зрения пользователя уже. Если сумма не бог весть какая... Что то много мне возится иначе придется.

Так, что Вы в конечном итоге сделать хотите?
 
Igor Makanu:

не хотите dll ну передавайте через файлы, чтобы не было нагрузки на жесткий диск используйте, например, Memory Mapping 

вариантов обмена много, поиском по форуму "обмен", "обмен данными"  должна найтись информация

ЗЫ: поискал мультивалютный тик поиском, кажется вот тут и будет загвоздка в реализации, примеры в кодобазе есть, но судя по комментариям не сильно надежно все работает, хотя может быть я так бегло прочитал

У меня SDD так что мне хватить должно. Но на деле у меня как раз mql5 больше всего проблем и вызывает. В итоге то нужно что то примерно такое:


Массив подобных данных на входе: "YYYY.MM.DD.HH.MM", то есть просто список дата + время в одном формате. И путь указать куда сохранять, "скрипт" этот (или DLL или что угодно) делает мне там XML файлы с именем "YYYY.MM.DD.HH.MM.XXXYYY", при этом соответственно работает по принципу определенному... Не знаю пока как лучше избежать дублей и как проверять, но в целом можно попробовать в "обратную" сторону проверять последние сутки...

Тут как раз загвоздка, нужно сформулировать до конца что хочу, чтобы запустить MT5 вместе с ним и он снабжал меня нужными по времени котировками для каждой пары доступной. Ну и потом как то вот не делал этого слишком часто, в то же время не имелось пропусков. Скорее всего просто проверка на наличие файла и все, а делал это каждые минут 5 - 15, что тоже можно настроить. То есть настроек всего лишь: подходящие даты, где будет хранилище, частота проверки и сохранения котировок. 

Примерно так, если я еще ничего не забыл и не пропустил... MQL5 просто уже не лезет, может просто день сложный уже совсем под конец не знаю даже. Но не лезет...

 
Vladimir Simakov:
Так, что Вы в конечном итоге сделать хотите?

Прямо вот описал уже точно, кажется почти все...

 
sergey087:

Прямо вот описал уже точно, кажется почти все...

То есть, Вам массив свечей OHLC на сторону гнать?
 
sergey087:

 Ну и потом как то вот не делал этого слишком часто, в то же время не имелось пропусков. Скорее всего просто проверка на наличие файла и все, а делал это каждые минут 5 - 15, что тоже можно настроить. То есть настроек всего лишь: подходящие даты, где будет хранилище, частота проверки и сохранения котировок. 

ну если Вам нужны даннеы от МТ5 один раз в несколько минут, то вообще не принципиально как передавать, я с PHP вообще не знаком, но может быть Вам проще вообще все на сервер отправлять с помощью МТ5?

https://www.mql5.com/ru/docs/network/webrequest

https://www.mql5.com/ru/docs/network

Документация по MQL5: Сетевые функции / WebRequest
Документация по MQL5: Сетевые функции / WebRequest
  • www.mql5.com
Для использования функции WebRequest() следует добавить адреса серверов в список разрешенных URL во вкладке "Советники" окна "Настройки". Порт сервера выбирается автоматически на основе указанного протокола - 80 для "http://" и 443 для "https://". Функция WebRequest() является синхронной, это означает, что она приостанавливает выполнение...
Причина обращения: