Only users who purchased or rented the product can leave comments
12
Stanislav Korotky  
Here is the header file and source code of an example expert adviser. The expert does nothing, it's only a template with all required calls inserted in proper places and explanatory comments.
ファイル:
Konstantin Seredkin  
Оплатил за библиотеку, в терминале что скачивалось, но после завершения в папке маркет ни чего не появилось, как быть ? но в покупках одна активация уже активировалась, осталось 4
Stanislav Korotky  
Konstantin Seredkin:
Оплатил за библиотеку, в терминале что скачивалось, но после завершения в папке маркет ни чего не появилось, как быть ? но в покупках одна активация уже активировалась, осталось 4

Посмотрите папку MQL5/Scripts/Market (если там нет, то в других подпапках MQL5) - просто Маркет и МетаТрейдер не поддерживают библиотеки. По-хорошему, в терминале навигаторе должна бы быть папка Libraries. Когда найдете файл, скопируйте вручную в MQL5/Libraries.

Konstantin Seredkin  
Stanislav Korotky:

Посмотрите папку MQL5/Scripts/Market (если там нет, то в других подпапках MQL5) - просто Маркет и МетаТрейдер не поддерживают библиотеки. По-хорошему, в терминале навигаторе должна бы быть папка Libraries. Когда найдете файл, скопируйте вручную в MQL5/Libraries.

Спасибо, нашел в скриптах. Такой вопрос еще, я правильно понимаю что бы все заработало, нужно воспользоваться вашим примером что выложен выше.
- Подключить OrderBook к своему роботу
- Из примера OrderBookExample перенести все вызовы
- В место OrderBook в #import вставить библиотеку

typedef void (*pOnBookEvent)(const string &symbol);

#import "OrderBook History Library.ex5"
void OrderBook_Init(pOnBookEvent ptr, const string folder, const bool common, const int offset);
И еще такой вопрос, у меня для работы со стаканом отдельный класс реализован, вызывается он так

void OnBookEvent(const string &symbol)
  {
   if(symbol!=m_book_market.GetMarketBookSymbol())              // проверяем символ стакана
      return;                                                   // если символ стакана не наш, выходим
   m_book_market.Refresh();                                     // обновляем данные по стакану   
}

Ваш пример

void OnBookEvent(const string &symbol)
{
  if(symbol == _Symbol)
  {
    MqlBookInfo _bookArray[];
    if(MarketBookGet(symbol, _bookArray)) // this is actually a call to OrderBook_MarketBookGet thanks to ORDERBOOK_SUBSTITUTE definition
    {                                     // online - it calls built-in MarketBookGet directly, in the tester - it reads book from archive
      
      // analyze the book here and make trading decisions
    }
  }
}

Внутри класса реализован.

Будет ли все корректно работать.

Спасибо.

Stanislav Korotky  
Konstantin Seredkin:

Спасибо, нашел в скриптах. Такой вопрос еще, я правильно понимаю что бы все заработало, нужно воспользоваться вашим примером что выложен выше.
- Подключить OrderBook к своему роботу
- Из примера OrderBookExample перенести все вызовы
- В место OrderBook в #import вставить библиотеку

И еще такой вопрос, у меня для работы со стаканом отдельный класс реализован, вызывается он так

Ваш пример

Внутри класса реализован.

Будет ли все корректно работать.

Спасибо.

Да, если библиотека скопирована в MQL5/Libraries, то import из вашего исходника должен работать. Но я бы посоветовал на всякий случай переименовать файл в краткую форму (без пробелов), а директиву импорт оставить как есть.

Насколько я понял, Вы используете в своем классе стандартные функции MQL API по работе со стаканом. Если этот класс подключен в исходник после моей библиотеки, то все вызовы встроенных функций будут define-ами переопределены на вызов библиотеки. Сигнатуры одни и те же. Но я не исключаю проблем совместимости - если они возникнут, мне нужно будет смотреть внутрь вашего класса.

Konstantin Seredkin  

Подключил библиотеку,файл OrderBook History Library.ex5 что скачался положил в директорию MQL5/Libraries,

подключил подключаемый файл из первого поста OrderBook.mqh к своему роботу, но только в строке

