Предлагаю сделать два кубика импорт и экспорт, которые будут теле портировать любые поданные на них данные.
Смысл этих кубиков заключается в передаче информации от одного кубика к другому в разных скриптах.
Уже сделано. Доступ к этому функционалу -- через API.
Почему через API? Потому что только Вы можете сформулировать что Вам надо для счастья.
Называется это "
Глобальный кеш".
1. Создаём кубик на базе интерфейса IContextUses.
2. В методе Execute говорим:
Context.StoreGlobalObject(...)
Метод принимает 3 аргумента:
-
key -- это строковый идентификатор сохраняемого значения (уникальное для всей программы имя)
В частности, это может быть имя Вашего кубика -- это Вы сами решаете что будет Вашим ключем.
-
data -- тип object. То есть это ЛЮБОЙ объект в терминах C#.
Хоть коллекция, хоть список, хоть кот в сапогах.
-
toStorage -- если true -- Ваши данные будут сохранены на жесткий диск (их для этого надо пометить как [Serializable]).
false -- значит значение хранится только в памяти.
Это был "Блок экспорта".
Теперь "Блок импорта".
1. Также на базе интерфейса IContextUses
2. В методе Execute говорим:
Context.LoadGlobalObject(...)
Метод принимает 2 аргумента:
-
key -- это строковый идентификатор сохраняемого значения (уникальное для всей программы имя). То самое, которое мы обсуждали для первого блока.
-
fromStorage -- если true -- Ваши данные будут считаны с жесткого диска, если их ещё нет в памяти в этот момент.
false -- просто возвращаем то, что есть в памяти.
Теперь сложности (почему пока что нет стандартного решения):
1. Вам нужно принять решение, хотите Вы иметь число для каждого бара или одно число на всю серию данных?
2. Что Вы будете делать при тестировании на истории?
3. Что делать, если потребитель и поставщик живут в разных таймфреймах?
ПС Передача чиселок между роботами у меня сделана на примере пары блоков
HV -- GlobalHV;
IvOnF -- GlobalIV.
А ещё если Вы случайно по ошибке сделаете 2 поставщика данных с одинаковым именем -- они начнут конфликтовать...
Один будет пихать в кеш массу, а второй -- скорость...