Синхронизация mql5 и c++ реализаций классов. - страница 6

 
Aleksey Nikolayev:
Как правильно организовать синхронность с++ и mql5 реализаций одного и того же набора классов? Возможно, вопрос уже разбирался на форуме или в статьях, но не нашёл.

Не вижу никаких проблем. Оборачиваешь API терминала в свой виртуальный интерфейс, и дальше уже все действия совершаешь именно через этот интерфейс.

Если нужно перенести на другой терминал, платформу, ещё что-то - пишешь для нее реализацию этого виртуального интерфейса, всё остальное - начинает работать после перекомпиляции.

В чём проблема-то?

 
sibirqk #:

ROOT хорошо дружит с питоном, MQL - тоже. Может использовать питон как прослойку?

Тогда получается что вся торговая логика в питоне, поскольку из mql5 нельзя (простым способом) обратиться к питону. Но тогда получается что ROOT особо и не нужен, потому что в питоне всё и так уже есть - интерпретатор, графика, анализ данных.

Но идея торговать в питоне не особо привлекает. Поэтому идея в том, что советники на mql5, а ROOT - лишь как средство для отладки кусков mql5 кода со сложной логикой.

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

 
Aleksey Nikolayev #:

Тогда получается что вся торговая логика в питоне, поскольку из mql5 нельзя (простым способом) обратиться к питону. Но тогда получается что ROOT особо и не нужен, потому что в питоне всё и так уже есть - интерпретатор, графика, анализ данных.

Но идея торговать в питоне не особо привлекает. Поэтому идея в том, что советники на mql5, а ROOT - лишь как средство для отладки кусков mql5 кода со сложной логикой.

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

Почему тогда R не использовать вместо ROOT-а? Вроде же сопоставимые вещи по части анализа и визуализации. И для R вроде есть прокладка от СанСаныча.
 
Georgiy Merts #:

Не вижу никаких проблем. Оборачиваешь API терминала в свой виртуальный интерфейс, и дальше уже все действия совершаешь именно через этот интерфейс.

Если нужно перенести на другой терминал, платформу, ещё что-то - пишешь для нее реализацию этого виртуального интерфейса, всё остальное - начинает работать после перекомпиляции.

В чём проблема-то?

Который раз уже пишу, что нет идеи переноса в другую платформу (пока нет, по крайней мере). Так же нет идеи сопряжения МТ5 с какой-либо другой средой или платформой.

Есть идея создания более комфортной среды для отладки логики кода. ИМХО, такая среда должна быть а) интерпретатором, б) обладать языком максимально похожим на mql5, в) желательно обладать богатыми возможностями по анализу данными. По этим требованиям подходит ROOT. Остаётся "причесать" mql5 код, чтобы его куски можно было безболезнено перетаскивать из ME в ROOT и обратно. Нет никаких глобальных идей по переписыванию чего-либо.

 
sibirqk #:
Почему тогда R не использовать вместо ROOT-а? Вроде же сопоставимые вещи по части анализа и визуализации. И для R вроде есть прокладка от СанСаныча.

R не подходит для кастомной генерации таблицы признаков - слишком медленный. Да и размещение всей этой конструкции на VPS не внушает доверия. В идеале, итогом должен быть чистый *.ex5 файл, без всяких дополнений, а иначе не взлетит.

Тема ветки же про этап разработки.

 
Aleksey Nikolayev #:

Который раз уже пишу, что нет идеи переноса в другую платформу (пока нет, по крайней мере). Так же нет идеи сопряжения МТ5 с какой-либо другой средой или платформой.

Есть идея создания более комфортной среды для отладки логики кода. ИМХО, такая среда должна быть а) интерпретатором, б) обладать языком максимально похожим на mql5, в) желательно обладать богатыми возможностями по анализу данными. По этим требованиям подходит ROOT. Остаётся "причесать" mql5 код, чтобы его куски можно было безболезнено перетаскивать из ME в ROOT и обратно. Нет никаких глобальных идей по переписыванию чего-либо.

Понял, дошло наконец-то! Тугодум я )): 

Ну тогда только - опыт, сын ошибок трудных. Скурпулезно проверять что в  ROOT-е и MQL-е работает одинаково, а что поразному.

 

есть такие штуки, называются intermediate database(или software). Например RedisAI https://oss.redis.com/redisai/ и получаете хорошую масштабируемость и гибкость. Остаётся только данные вливать, а считать можно в облаках и кластерах. Но не будет работать на VPS (только на полной WinVDS)

RedisAI ¶
  • oss.redis.com
RedisAI is a Redis module for executing Deep Learning/Machine Learning models and managing their data. Its purpose is being a "workhorse" for model serving, by providing out-of-the-box support for popular DL/ML frameworks and unparalleled performance. RedisAI both maximizes computation throughput and reduces latency by adhering to the principle...
 
Maxim Kuznetsov #:

есть такие штуки, называются intermediate database(или software). Например RedisAI https://oss.redis.com/redisai/ и получаете хорошую масштабируемость и гибкость. Остаётся только данные вливать, а считать можно в облаках и кластерах. Но не будет работать на VPS (только на полной WinVDS)

Глобальные решения вызывают что-то вроде аллергии) Сразу вспоминается анекдот про "а теперь попробуем со всем этим взлететь")

В идеале, всё должно быть впихнуто в ONNX модель, которая впихивается в екзешник советника как ресурс. Но пока это практически недостижимо.

 
sibirqk #:

Понял, дошло наконец-то! Тугодум я )): 

Ну тогда только - опыт, сын ошибок трудных. Скурпулезно проверять что в  ROOT-е и MQL-е работает одинаково, а что поразному.

Если технология плохо понятна, то значит труднореализуема - не раз уже убеждался в этом. Но немного поковыряться в этом направлении попробую.
 
Aleksey Nikolayev #:

Глобальные решения вызывают что-то вроде аллергии) Сразу вспоминается анекдот про "а теперь попробуем со всем этим взлететь")

В идеале, всё должно быть впихнуто в ONNX модель, которая впихивается в екзешник советника как ресурс. Но пока это практически недостижимо.

анекдот про "а теперь попробуем со всем этим взлететь это как раз про "сделать кусок C++ туда-сюда совместимый с MQL" :-) 

на мой взгляд, вы не вполне правы. 

технически всё впихивается в контейнер ONNX или подобный и рассчётная часть это всё дело решает/считает. Даже более того части которые источник данных, потребитель результата (исполнятор) и собственно рассчёт могут (и должны) быть автономны друг от друга. Ведь модель постоянно совершенствуется, это непрерывный процесс - при разделении ролей, ONNX перезаливается в рассчет и это не влияет на качество и стабильность источника данных и исполнятора. 

Упихнуть большую рассчётную часть в один экзешник - это тупик,фиаско; сами же убедились что рассчёты могут быть долгие и требовать существенных вычислительных ресурсов, на одной машине хоть обвешанной спец-картами это не сделать.