Страница 4 из 7

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 23 сен 2016, 23:59
Den
Смотрите, у меня сигнал LONG со вчерашнего дня на D по итогу закрытия бара. Заявка висит весь сегодняшний день.

Но сегодняшний бар на D не закрыт , он закроется завтра. и завтра робот исполнит сигнал LONG/

ПОТОМУ ЧТО UseClosedBar==True

Где можно почитать про Evaluate() и OnUpdate() ?

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:13
evge
Den писал(а):Смотрите, у меня сигнал LONG со вчерашнего дня на D по итогу закрытия бара.


Если вы про свой индикатор (который рисует сигнал задним числом [1] на прошлом баре), то сигнала у вас нет и будет он только завтра, поэтому всё верно и правильно.

Индикатор, если вы хотите ориентироваться на его сигналы, рисовать должен их на [0] баре, текущем, а не на предыдущих. Вы так себя вводите в заблуждение!

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:16
evge
Den писал(а):Где можно почитать про Evaluate() и OnUpdate() ?


Вся документация есть на сайте http://alfadirect.ru в разделе

Обучение \ Учебные материалы \ Стратегии и роботы

Терминал 4.0. Скрипты пользовательских индикаторов и стратегий
Документ содержит описание языка и функций для создания пользовательских индикаторов и стратегий.

Терминал 4.0. Стратегии и роботы. Описание
Документ содержит описание работы с основными формами создания, тестирования и запуска робота.

Терминал 4.0. Краткая инструкция по работе со стратегиями и роботами
Документ содержит минимальный объем информации необходимый для корректного создания стратегий, запуска и контроля роботов

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:16
Den
Ну так получается он задним числом -то для робота, а не для нас с вами. У нас бар уже закрыт, а у робота нет, хоть и есть сигнал индикатора.

У робота OnUpdate() не позволяет подать ему заявку на текущем. Потому что у робота UseClosedBar==True

Так?

В общем я понял :lol: Вы все время говорили со мной от лица Робота

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:20
evge
Den писал(а):Ну так получается он задним числом -то для робота, а не для нас с вами. У нас бар уже закрыт, а у робота нет, хоть и есть сигнал индикатора.


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

Den писал(а):У робота OnUpdate() не позволяет подать ему заявку на текущем. Потому что у робота UseClosedBar==True


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

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:25
Den
Нет, ну как Input.Close[1] > Input.Close[0] может быть задним числом-то? Бар [1] закрылся ФИЗИЧЕСКИ. Индикатор сравнивает закрытый бар в текущим и если условие совпадает , то рисует сигнал.

Любой индикатор рисует задним числом. Это вообще самый элементарный.

Какой по-вашему рисует НЕ ЗАДНИМ ЧИСЛОМ?

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:35
evge
Den писал(а):Нет, ну как Input.Close[1] > Input.Close[0] может быть задним числом-то? Бар [1] закрылся ФИЗИЧЕСКИ. Индикатор сравнивает закрытый бар в текущим и если условие совпадает , то рисует сигнал.


Вы показываете УСЛОВИЕ и спрашивает про то, где тут предыдущий бар.

В условии вы сравниваете CLOSE текущего бара (это не обязательно последний, как вы думаете, в этом ваша ошибка) с предыдущим баром [1].

А сигнал рисуете не на текущем, а на предыдущем баре в серии H[1], L[1] !!!

Den писал(а):Какой по-вашему рисует НЕ ЗАДНИМ ЧИСЛОМ?


Любой, другой, который рисует на текущем баре [0] сигнал.

Вам надо понять логику как работает отрисовка индикатора.

[0] это всегда текущий бар (даже все предыдущие это тоже [0])

т.е. относительно каждого из них есть смещение НАЗАД В ПРОШЛОЕ, а это [1] - 1 бар назад, [2] - 2 бара назад и так далее

так вот визуально бары все которые мы видим они все в индикаторе в evaluate() имеют индекс в ряде Input = 0, т.е. они все имеют смещение 0 и функция evaluate() расчет ведет для каждого из них (!!! это принципиально важно!!!), а вот относительно каждого из них мы можем заглянуть в историю со смещением [1],[2],[3] и т.д.

так вот сигналы надо рисовать на [0] баре, а не задним числом, т.е. со смещением в истории назад, как делали вы в сериях H[1], L[1].

НЕ ПУТАЙТЕ

Текущий бар и последний бар

Последний бар так же в evaluate имеет индекс [0], а все стоящие перед ним это [1],[2]... и т.д.
У последнего бара совпадает его CurrentIndex с MaxIndex.

Читайте инструкцию, думаю вопросов станет меньше. Смотрите код других индикаторов.

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:43
Den
Понятно ! Спасибо evge !

Последний простой вопрос - как его заставить подать заявку внутри дневного бара D ? Приведите самый простой пример ?

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:47
Doctor
Den писал(а):В АДу до сих пор запрещена подача заявок внутри бара. Потому что UseClosedBar==True

Да и черт с этим баром. А кто вам мешает вместо одной стратегии завести две которые работают на разных тайфреймах? Пусть одна, например дневная, не торгует, а только отправляет сигналы для второй стратегии. А вторая, эти сигналы исполняет. С точностью хоть до секунды :)

Re: Анонсированное исполнение внутри бара не состоялось

Добавлено: 24 сен 2016, 00:52
evge
Doctor писал(а):А вторая, эти сигналы исполняет


А как наладить их диалог? :)