Отображение на графике минимально/максимально возможной цены фьючерса

Страницы: 1
RSS
Отображение на графике минимально/максимально возможной цены фьючерса
 
Добрый день.
Пытаюсь написать индикатор, который выводит на график линии минимально возможной и максимально возможной цены фьючерса. Код сейчас выглядит так:

Код
Settings =
{
  Name = "MinMaxOrderPrice",
  line =
  {
    -- цвет и толщина максимально возможной цены
   {Name = "Max order price", Color = RGB (255, 128, 64), Type = TYPE_LINE, Width = 2},
   -- цвет и толщина минимально возможной цены
    {Name = "Min order price", Color = RGB (0, 128, 128), Type = TYPE_LINE, Width = 2}
  }
}

function Init()
   -- код инструмента
   sec_code = "RIH9"

   -- код класса инструмента
   class_code = getSecurityInfo("",sec_code).class_code

   -- получение значения максимально возможной цены
   MaxOrderPrice = getParamEx (class_code, sec_code, "PRICEMAX").param_value

   -- получение значения минимально возможной цены
   MinOrderPrice = getParamEx (class_code, sec_code, "PRICEMIN").param_value
   
   return 2 -- кол-во линий
end

function OnCalculate (index)
   return MaxOrderPrice, MinOrderPrice

end

При добавлении индикатора на график, линии рисуются, вроде все работает, но есть две проблемы:
1. после клиринга линии не перемещаются, хотя цены в таблице изменились. Насколько я понимаю, то вывод MaxOrderPrice и MinOrderPrice должен происходить непрерывно, т.к. используется функция OnCalculate. Или я не прав? Как сделать, чтобы линии перемещались в случае изменения мин/макс цен?
2. возможно ли прописать в коде, чтобы индикатор брал код инструмента (sec_code) именно с того графика, на который его установили?

Заранее спасибо.
 
Самый лучший вариант - это построить в квике график истории параметров min возм цена и макс возм цена.  программировать не нужно.
 
Спасибо за ответ.
Если вы имеете в виду такой вариант (правый_клик > добавить_график (индикатор) > новый > тип_источника_данных изменить > история_значений_параметра), то я его пробовал, но к сожалению у меня этот график не рисуется. В таблицу эти данные выводятся, а вот на график — нет, хотя по идее должны. Пробовал их выводить в отдельном окне, тоже безрезультатно  :what: . Версия квика — 7.19.3.1, брокер Сбер.
Прикладываю скрин https://imgur.com/m9Mn3Gu
 
Закажите получение этих параметров с сервера.

если не понятнл, как это сделать - обращайтесь к брокеру, помогать в таких вопросах есть его прямая обязанность.
 
Перенесите получение MaxOrderPrice и MinOrderPrice из Init в OnCalcculate. чтоб возникла динамика. Init - разовая функция.  
 
Цитата
Борис Гудылин написал:
Перенесите из Init в OnCalculate.

Благодарю. Теперь линии меняются  :wink:
А по второму вопросу нет решения? Или возможно вы знаете, каким образом сделать назначение переменной sec_code из настроек, при условии, что я ее пропишу в разделе Settings?
Я посмотрел код разных индикаторов в надежде найти подобную конструкцию, но не нашел подобного.
 
Можно и в Settings прописывать, а можно и явно к текущему графику привязать, например:

function OnCalculate (index)
  if index == 1 then
    ds=getDataSourceInfo()
    class_code=ds.class_code
    sec_code=ds.sec_code
  end

  -- получение значения максимально возможной цены
  MaxOrderPrice = getParamEx (class_code, sec_code, "PRICEMAX").param_value

  -- получение значения минимально возможной цены
  MinOrderPrice = getParamEx (class_code, sec_code, "PRICEMIN").param_value
 
  return MaxOrderPrice, MinOrderPrice

end
 
Спасибо, Борис. Привязал к текущему графику. Сейчас работает как надо.
Страницы: 1
Читают тему (гостей: 1)
Наверх