Блог им. MrFly

Тиковые данные в WealthLab со скоростью света! Только тут

Тиковые данные в WealthLab со скоростью света! Только тут Тиковые данные в WealthLab со скоростью света! Только тут

Я работал во множестве терминалах, но моя «любовь на всегда» — это Wealth-Lab!

И  я знаю — многие любят «велс» также сильно, как и я, однако у него была одна сложно-решаемая проблема — это данные российского рынка! Постоянно приходилось загружать их можно сказать вручную — а о том, чтобы работать с ним как с Xtick(терминал технического анализа) не было и речи, хотя WealthLab настолько гибкий, что можно было бы сделать просмотровый терминал покруче Xtick и многих других.

Например — вы хотели бы получать сигналы в телеграм или просто скальпировать, глядя на кастомные/уникальные индикаторы — это можно сделать в WealthLab и я говорю не о последней версии веса, а о старой доброй версии 6.9 — которая распространена «по интернетам»!

Есть несколько быстрых(для подключения) и удобных поставщиков тиковых данных — но самым удобным и простым для доступа оказался фид из терминала MetaTrader 5 (в моем случае от Финама). Он подключается за 1 минуту и сразу готов к работе!

Если мы хотим, чтобы тики поступали к нам в терминал реально быстро — можно воспользоваться таким вариантом, как ZeroMQ. Это технология сокетов, которая работает быстрее, чем вы успеваете моргнуть. Если простым языком — то как только приходит тик в Metatrader — ZeroMQ моментально отправит эти данные на «клиент- подписчик», который мы развернем прямо внутри стратегии WealthLab на этом же компьютере ( чтобы показать, что сервер можно создать практически где угодно, лишь бы был доступ к C# – в боевом режиме, конечно лучше streamingDataProvider).

А теперь начинается мастер-класс для тех, кто хочет избежать «шишек» при получении тиковых данных в C# (и кое что интересное в конце).

Тиковые данные в WealthLab со скоростью света! Только тут

1. Если у вас нет Metatrader 5 заходим в личный кабинет Финама «заказываем» новый терминал — вот как это быстро сделать.            

2. Естественно Metatrader 5 «из коробки» не умеет работать с ZeroMQ, но на гитхабе есть товарищи, которые «подружили» эти два превосходных инструмента, теперь осталось разобраться с версиями. Поэтому мы:            

            * Заходим на страницу издателя на github

             * Качаем архив libzmq 4.3.4

             * Открываем архив и видим, что там 100500 файлов, но не пугаемся

             * Копируем 2 файла

                     * libzmq-v140-mt-4_3_4.dll (Сама библиотека) и

                     * libsodium.dll (Библиотека шифрования, без неё первая не запустится) — эти файлы точно нам подойдут. Я рекомендую обе dll разблокировать сразу, чтобы не сталкиваться с ошибками лишний раз.

Тиковые данные в WealthLab со скоростью света! Только тут

             * Кидаем оба файла в папку "MQL5\Libraries". Чтобы открыть папку «MQL5» можно просто в меню metatrader5 нажать на кнопку «Файл»=>"Открыть каталог данных"

Тиковые данные в WealthLab со скоростью света! Только тут

              1. Теперь, когда у нас есть сам инструмент — начнем с ним работать. Чтобы MQL-код мог общаться с DLL, нужен файл-обертка с расширением mqh, а также советник который мы кинем на любой график и тики автоматически полетят и мы сможем их поймать с помощью клиента-подписчика на C#. Файлы должны лежать в разных папках — так, что есть нюансы — показываю как и что делать:

Вот файл с расширением mqh:

Тиковые данные в WealthLab со скоростью света! Только тут

Для этого файла создаем отдельную папку «zmq» — - должно получиться так: «C:\Program Files\FINAM MetaTrader5\MQL5\Include\Zmq\Zmq.mqh»

Файл советника- берем вот тут

Положить его нужно в папку: «C:\Program Files\FINAM MetaTrader5\MQL5\Experts\ZmqSender.mq5»

Далее заходим в эту папку двойным щелчком — открываем этот файл в редакторе и нажимаем F7 — чтобы скомпилировать этот советник, чтобы его стало видно в папке Metatrader 5.

Тиковые данные в WealthLab со скоростью света! Только тут

              * Галочка "Разрешить импорт DLL": Без неё MT5 даже не чихнет в сторону ZeroMQ. Она должна стоять и в настройках советника, и в Сервис -> Настройки -> Советники.

Тиковые данные в WealthLab со скоростью света! Только тут

             * Окно Брандмауэра Windows. Как только код дойдет до команды socket.Bind, Windows испугается: «Какая-то программа открывает порт 5556!».

Тиковые данные в WealthLab со скоростью света! Только тут

          * Действие: Поставьте галочки и для «Частных», и для «Общественных» сетей. Нажмите «Разрешить».

         * Если окна не было: Значит, DLL даже не загрузилась (см. Шаг 1).

         * Если в журнале MT5 появилось >>> HFT DEBUGGER STARTED — поздравляю, половина пути пройдена. Ваш MT5 теперь вещает как радиостанция.

Тиковые данные в WealthLab со скоростью света! Только тут

Wealth-Lab 6 — это надежная но старая программа, она не понимает современные библиотеки .NET Core — поэтому нужно внимательно подходить к выбору версии ZeroMQ для работы с .Net.

Если вы пойдете на страницу NuGet и качаете самую свежую версию NetMQ (например, 4.0.2.2), пытаетесь добавить её в WL6 и получаете:

ERROR: Не удалось загрузить файл или сборку System.Memory...

Суть проблемы:

Новые версии NetMQ оптимизированы для современных процессоров и требуют библиотеки System.Memory, System.Buffers и т.д. В старом .NET Framework 4.5, на котором работает WL6, их нет.

Самое лучшее решение — это скачать старую версию NetMQ 4.0.0.1 — она идеальна для Wealth-Lab 6.9.

Она уже достаточно современная, чтобы работать быстро, но еще не требует кучи зависимостей.

Вам нужны два файла с NuGet (распаковываем как ZIP):

                1. NetMQ.dll (версия 4.0.0.1)

                2. AsyncIO.dll (версия 0.1.26.0) — Обязательно! NetMQ без неё не живет.

Вы скачали правильные DLL, положили их в папку Wealth-Lab(обычно «C:\Program Files\MS123\Wealth-Lab Developer 6»), пытаетесь добавить Reference… и видите ошибку: «Could not add this Reference… ». Windows ставит на скачанные из интернета DLL «Черную метку» (Zone Identifier). Wealth-Lab видит эту метку и отказывается трогать файл палкой. Как и с прошлыми Dll нужно просто их разблокировать!

Ритуал очищения :

               1. Идем в папку с файлами.

               2. Правой кнопкой на NetMQ.dll -> Свойства.

               3. Внизу ставим галочку «Разблокировать» (Unblock) -> ОК.

               4. Повторяем то же самое для AsyncIO.dll.

               5. И снова добавляем Reference в WL6 — теперь работает!

Тиковые данные в WealthLab со скоростью света! Только тут

Мы начинаем писать саму стратегию в Wealth-Lab, в которой и будет находится наш сервер-слушатель. Но нужно знать нюансы, чтобы не повесить «велс» на вечность.

Каждый раз, когда стратегия пересчитывается, она запускается заново. Если не сделать защиту, вы запустите 10, 20, 100 потоков, которые будут драться за один порт.

Мы используем static переменные. Они живут в памяти, даже когда стратегия перезапускается.

Вот тут код Стратегии, который нужно запустить в WealthLab.

Скопируйте это в редактор стратегий. Не забудьте добавить Reference на NetMQ.dll!

Тиковые данные в WealthLab со скоростью света! Только тут

Мы собрали все компоненты. Пора нажать красную кнопку.

Шаг 1. Запуск Сервера (MT5)

               1. Открываем график (например, RIZ5, M1).

               2. Кидаем на него советника ZmqSender.

               3. Смотрим:

  • В углу графика надпись: ZMQ Streamer Active.
  • Внизу во вкладке «Эксперты»: Sent tick #1, Sent tick #10…
  • Если сообщений нет: Рынок закрыт? (Выходные). Или вы забыли нажать «Разрешить импорт DLL».

Шаг 2. Запуск Клиента (WL6)

             1. Открываем стратегию.

Тиковые данные в WealthLab со скоростью света! Только тут

             2. Вставляем код и файла стратегии.            

             3. Добавляем референсы

Тиковые данные в WealthLab со скоростью света! Только тутТиковые данные в WealthLab со скоростью света! Только тут

              3. Нажимаем F5 (Run Strategy).            

              4. Смотрим:

  • Окно Debug: Initializing ZeroMQ Listener... -> Background task is active.
  • На графике: Зеленая надпись ZMQ STATUS: LISTENING (OK)

Шаг 3. Финал

Сворачиваем все окна. Смотрим на Рабочий Стол.

Там должен появиться файл MT5_WLD_DEBUG.csv.

Откройте его (желательно через Notepad++, чтобы видеть обновления в реальном времени).

Вы должны увидеть вот это:

Тиковые данные в WealthLab со скоростью света! Только тут

Если цифры обновляются — поздравляю!

Вы только что создали очень быстрый-мост между двумя несовместимыми платформами. Вы обошли систему безопасности Windows, победили ад DLL-зависимостей и заставили .NET 4.5 общаться с нативным C++ через ZeroMQ.

Теперь задержка передачи данных составляет всег несколько миллисекунд- это было интересное приключение, но что дальше? 🚀

Если вы приложите достаточно настойчивости можете дойти и до Streaming провайдера и например торговать полу-автоматически совершенно бесплатно!

Либо использовать WealthLab, как продвинутый Xtick в котором за минуту можно «накидать» собственный индекс из акций Сбербанка, Газпрома и Лукойла и смотреть на него как на «поводырь», а также моментально протестировать любую свою идею и на нейронных сетях, тоже!

Вот такую красоту можно получить (если сделать свой провайдер)- тики приходят очень быстро:

Тиковые данные в WealthLab со скоростью света! Только тут

В TsLab фид стоит 60000 руб. в год — но не всем нужно именно алгоритмически торговать свои идеи, поэтому забирайте для полуавтоматической торговли и тестов!

Друзья, ставьте как можно больше плюсиков и добавляйтесь в группу в vk:  vk.com/trading5! Пишите мне в телеграм: @NikolayFly!

Чем больше плюсов — тем чаще я буду писать!

Спасибо за внимание + картинка для правильного вайба!

Тиковые данные в WealthLab со скоростью света! Только тут
2.3К | ★11
#27 по плюсам, #29 по комментариям
11 комментариев
Хорошо, это все прекрасно)))

