Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо автору за библиотеку!
Сварганил функции для передачи любых данных. Ниже скрипт показывает их работу на примере тиков
Результат
Супер! По аналогии с Вашим кодом упростил для себя использование библиотеки.
Forum on trading, automated trading systems and testing trading strategies
NamedPipes for metatrader 4
fxsaber, 2017.11.30 14:18
Exchange_Data.mqh
PriceGiver.mq4
PriceTaker.mq4
Run PriceGiver.ex4 and PriceTaker.ex4.
Result
В библиотеке небольшая ошибочка в методе CMemMapFile::Open. Он должен возвращать хэндл файла (тип HANDLE64), но вместо этого возвращает 0 либо код ошибки.
Кроме того, крайне нерационально реализованы чтение и запись. В методах CMemMapApi::Write и CMemMapApi::Read зачем-то сделано двойное перекопирование данных (причём байты перебираются в цикле!), и вдобавок файл перезаписывается/перечитывается целиком, хотя требуется лишь заданный кусок.
В общем я привёл их в нормальный вид, лишнее закомментировано :
Чтобы первая функция компилировалась, нужно расставить const у массивов в функциях memcpyX и memcpy , которые автор не удосужился проставить.Ошибка при копировании больших объемов, из-за нуля, который передается в dwMaximumSizeHigh
Поправил так:
Такой объем - 6 мб, передает без проблем:
Поправил так:
правильно передавать туда старшие 4 байта 8-байтного размера.
Ок, в проге на C# теперь имеем все рэйты и можем с помощью LINQ отлично все что нужно анализировать.
Но есть такой вопрос, а как лучше организовать механизм команд между терминалом и приложением.
От терминала: новая свеча, новые рэйты - забери файл
От приложения: расчет завершен, забери результат (нарисуй на графике, открой сделку)
У кого-нибудь есть опыт подобной реализации взаимодействия терминала и кода?
Ок, в проге на C# теперь имеем все рэйты и можем с помощью LINQ отлично все что нужно анализировать.
Но есть такой вопрос, а как лучше организовать механизм команд между терминалом и приложением.
От терминала: новая свеча, новые рэйты - забери файл
От приложения: расчет завершен, забери результат (нарисуй на графике, открой сделку)
У кого-нибудь есть опыт подобной реализации взаимодействия терминала и кода?
Подскажите, что делать в такой ситуации.
1. Открыл новый файл в памяти на 100 байт.
2. Записал туда 100 байт.
3. Считал в другом советнике 100 байт. Все отлично.
4. Как теперь записать в тот же файл 50 или 200 байт ?