Страница 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 раз в час.