Индикаторы. Программное изменение Settings для инициирования OnChangeSettings

Страницы: 1
RSS
Индикаторы. Программное изменение Settings для инициирования OnChangeSettings
 
Добрый день.

Есть основной скрипт, в котором в функции main идет расчет (серверная часть).
Необходимо передать его результат в индикатор (клиентская часть) для отображения на графике, но только в том случае, если значение изменилось.

Сейчас данные для отображения в индикатор передаются при помощи стороннего модуля socket при срабатывании функции OnCalculate в индикаторе. То есть, чтобы отобразить новые данные, индикатор должен обратиться к основному скрипту, и уже тогда основной скрипт отправляет ему данные.
Но так как инструментов торговли пара десятков и для некоторых функция OnCalculate может очень часто срабатывать из-за интенсивности торгов, хотелось бы оптимизировать этот момент.

Из документации вычитал, что в индикаторе всего три функции обратного вызова: OnCalculate, OnChangeSettings и OnDestroy.

Посоветуйте, пожалуйста, как можно оптимизировать данный алгоритм:

1. передачу данных из основного скрипта в скрипт индикатора (без использования файлов)
2. Инициировать передачу данных в индикатор со стороны основного скрипта (уменьшить частоту обращения индикатора к основному скрипту)
3. Есть ли возможность из основного скрипта инициировать событие для функции OnChangeSettings ?
 
Цитата
Илья написал:
Добрый день.


Посоветуйте, пожалуйста, как можно оптимизировать данный алгоритм:

1. передачу данных из основного скрипта в скрипт индикатора (без использования файлов)
2. Инициировать передачу данных в индикатор со стороны основного скрипта (уменьшить частоту обращения индикатора к основному скрипту)
3. Есть ли возможность из основного скрипта инициировать событие для функции OnChangeSettings ?
Уточните:
1) скрипты в разных приложениях, в одном или на разных компьютерах.
2) Предполагаете разрабатывать  функции на C или других языках или только на Lua.
 
1. Основной скрипт и скрипты индикаторов работают внутри одного экземпляра Quik (на одном компьютере)
2. Разработка на отличном от Lua (Qlua) языке не предполагается. Все в рамках возможностей QUIK
 
Цитата
Илья написал:
1. Основной скрипт и скрипты индикаторов работают внутри одного экземпляра Quik (на одном компьютере)
2. Разработка на отличном от Lua (Qlua) языке не предполагается. Все в рамках возможностей QUIK
Тогда единственный вариант это обмен через файлы, то , что Вы не хотите.
Все остальное требует использование сторонних dll , т.е. CИ.
 
Хорошо, с передачей данных между скриптами разобрались.
Остается вопрос оптимизации частоты этой передачи.
Грубо говоря, в основном скрипте расчет происходит после совершения сделки. Частота расчета значительно ниже частоты срабатывания функции OnCalculate.
 
Цитата
Илья написал:
Хорошо, с передачей данных между скриптами разобрались.
Остается вопрос оптимизации частоты этой передачи.
Грубо говоря, в основном скрипте расчет происходит после совершения сделки. Частота расчета значительно ниже частоты срабатывания функции OnCalculate.
можно вычисления внутри onCalculate делать один раз в момент открытия новой свечи.
 
Я делаю так: юзаю lua_share (для использования достаточно знать Lua, хотя сама библиотека написана на дельфи), в сервере пишу через lua_share в общую память, в индикаторах читаю из общей памяти. Ну и наоборот тоже можно. Один сервер на 14 графиков совокупно с 20-ю областями, в каждой из которых используется 2-3 индикатора-потребителя данных.

OnChangeSettings не вызвать просто так.
Страницы: 1
Читают тему
Наверх