#import   вместо OrderBook.ext  вписал название библиотеки OrderBook History Library.ex5

Пробовал сократить ее название и внести в #import сокращенное название, после сокращения или изменения названия библиотеки, робот перестает ее видеть.

Вернул все назад, все видет.

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


Взял вашего робота OrderBook History Playback.ex5

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


Но если его запустить на визуале в тестере, он ни чего не показывает, в верху пишет, что не может найти историю

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


Может я что то не правильно делаю или что то пошло не так, уже все перепробовал, получается если ваш робот не чего не выводит, то по этой же причине и мой не чего не подгружает

Konstantin Seredkin  

Все, разобрался

Все начинает работать только если положить котировки в общую папку

C:\Users\Константин\AppData\Roaming\MetaQuotes\Terminal\Common\Files\Books

Если котировки оставить по родному пути, там где они сохраняются

C:\Users\Константин\AppData\Roaming\MetaQuotes\Terminal\1B9501BF48F2354A4685940A72752910\MQL5\Files\Books

то робот не ваш, не тот к которому подключается библиотека, котировки не видит, хотя почему то, при онлайн работе передвигая линию, он их видит.

Stanislav Korotky  
Konstantin Seredkin:

Все, разобрался

Все начинает работать только если положить котировки в общую папку

C:\Users\Константин\AppData\Roaming\MetaQuotes\Terminal\Common\Files\Books

Если котировки оставить по родному пути, там где они сохраняются

C:\Users\Константин\AppData\Roaming\MetaQuotes\Terminal\1B9501BF48F2354A4685940A72752910\MQL5\Files\Books

то робот не ваш, не тот к которому подключается библиотека, котировки не видит, хотя почему то, при онлайн работе передвигая линию, он их видит.

У тестера (у каждого агента) свои папки и подпапки с файлами, у терминала - своя. И плюс еще есть общая папка, которую видят все терминалы и тестер. Обращаться ли к общей папке или к папке текущего процесса (агент или терминал) - задается в библиотеке с помощью параметра OrderBook_UseCommonFiles.

Stanislav Korotky  
Konstantin Seredkin:

Все, разобрался

И еще такой нюанс, что класть файлы вручную в папки агентов не имеет смысла - тестер их чистит для каждого прогона. Для того чтобы терминал скопировал нужную историю на агенты, следует использовать директиву #property tester_file. Но поскольку файлы с историей стакана обычно объемные, более практично все-таки использовать общую папку (тогда директива не нужна, все файлы для чтения в одном месте - это заодно решает проблему потенциальных коллизий, так как пишутся файлы только в папках конкретных терминалов).

Konstantin Seredkin  
Stanislav Korotky:

И еще такой нюанс, что класть файлы вручную в папки агентов не имеет смысла - тестер их чистит для каждого прогона. Для того чтобы терминал скопировал нужную историю на агенты, следует использовать директиву #property tester_file. Но поскольку файлы с историей стакана обычно объемные, более практично все-таки использовать общую папку (тогда директива не нужна, все файлы для чтения в одном месте - это заодно решает проблему потенциальных коллизий, так как пишутся файлы только в папках конкретных терминалов).

Ну я скопировал историю что записалась в  в общую папку,

включил параметр OrderBook_UseCommonFiles = true и все заработало

Если его выключить, то робот не видит папки с записанной историей в директиве терминала, возможно это из за того что по пути терминала где он лежит, основная папка имеет путь

C:\Users\Константин\AppData\Roaming\MetaQuotes\Terminal\1B9501BF48F2354A4685940A72752910\MQL5\Files\Books

у меня несколько терминалов там лежит

В общем не критично, главное что работает, не сложно накопленные записи истории скопировать в общую директорию из торгового терминала, заодно при удалении или еще чего, никуда ничего не пропадет

Спасибо за помощь, разработка отличная, в хозяйстве вещь нужная, сам пока такое реализовать не могу, может и могу, просто не знаю как и с какой стороны, - хотелось бы иметь конечно в хозяйстве такую библиотеку в исходном виде, это бы повысило уровень программирования, можно было сделать какую ленту сделок как в терминале АТАС, с сохранением в историю, а потом реализовать отдельный интерфейс, который бы отфильтровал весь шлак и вывел значимые объемные уровни проторговки. Поковырять было бы чего...

Stanislav Korotky  
Konstantin Seredkin:

Если его выключить, то робот не видит папки с записанной историей в директиве терминала, возможно это из за того что по пути терминала где он лежит, основная папка имеет путь

C:\Users\Константин\AppData\Roaming\MetaQuotes\Terminal\1B9501BF48F2354A4685940A72752910\MQL5\Files\Books

у меня несколько терминалов там лежит

Так быть не должно. Используется стандартная функция FileOpen, которая читает файлы как из папки терминала, так и из общей папки, в зависимости от заданного флага. Нужно больше информации, что и как делается. Пишите в личку. Указанный путь - нормальное место для данных терминала при установке под неадминскими правами. Доступ туда обеспечивает сам терминал, мы лишь пользуемся API.

Подход, когда файлы записываются в одних папках (терминалов), а читаются из других - самый надежный (рекомендуемый).

Stanislav Korotky  

Here is the updated header file and source code of the example expert adviser for the library since version 1.3 and hob-files format 1.2.

The expert does nothing, it's only a template with all required calls inserted in proper places and explanatory comments.

ファイル:
LeonhardOiler  

Hi, 

I rented the library and can not manage to make it work, nor with your EA "OrderBook History Playback" neither with OrderBookExample.mq5. 

When I test these, I get the following message in the journal:  Library version: 1.3, supported file versions: 1.2, 1.1

What can I do?

Thanks.


Stanislav Korotky  
LeonhardOiler:

I rented the library and can not manage to make it work, nor with your EA "OrderBook History Playback" neither with OrderBookExample.mq5. 

When I test these, I get the following message in the journal:  Library version: 1.3, supported file versions: 1.2, 1.1

What can I do?

What does it mean "can not manage to make it work"? You should embed it into your code to make it work (the example is ok). OrderBook History Playback does already contain the library and can replay order books from files, which should be saved online by OrderBook Recorder. The example demonstrates the same (just add printing or your custom analysis). Please refer to the documentation for details.

LeonhardOiler  
Stanislav Korotky:

What does it mean "can not manage to make it work"? You should embed it into your code to make it work (the example is ok). OrderBook History Playback does already contain the library and can replay order books from files, which should be saved online by OrderBook Recorder. The example demonstrates the same (just add printing or your custom analysis). Please refer to the documentation for details.

So I must first generate the files and save them in the appropriate folder to then be able to play them back? Aren't there any files coming with the library?

Stanislav Korotky  
LeonhardOiler:

So I must first generate the files and save them in the appropriate folder to then be able to play them back? Aren't there any files coming with the library?

Hi, yes, historical book info should be collected by a user. This info is not provided by MQ or brokers. This is exactly the reason why the library and all accompanying utilities are required. No example files are distributed with the library, but you can easily start creating such files for specific instruments you are interested in: the recorder is free.

Flying Dutchman  

So has ANYBODY here been able to get this to work? I'm honestly frustrated. Why are there no clear instructions on the main page?? 

After having wrestled with this thing for several hours now I'm at the point where it imports the library, but now I get the Cannot find 'OrderBook_Init' in 'OrderBook.ex5'.

Stanislav Korotky  
Flying Dutchman #:

So has ANYBODY here been able to get this to work? I'm honestly frustrated. Why are there no clear instructions on the main page?? 

After having wrestled with this thing for several hours now I'm at the point where it imports the library, but now I get the Cannot find 'OrderBook_Init' in 'OrderBook.ex5'.

Don't use beta versions of MT5. Market products should be compiled with release compilers only. Please check official site to find out what's current release version - https://www.metatrader5.com/en/releasenotes

Stanislav Korotky  

I'm attaching the header file with adjusted import-directive - it should match the name of the file, downloaded from the market.

#import "OrderBook History Library.ex5"

In general, the name of actual ex5-file in the filesystem and the name of corresponding import-directive should be the same for successful binding.

ファイル:
OrderBook.mqh  2 kb
Only users who purchased or rented the product can leave comments
12