Общие вопросы по разработке > Как научить робота считывать уровень?

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
ZiZ
Сообщения: 36
Зарегистрирован: 19 ноя 2019, 15:32
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Непрочитанное сообщение ZiZ » 09 дек 2021, 15:06

Может ли робот с указанной периодичностью считывать меняющееся значение уровня?

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

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

Спасибо.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

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

Непрочитанное сообщение evge » 09 дек 2021, 16:45

Уровни и их значения

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;
никогда такого не было и вот опять

ZiZ
Сообщения: 36
Зарегистрирован: 19 ноя 2019, 15:32
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Непрочитанное сообщение ZiZ » 09 дек 2021, 17:28

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

Спасибо.

BugsDigger
Сообщения: 533
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 91 раз

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

Непрочитанное сообщение BugsDigger » 10 дек 2021, 07:48

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

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

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

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

Непрочитанное сообщение evge » 10 дек 2021, 14:03

Понятно, созданный не индикатором, а вручную.
Нет, такого не встречал.
никогда такого не было и вот опять

ZiZ
Сообщения: 36
Зарегистрирован: 19 ноя 2019, 15:32
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Непрочитанное сообщение ZiZ » 13 янв 2022, 15:12

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

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


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


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей