Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Совсем забросил идею связать МТ5 и Квик, остановился только на Квик (DEE server + trans2quik.dll)
Обдумываю реализацию этой программы.
Selector1 постоянно получает данные от DDE сервера и "складирует" их в Storage а так же вызывает функцию OnTick в соответствующем Child.
При вызове GetStorageData должен приостанавливаться DDE сервер и запись в Storage
А по приходу Коллбэка от Selector2 должен приостанавливаться и DDE сервер и запись в Storage и блокиковаться вызов GetStorageData
Т.е. Selector2 имеет высокий приоритет, GetStorageData нормальный, а Selector1 низкий.
Вопросы:
Как грамоотно синхронизировать работу Selector1, Selector2 и GetStorageData?
Может быть есть конкретные примеры токой синхронизации (я никогда не реализовывал подобного)?
Забросил идею связать МТ5 и Квик, остановился только на Квик (DEE server + trans2quik.dll)
Обдумываю реализацию этой программы.
1. Оч правильное решение оставить только Квик.
2. Связь через ДДЕ - оч спорное решение. Многие говорят, что ДДЕ нестабильно, но, не знаю.
На мой взгляд, лучшее и более универсальное решение, это Луа-ДЛЛ-приложение. Я использую этот вариант. Разумеется, дело хозяйское.
1. Оч правильное решение оставить только Квик.
2. Связь через ДДЕ - оч спорное решение. Многие говорят, что ДДЕ нестабильно, но, не знаю.
На мой взгляд, лучшее и более универсальное решение, это Луа-ДЛЛ-приложение. Я использую этот вариант. Разумеется, дело хозяйское.
Я давно написал DDE сервер для Квик - работает без сбоев и достаточно быстро (не медленнее, чем Луа - ДЛЛ),
при этом совсем не обязательно писать дополнительный код на Луа и DDL приёмник данных.
Добалено
Собственно говоря, я уже написал программу изображенную на диаграмее (и она работает), но столкнулся с проблемой синхронизации.
Я давно написал DDE сервер для Квик - работает без сбоев и достаточно быстро (не медленнее, чем Луа - ДЛЛ),
при этом совсем не обязательно писать доаолнительный код на Луа.
Т.к. ДДЕ не занимался, вопрос - как сделан ДДЕ? Вроде там нужно сделать таблицу с данными, а потом ее пустить через ДДЕ.
Тут непонятка с событиями. Что-то изменилось, а через ДДЕ вроде отправляется вся таблица. Или ошибаюсь?
Допустим, ошибаюсь. Тогда как идентифицировать событие на приемной стороне?
Собственно говоря, я уже написал программу изображенную на диаграмее (и она работает), но столкнулся с проблемой синхронизации.
Чего с чем?
С Луа этот вопрос решается коллбэками из ДЛЛ к произвольным данным.
Т.к. ДДЕ не занимался, вопрос - как сделан ДДЕ? Вроде там нужно сделать таблицу с данными, а потом ее пустить через ДДЕ.
Тут непонятка с событиями. Что-то изменилось, а через ДДЕ вроде отправляется вся таблица. Или ошибаюсь?
Допустим, ошибаюсь. Тогда как идентифицировать событие на приемной стороне?
В Квик формируется нужная таблица для вывода.
Запускается свое приложение вулючающее в себе DDE сервер, выводим эту таблицу по DDE
При первом выводе из Квик по DEE передается вся таблица, а затем только строка из таблицы,
в которой произошли изменения.
В самой сторке (она передаётся полностью) есть (у меня например) название инструмента - это и есть идентификатор
Сам DDE сервер несколько строк (у меня на Паскале, но в Инете множество примеров есть на других яззыках)
По названию инструмента создается дочернее окно (как в МТ 5)
Чего с чем?
Я описал проблему в топике с диаграммой
Я описал проблему в топике с диаграммой
Сорри, не сообразил. Если я правильно понял, то:
Имхо, решение - это в качестве Storage применение СУБД, скажем MS SQL Server. Возможно, что это частичное решение.
Второе, применение промежуточных буферов-коллекций, типа последним вошел - первым вышел. Ну, и разделение потоков.
Тогда ничего останавливать не надо, все просто пишется в буфера. Ну, а у СУБД многопользовательский доступ.
Я это все применяю, но с Паскалем не дружу со времен 6-ки.
PS Говорят, что из Паскаля можно использовать NET-библиотеки. Для использования в качестве Storage м.б. имеет смысл применять System.Data, System.Data.DataSet и System.Data.DataTable. Насколько помню, с многопользовательским доступом в DataTable проблем не возникало.
ЗЫ2 Сейчас в качестве БД пытаюсь применять SQLite, но определенных результатов пока нет. И это конечно не СУБД, но в урезанном виде многопользовательский доступ возможен, и есть возможность создания БД в памяти.
Да нет, нужно просто синхронизировать работу 3-х потоков (по сути написать Synchronizer), но
не знаю как.