Страница 1 из 1

Как научить робота считывать уровень?

Добавлено: 09 дек 2021, 15:06
ZiZ
Может ли робот с указанной периодичностью считывать меняющееся значение уровня?

Хочется сделать так, чтобы вручную передвигать на графике горизонтальный уровень, значение которого автоматически будет подтягиваться в глобальную переменную. Нашёл только как фиксировано прописать уровень в function Initialize() без возможности его динамического изменения.

Задача возникла чисто из соображений удобства. Сейчас приходиться каждый раз отключать робота и править значение в параметрах. :)

Спасибо.

Re: Как научить робота считывать уровень?

Добавлено: 09 дек 2021, 16:45
evge
Уровни и их значения

Levels[0].Level

Из документации

AddLevel (Value, Color, SeriesName)
AddLevel (Value, Color, LineStyle, LineWidth, SeriesName)
– создание уровня. Может быть несколько уровней.
Параметры:
Value – значение по умолчанию
Color – цвет уровня (значения стандартные для MicroSoft)
LineStyle – стиль линии
LineWidth – толщина линии
SeriesName – имя ряда, к которому привязана линия (требуется для определения области, где будет размещена линия)

Пример. Создание уровня в индикаторе.

Код: Выделить всё

  AddLevel(0, Color.Red, "Last");  // Создание уровня со значением 0 в области ряда Last
  AddLevel(70, Color.Red, LineStyles.Dot, 1, "Last"); // задание типа и толщины линии


Пример. Изменение значения и цвета уровня с индексом 0.

Код: Выделить всё

function Evaluate()
{
//Далее в области вычисления можно изменять значение и цвет уровня
Levels[0].Level = 12.0;
Levels[0].Color = Color.Red;

Re: Как научить робота считывать уровень?

Добавлено: 09 дек 2021, 17:28
ZiZ
evge, можно у вас попросить пример простенького кода, в котором робот через ShowMessage() раз в минуту выводит значение одного единственного уровня на графике SBER. Когда передвигаем вручную мышкой этот уровень, то соответственно меняется его значение в сообщении робота. Интересует чисто техническая возможность прочитать значение графического объекта на графике, но не индикатора. По сути это не должно быть проблемой. Терминал внутри себя ведь хранит эту информацию для отображения уровня, например.

Спасибо.

Re: Как научить робота считывать уровень?

Добавлено: 10 дек 2021, 07:48
BugsDigger
Никакого документированного способа обращения к графическим объектам нет.
Разве что гуру найдут недокументированный, но сомнительно, что это возможно.

Как-то коряво можно сделать через чтение файла: создаете файл с единственной цифрой - значением уровня, пишете в него руками, а индикатор считывает. Но возможен конфликт при чтении в момент обновления, неудачное чтение нужно отрабатывать.

Re: Как научить робота считывать уровень?

Добавлено: 10 дек 2021, 14:03
evge
Понятно, созданный не индикатором, а вручную.
Нет, такого не встречал.

Re: Как научить робота считывать уровень?

Добавлено: 13 янв 2022, 15:12
ZiZ
BugsDigger писал(а):Никакого документированного способа обращения к графическим объектам нет.
Разве что гуру найдут недокументированный, но сомнительно, что это возможно.

Как-то коряво можно сделать через чтение файла: создаете файл с единственной цифрой - значением уровня, пишете в него руками, а индикатор считывает. Но возможен конфликт при чтении в момент обновления, неудачное чтение нужно отрабатывать.


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