Практическое использование всего этого как???
Когда комисс биржи стал конский.
Выигрываю миллисекунды.
Ну ладно зачем?
avatar
Байкал, спасибо за комментарий!
Есть такая категория людей, которая хочет торговать полу-автоматически. Им достаточно провайдера данных, чтобы получать алерты и торговать с телефона, например! Я думаю многим скальперам будет полезно иметь такой гибкий инструмент! Конечно, я не буду расписывать полностью, как создать провайдер. А также — этот способ подходит не только для велса но и для других весьма платных программ!
Николай Флёров, понял)
avatar
Полезнейшая статья! Удивительно как много ты раздаёшь всем ценной информации! Большинство людей этого не заслуживают.
avatar
Blade, привет! Спасибо за добром слове! Я надеюсь, что если хотя бы человек 10 сделают себе стриминговый коннектор к велсу, или к другим программам — это будет полезно для их развития и прибыли!

Отличная статья!

Да, WelathLab 6.9 была простой и удивительно хорошей программой. Знаю, что многие до сих пор ею пользуются.

Спасибо, Николай!

avatar
IgorMushtriev, спасибо за приятные слова! Я постарался написать статью максимально подробно, чтобы интересующийся человек — мог бы не только повторить, но и создать на основе этого что-то более мощное и возможно получить себе дополнительный аналог tsLab — без расходов!

