Крепкого здоровья и радостей в жизни, уважаемые форумчане!
Хочу обратится к опытным программистам на MQL4 за помощью.
Я решил написать библиотеку, которая будет имитировать неттинг в МТ4. Цель простая - экономия на спредах и свопах. Но столкнулся с сложностью, которую не знаю как преодолеть. Поскольку я хочу чтобы она работала во всех возможных (даже очень маловероятных) условиях, нужно, чтобы записи о виртуальных позициях сохранялись в пространстве, доступном с любого устройства. И сохранялись быстро, наверняка, и без пересечений. Чтобы советник, запущенный на офисном компе мог быть перезапущен на впс без танцев с бубном, и сам узнал свои виртуальные открытые позиции и ордера.
Для этих целей мне показалось логично использовать доступные онлайн сервисы. И первым делом я вспомнил о гугл таблицах.
Сам вопрос - есть ли у кого-то опыт связи MQL-программ и онлайн-сервисов, которые можно использовать для обмена данными между терминалами? Какие еще есть или могут быть созданы решения, которые удовлетворят критериям 1. Физическая запись виртуальных торговых операций, для исключения потерь. 2. Доступность с любого устройства. 3. Исключение пересечений при записи из двух или нескольких программ. 4. Легкость настройки для пользователя программ или библиотеки. Без необходимости создания своих серверов.
Сейчас сам этим занимаюсь, можно скомпоноваться. Вот почитайте для начала https://habrahabr.ru/post/305378/
- habrahabr.ru
Чего куда сохранять и зачем? Какие тут могут быть еще решение? Решение одно - есть открытые ордера, этого достаточно, что бы посчитать совокупный объем и нулевой уровень цены.
По пункту 3
"3. Исключение пересечений при записи из двух или нескольких программ."
есть прием вести БД, записи в которой имеют идентификатор (почти первичный ключ) - целое число (хватит и до 2 миллиардов), выдаваемое каждому пользователю автоматически генератором случайных чисел при добавлении записи. Как-то так, помнится, делали минские разработчики, доложившие свой подход в 1995 на конференции Microsoft Developers Conference в Обнинске. Все удивлялись, как это не будет совпадений, однако работало.
А вообще одновременная правка данных двумя и более приложениями очень сложная задача. Вспомните, ведь критические секции, мьютексы и др. средства помощи разработчику в разграничении доступа к данным опираются на функции ядра типа InterlockedIncrement, на время исполнения которых (процессоры Inlel и AMD) апппаратно блокируется шина памяти. Нешуточное дело. Строго говоря, у задачи нет решения, можно лишь снизить вероятность коллизий. Как, например, было иногда в ж/д кассах - Вам предлагают билет, но пока кассир нажимает кнопку, этого билета уже нет.
Так ли уж нужно, чтобы одновременно на одном счете торговали разные люди? Один-то человек, наверное, не будет одновременно торговать с двух устройств, выберет одно из них. Скажу еще о промежуточном варианте - разделить доступ между пользователями жестко, чтобы исключить одновременную правку одних и тех же данных. Например, один имеет права на работу с одной группой валютных пар, другой с другой группой. Тогда по п.1 и п.2
"1. Физическая запись виртуальных торговых операций, для исключения потерь. 2. Доступность с любого устройства."
Вам подошел бы обычный FTP-сервер. Берете с него на устройство свою БД либо разрешенный ее раздел, правите, кладете снова на FTP-сервер.
"
Вам подошел бы обычный FTP-сервер. Берете с него на устройство свою БД либо разрешенный ее раздел, правите, кладете снова на FTP-сервер.
Сейчас сам этим занимаюсь, можно скомпоноваться. Вот почитайте для начала https://habrahabr.ru/post/305378/
///Чтобы советник, запущенный на офисном компе мог быть перезапущен на впс без танцев с бубном, и сам узнал свои виртуальные открытые позиции и ордера.///
Еще раз для тех, кто в танке. Это можно сделать вообще без танцев с бубнами.
Еще раз для тех, кто в танке. Это можно сделать вообще без танцев с бубнами.
Подробнее, пожалуйста.
Все ордера в терминале, каждый советник их метит магиком. Поэтому никаких проблем для советника, что бы посчитать свою совокупную позицию, что собрать список всех магиков и для каждого из них посчитать свою совокупную позицию, что бы просто посчитать совокупную позицию по всем ордерам.
Подробнее, пожалуйста.
Вся информация есть в истории счета. По ней можно восстановить структуру текущей совокупной позиции. Единственная проблема, что при увеличении истории будет возрастать вычислительная нагрузка на разбор истории. Но это только при первом подключении с конкретного экземпляра терминала к счету - далее можно кешировать результаты по текущую дату в локальных файлах.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Крепкого здоровья и радостей в жизни, уважаемые форумчане!
Хочу обратится к опытным программистам на MQL4 за помощью.
Я решил написать библиотеку, которая будет имитировать неттинг в МТ4. Цель простая - экономия на спредах и свопах. Но столкнулся с сложностью, которую не знаю как преодолеть. Поскольку я хочу чтобы она работала во всех возможных (даже очень маловероятных) условиях, нужно, чтобы записи о виртуальных позициях сохранялись в пространстве, доступном с любого устройства. И сохранялись быстро, наверняка, и без пересечений. Чтобы советник, запущенный на офисном компе мог быть перезапущен на впс без танцев с бубном, и сам узнал свои виртуальные открытые позиции и ордера.
Для этих целей мне показалось логично использовать доступные онлайн сервисы. И первым делом я вспомнил о гугл таблицах.
Сам вопрос - есть ли у кого-то опыт связи MQL-программ и онлайн-сервисов, которые можно использовать для обмена данными между терминалами? Какие еще есть или могут быть созданы решения, которые удовлетворят критериям 1. Физическая запись виртуальных торговых операций, для исключения потерь. 2. Доступность с любого устройства. 3. Исключение пересечений при записи из двух или нескольких программ. 4. Легкость настройки для пользователя программ или библиотеки. Без необходимости создания своих серверов.