Общие вопросы по разработке > А в АД4 можно трейсить?

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
nik7799
Сообщения: 6
Зарегистрирован: 31 мар 2017, 11:52

А в АД4 можно трейсить?

Непрочитанное сообщение nik7799 » 13 апр 2017, 20:14

Добрый вечер!

А можно ли в АД4, пошагово выполнять программу-робота, получая какие-то промежуточные результаты?

Заранее спасибо.

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

Re: А в АД4 можно трейсить?

Непрочитанное сообщение evge » 14 апр 2017, 06:46

Отладки нет. Можно писать в log файл данные.
никогда такого не было и вот опять

nik7799
Сообщения: 6
Зарегистрирован: 31 мар 2017, 11:52

Re: А в АД4 можно трейсить?

Непрочитанное сообщение nik7799 » 19 апр 2017, 23:09

Подскажите как передать из индикатора (NRTRm) в робот признак Current "true/false" и вывести его в лог?
У меня в лог вываливается просто - "не число".

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

Re: А в АД4 можно трейсить?

Непрочитанное сообщение evge » 20 апр 2017, 06:24

nik7799 писал(а):Current "true/false" и вывести его в лог?


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

LogData(String.Format("{0}", Current), IndicatorName);


или

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

LogData(Current.ToString(), IndicatorName);


или

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

LogData("" + Current, IndicatorName);


Все варианты проверил, выдают в лог: True, False

2017.04.20 07:18:47.022 False
2017.04.20 07:18:47.022 False
2017.04.20 07:18:47.022 False
2017.04.20 07:18:47.022 False
2017.04.20 07:18:47.022 True
2017.04.20 07:18:47.022 True
2017.04.20 07:18:47.022 True
никогда такого не было и вот опять

nik7799
Сообщения: 6
Зарегистрирован: 31 мар 2017, 11:52

Re: А в АД4 можно трейсить?

Непрочитанное сообщение nik7799 » 20 апр 2017, 21:50

Если в индикатор встраивать лог, все работает.
А у меня не получается затянуть это значение из индикатора в робот и уже в нем оперировать с логом и данным флагом.

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

Re: А в АД4 можно трейсить?

Непрочитанное сообщение evge » 21 апр 2017, 07:24

nik7799 писал(а):затянуть это значение из индикатора в робот


Только серии доступны в стратегиях / роботах из индикаторов.
Для этого надо из глоб. переменных current перенести в серии или добавить дополнительно к глоб. переменной current ещё и серию, которая будет дублировать там значения глоб. переменной.

Но в сериях нет значений boolean. Можно писать туда -1 (при false) и 1 (при true), и проверять > 0 или < 0 уже в стратегии.
никогда такого не было и вот опять

nik7799
Сообщения: 6
Зарегистрирован: 31 мар 2017, 11:52

Re: А в АД4 можно трейсить?

Непрочитанное сообщение nik7799 » 23 апр 2017, 14:09

Спасибо, так и сделал, добавил серию с присвоением по условию (-1) или (1).

Только пришлось изменить размерность (-0.1/+0.1), иначе графики бумаг с низкой стоимостью вытягивались в "дудочку".

Еще вопрос. Как организовать цикл проверки (подтверждения правильности) некоего действия?
К примеру, по неким критериям сработал EnterShort (Присваиваю FlagShort = X) и мне необходимо в течении следующих X периодов проверять по параметрам правильность этого действия и закрывать шорт (CloseShort) если нет подтверждения.
Если ввожу AddGlobalVariable как количество проверочных периодов Х, он сбрасывается при следующем периоде.

Какую переменную можно использовать чтобы она не сбрасывалась и работала в OnUpdate?

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

Re: А в АД4 можно трейсить?

Непрочитанное сообщение evge » 23 апр 2017, 16:43

nik7799 писал(а):Только пришлось изменить размерность (-0.1/+0.1), иначе графики бумаг с низкой стоимостью вытягивались в "дудочку".

Серию можно выводить в отдельную область, она не будет влиять на график. В новых версиях АД4 будет возможность рисовать Shadow серию (фоновую). Ещё лучший вариант это скрыть визуализацию серии, см. документацию по скриптам (Терминал 4.0. Скрипты пользовательских индикаторов и стратегий.doc)

AddSeries(Name)
AddSeries(Name, Type, Color)
AddSeries(Name, Type, Color, Visible)
AddSeries(Name, Type, Color, Visible, Axes)
AddSeries(Name, Type, Color, AxisType)
AddSeries(Name, Type, Color, AxisType, Visible, Axes)
– создание выходного ряда, можно добавлять несколько.
Параметры:
• Name – имя выходного ряда.
• Type – константа, определяющая вид отображения выходного ряда:
o DrawAs.Line – линия;
o DrawAs.Histogram – гистограмма.
o DrawAs.Custom – произвольный метод рисования (определяется в области вычисления индикатора).
• Color – цвет линии, гистограммы (значения стандартные для MicroSoft).
• Visible – видимый ряд или нет:
o true (массив используется как выходной ряд);
o false (массив используется как скрытый ряд)
• Axes – область отображения ряда // Не сохраняется в конфигурацию
o Axes.Parent – ряд отображается в области входного ряда
o Axes.New – ряд отображается в отдельной области
• AxisType – опорная ось для рисования гистограммы и областей
o AxisType.Default – ряд отображается по умолчанию
o AxisType.ZeroBased – ряд масштабируется относительно нуля

nik7799 писал(а):Еще вопрос. Как организовать цикл проверки (подтверждения правильности) некоего действия?
К примеру, по неким критериям сработал EnterShort (Присваиваю FlagShort = X) и мне необходимо в течении следующих X периодов проверять по параметрам правильность этого действия и закрывать шорт (CloseShort) если нет подтверждения.
Если ввожу AddGlobalVariable как количество проверочных периодов Х, он сбрасывается при следующем периоде.

Какую переменную можно использовать чтобы она не сбрасывалась и работала в OnUpdate?

AddGlobalVariable - правильный вариант. Чтобы понять почему не работает, нужно видеть код.
Например, при возникновении сигнала сохраняем CurrentIndex в данную глоб. переменую.
В последующем, можно рассчитать количество баров от текущего бара до сигнального, для этого достаточно вычислить разность CurrentIndex - глоб. переменная и сравнить полученное значение с нужным параметром или числом.
никогда такого не было и вот опять

nik7799
Сообщения: 6
Зарегистрирован: 31 мар 2017, 11:52

Re: А в АД4 можно трейсить?

Непрочитанное сообщение nik7799 » 23 апр 2017, 22:46

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


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

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

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