А теперь, как использовать созданную в Matlab область памяти MMF из MQL5. Есть файл \MQL5\Include\WinAPI\memoryapi.mqh, в котором разработчики сделали для нас прямой доступ к памяти через Win API.
Я так полагаю, надо сначала запустить программу на Matlab, чтобы она создала в памяти блок, а потом через функцию открыть его через
HANDLE OpenFileMappingW(uint dwDesiredAccess,int bInheritHandle,const string lpName);
Далее создать одну или несколько окон просмотра View через
PVOID MapViewOfFile(HANDLE hFileMappingObject,uint dwDesiredAccess,uint dwFileOffsetHigh,uint dwFileOffsetLow,ulong dwNumberOfBytesToMap);
PVOID MapViewOfFileEx(HANDLE hFileMappingObject,uint dwDesiredAccess,uint dwFileOffsetHigh,uint dwFileOffsetLow,ulong dwNumberOfBytesToMap,PVOID lpBaseAddress);
int UnmapViewOfFile(const PVOID lpBaseAddress);
int UnmapViewOfFileEx(PVOID BaseAddress,uint UnmapFlags);
На сайте есть статьи, поищите по memory mapping. Помню, есть статья, как использовать MMF без DLL. Тогда еще Матаквоты не сделали доступ к WinAPI и автор мучился с трудностями перевода сам. Но будет полезно. Еще для поднятия кармы Рихтера на ночь почитать "Windows для профессионалов".
- 2018.12.05
- karl-bridge-microsoft
- docs.microsoft.com
Не, непонятные и бесполезные ответы лучше отдавать назад в личку.
А вы оказались правы, ни одного вопроса или ответа по техническим вопросам. Зато во флеймовых темах все полный мяу - народ грызется насмерть. И тема по R абсолютно заглохола, никому это не надо. Позавчера написал в телегу один чел, не программист. Порезал личные данные, орфография сохранена. Читаю такое и мне становиться грустно, чел собирается купить индикатор за $250 на основе картинок, все в стиле Герчика - торговля на истории.
------
Пишет ***
я у *** все совы скупил толку нет
а щас этот рекламит
?)
т е вопрос возможно ли этот индикатор сделает ложный селл или бай по картинкам смотрю вроде ошибиться возможно
веть индикатор он быстрее работает чем цена
вообщем не знаю даже стоит ли вкладываться в этот индикатор который написан на пяти индикаторов
а он вот новый индикатор придумал
уже не советник которые ломаються
Alexey Volchanskiy, [17.08.20 09:37]
требуй тест на неделю
Был тут спор на Хабре про убогость синтаксиса Питона. Питонисты люто минусуют тех, кто допускает хоть малейшую критику языка. Но луч света еще пробивается в темном царстве закисших мозгов ))).
Зачем я это все пищу? У меня есть четкое ощущение, что сообщество программистов стремительно расслаивается. Вверх уходят молодые и умные, это пенка, 0.3%. Внизу бродит мелкими пузырьками основная масса. И где-то в стороне своим путем бредут олдскульщики типа меня.
Когда были маленькие, бросили в деревенский туалет пачку дрожжей. Сначала наверх поднялась пенка, потом полезла масса и туалет развалился.
" ... У меня есть четкое ощущение, что сообщество программистов стремительно расслаивается"
так всегда было и так всегда будет (ну или пока не нагрянет https://republic.ru/special/books-21/books/51 ) . Не помню точно в каком из подкастов на youtube канале Lex Fridman один из его гостей рассказывал про битвы между сторонниками первых высокоуровневых языков программирования и приверженцами ассембера. Не менее жаркие споры были при сражении за архитектуру процессоров RISC vs CISC
Хорошая новость в том, что с такими мыслями приходит мудрость, плохая - за ней ковыляет старость )
- 2020.06.29
- www.youtube.com
Мне лично это нужно, но я ничего в этом не понимаю. Мне кажется эта тема сверх-сложной, и при этом, принесёт ли это значительную выгоду, это вопрос. Пока на обычных советниках, в будущем планирую перейти на нейросети. В инете находил инфу, что якобы нейро торгует в среднем на 7% лучше обычных трейдеров, непонятно, откуда это взято. Искал примеры конкретные и не нашел, ну кроме несерьёзных, типа без статистики там. Наверно сидят тихо те, кто сделали. Ну при беглом взгляде, похоже, что всё не так безоблачно, переобученность есть у сетей. Может есть какой то вариант для тугодумов быстро вкатиться? Пытался разобраться в математических выкладках, не разобрался и временно забросил. Я вообще не очень понял зачем там нужно кодирование. По моему можно без кодирования открытый алгоритм сделать, того же самого. Я даже пытался сформулировать алгоритм, но понял что там всё непросто,и тоже отложил. Хочу наладить что-то попроще пока.
Я Matlab использую на Форекс только для моделирования на основе скачанных тиковых данных. Можно бы и на R, в MT5 даже есть какая-то его поддержка, но я давно работаю с Matlab, а R знаю плохо. Вдобавок, если перевести программу Matlab в MEX или EXE файлы, скорость увеличивается в десятки раз. А эти два пакета хороши тем, что содержат кучу модулей по обработке данных, не надо ничего писать руками. Matlab можно легко подключить к советнику на MQL5, сделав из него 64-бит DLL. Единственный минус — отпадает Маркет, там DLL нельзя.
Насчет математики, не обязательно ее хорошо знать, главное, понимать суть, а что и как считается внутри пакета Matlab, все равно в большинстве случаев закрыто.
Я взаимодействие с матлабом решил на простой основе ;)
Написал сервис для MT5, который работает как сервер, а для матлаба на мехфайлах врапперы вокруг этого, которые просто шлет сетевые запросы к этому сервису в MT5 со своим протоколом, который их и исполняет и возвращает результаты. Причем, сервис внутри MT5 еще и многопоточный. То есть может отрабатывать несколько запросов от нескольких матлабов одновременно. В смысле, учитывая многопоточность MT5, он одновремено именно несколько MT5 функций может вызывать из разных потоков.
Ну и обратное тоже реализовал в какой-то степени, когда внутри матлаба висит фоном сервис, и принимает всякое от MT5, когда MT5 инициатор коммуникации: нотификации, команды на построение графиков и тд.
Вышла целая экосистема, этакий MT5-Matlab connector :)
Я взаимодействие с матлабом решил на простой основе ;)
Написал сервис для MT5, который работает как сервер, а для матлаба на мехфайлах врапперы вокруг этого, которые просто шлет сетевые запросы к этому сервису в MT5 со своим протоколом, который их и исполняет и возвращает результаты. Причем, сервис внутри MT5 еще и многопоточный. То есть может отрабатывать несколько запросов от нескольких матлабов одновременно. В смысле, учитывая многопоточность MT5, он одновремено именно несколько MT5 функций может вызывать из разных потоков.
Ну и обратное тоже реализовал в какой-то степени, когда внутри матлаба висит фоном сервис, и принимает всякое от MT5, когда MT5 инициатор коммуникации: нотификации, команды на построение графиков и тд.
Вышла целая экосистема, этакий MT5-Matlab connector :)
тестер стратегий не работает ?
если не работает, то не экосистема (((
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Получил письмо в личку от форумчанина. Я считаю, если вопрос не про баб, а про программирование, то надо писать его на форум, зачем впадать в грех переписки?
Цитирую переписку:
Прочитать напрямую никак, можно:
1. Записывать ее в файл через mql5, в матлабе читать
2. Использовать memory mapping
1) у меня через RAM диск совмещенный с windows10 через mklink - по вашему совету (и еще кто-то забыл ко стыду).
Видимо это и есть memory mapping в матлаб - в справке матлаба именно так.
Все ок, но из-за частого открытия -закрытия файла процы грузятся до 13% вместо 3% - там же нет арифметических операций. Ерунда получается. Просил брокера дать прямую ссылку для слива котировок мимо МТ5 - пока не ответили.
2) если есть другая версия memory mapping можно ли подробнее?
3) Знаете я тоже в матлаб давно - с 2000г до этого фортраны и проч. А вы еще и системщик что симпатично. Если не отфуболите, будете в курсе если интересно.
---------------------------------------
Спецом прочитал справку, там ни слова про RAM диск. Это вообще отдельная программа стороннего производителя.
Забыл сказать еще способ - можно загружать программу MQL5 Matlab DLL, делается она очень просто средствами Matlab. Но если юзать на другом компе, надо ставить туда Matlab RTL, она есть в поставке, в справке все описано.
Накидал примерчик, как в Matlab r2020a SP4 работать с memory mapping. В нем надо сначала создать файл на диске, а потом замэпить его в память. На Win API такие извраты не требуются. Сам MMF придется создавать в Matlab, а в MQL5 использовать функции WinAPI, об этом в конце.