Страница 1 из 2
Как передать значение из робота в индикатор?
Добавлено: 20 янв 2018, 16:14
Arteshka
Можно ли, если можно то как передать значение из робота в индикатор?
Re: Как передать значение из робота в индикатор?
Добавлено: 20 янв 2018, 16:29
evge
Добавить доп. параметры в индикаторе и передавать их из стратегии.
Если индикатор встроенный, сделать ещё один пользовательский с нужными доп. параметрами.
Re: Как передать значение из робота в индикатор?
Добавлено: 20 янв 2018, 22:14
oxi
Посмотрите стратегию Invest_Grid из Библиотеки, там индикатор рисует уровни покупки и продажи для стратегии
Re: Как передать значение из робота в индикатор?
Добавлено: 21 янв 2018, 23:58
Arteshka
Спасибо ребят за подсказки.Но въехать я чего-то не могу.
Если есть у Вас минутка и желание, можете накидать коротенький код с пояснениями, если нет, то нет.
На всякий случай напишу легенду. Робот получает значение от линии индикатора. Затем сверяет его со вчерашней свечей и если вчерашний High больше значения индикатора, тогда передает индикатору новое значение( вчерашний High). Индикатор рисует линию ( вчерашний High).
Re: Как передать значение из робота в индикатор?
Добавлено: 22 янв 2018, 19:49
oxi
Пример уже написан в стратегии Invest_Grid
Создаете индикатор PlotLine с входным параметром Price, который указывает, где рисовать линию
PlotLine(Price)
Код: Выделить всё
function Initialize()
{
IndicatorName = "PlotLine";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("PlotLine", DrawAs.Line, Color.Red);
AddParameter("Price", 20);
AddLevel(0, Color.Red, "PlotLine");
}
function Evaluate()
{
Levels[0].Level = Price;
}
Далее создаете стратегию и указываете в инициализации
Код: Выделить всё
AddGlobalVariable("MinPrice", Types.Double, 0);
AddChartIndicator("MY.PlotLine", new Dictionary <string, string>{ {"Price", "Price"} });
И в OnUpdete()
Меняете значение Price
Re: Как передать значение из робота в индикатор?
Добавлено: 22 янв 2018, 20:13
evge
Зависит всё от того, что подразумевалось под вопросом передать значение в "Индикатор" из робота, т.к. для какой цели не указано, а это может быть:
Передача в индикаторы доп. параметров для каких-то расчетов в самом индикаторе и возврате сери(и,й) из индикатора для дальнейшего анализа и выполнения действий в стратегии.
или
Передача параметров в индикаторы, которые нужно отрисовать из стратегии на графиках через AddChartIndicator().
или
и то и другое

Re: Как передать значение из робота в индикатор?
Добавлено: 23 янв 2018, 14:57
Arteshka
Никак.
Код индикатора( взят выше ) работает и показывает значение которые ему задаю:
Код: Выделить всё
function Initialize()
{
IndicatorName = "PlotLine";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("PlotLine", DrawAs.Line, Color.Red);
AddParameter("Price", 20);
AddLevel(0, Color.Red, "PlotLine");
}
function Evaluate()
{
Levels[0].Level = Price;
}
код робота который вызывает индикатор для отрисовки:
Код: Выделить всё
function Initialize()
{
StrategyName = "Robot";
AddParameter("P1", 0, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 0;
ShortLimit = 0;
AddGlobalVariable("Price", Types.Double, 0);
AddChartIndicator("MY.PlotLine", new Dictionary <string, string>{ {"Price", "Price"} });}
function OnUpdate()
{
Price=GetAsk();
ShowMessage("!!!!!!!!");
}
Что не так не мойму?
Re: Как передать значение из робота в индикатор?
Добавлено: 23 янв 2018, 15:49
evge
Проверил, ничего в коде не менял.
Работает. На графике привязанном к роботам отобразился PlotLine индикатор и уровень бегает за ценой Ask.
Может вы ждете что он будет бегать в отдельном графике никак не связанном с вашим роботом?
Нажмите кнопку "График" в диспетчере роботов у запущенного робота, или свяжите график с диспетчером через группу (одинаковый значек слева окна (кроме кружка))
Re: Как передать значение из робота в индикатор?
Добавлено: 23 янв 2018, 16:28
Arteshka
Спасибо Вам большое oxi, evge! Без Вашей помощи разбирался бы наверное годы:).
Сделал привязку-связь у диспетчера роботов все пошло!
Еще вопрос тоже в тему.
Можно вторым роботом получать значения передаваемые в этот индикатор первым роботом? То есть как бы связь между роботами через индикатор.
Re: Как передать значение из робота в индикатор?
Добавлено: 23 янв 2018, 16:30
evge
Учтите ещё то, что в зависимости от таймфрейма вашего робота будет и меняться в индикаторе уровень.
Т.к. OnUpdate() вызывается по таймфрейму робота.
Я ставил 5 сек у робота.
Т.к. если поставить 1 час, то и изменения мы увидим не чаще чем 1 раз в час.