а с другой стороны, можно просто все накодить через MQL5 и не париться

avatar
Kuzma Shevelev, спасибо за комментарий! Без сомнений — но я когда пользуюсь metatrader 5 — мне хочется просто написать какой-то отдельный софт, который будет мне показывать performance, как в WealthLab — интуитивно понятный, удобный и приятный для глаз. Или визуализаторы, чтобы посмотреть удобно эквити с просадкой — и тут нужно принять решение — либо доделывать «удобности» вокруг Metatrader 5, либо просто сделать фид в WeakthLab и ничего больше не доделывать!))
Николай Флёров, 
Или визуализаторы, чтобы посмотреть удобно эквити с просадкой
для этого есть эксель ;)
Дмитрий Овчинников, спасибо за комментарий! Тут можно вспомнить и некоторые пакеты на python с разными визуализаторами/дэшбордами. Но все же — красиво:



Читайте на SMART-LAB:
Какие инвестиционные стратегии оказались самыми прибыльными в 2025 году
В 2025 году снижение ключевой ставки и геополитическая неопределённость создали волатильность и почти вернули рынок акций к прошлогодним...
Фото
📈 ̶Д̶е̶н̶ь̶г̶и̶ Рынки любят счет
В ноябре объем торгов фьючерсами на цифровые активы достиг исторического максимума — почти 49 млрд ₽ . Рост интереса связан с волатильностью на...
Фото
$40 млрд «QE-лайт»: почему новая программа выкупа Феда давит на доллар
EUR/USD подбирается к 1.1750, максимальному уровня за два месяца. Рынок увидел в решении Федрезерва куда более асимметричный риск в сторону...

теги блога Николай Флёров

....все тэги



UPDONW
Новый дизайн