Обсуждение статьи "Написание биржевых индикаторов с контролем объема на примере индикатора дельты"

 

Опубликована статья Написание биржевых индикаторов с контролем объема на примере индикатора дельты:

В статье рассмотрен алгоритм построения биржевых индикаторов на реальных объемах с использованием функций CopyTicks() и CopyTicksRange(). Также приведены особенности построения таких индикаторов и описаны нюансы их работы в реальном времени и в тестере стратегий.

В терминале реальный объем обозначается просто: "Объем". Он и будет нам интересен, ведь с появлением в терминале доступа к тиковой истории и ленте сделок также появилась возможность писать биржевые индикаторы. С помощью них можно увидеть, что творится "за кулисами", т.е. узнать, из чего состоит реальный объем: сделки какого объема и с какой частотой происходили в тот или иной момент времени, кого было больше в конкретный интервал времени — продавцов или покупателей. Значит, сейчас можно разложить объем на составляющие. Эти данные могут значительно улучшить точность ваших торговых прогнозов. Вместе с тем, корректно написать такой индикатор несколько сложнее, чем обычный. В этой статье будет подробно изложена последовательность и тонкости написания биржевых индикаторов, особенности их работы и тестирования. В качестве примера будет написан индикатор дельты (разности) объемов покупки и продажи, формирующих реальный объем. По мере создания индикатора также будут описываться правила работы с тиковым потоком.

Вот такая картина в итоге получилась. Синий столбец — преобладание покупателей на свече, красный — преобладание продавцов.


Рис. 5. Индикатор дельты на инструменте RTS-6.18.

Оценка реальных объемов открывает большие горизонты для анализа биржевого рынка и позволяет лучше понять движения цены. Данный индикатор — лишь малая часть того, что можно создать на основе анализа тиковых данных. Создание биржевых индикаторов на основе реальных объемов — задача вполне выполнимая. И я надеюсь, что эта статья поможет вам в создании подобных индикаторов и улучшит вашу торговлю.

Автор: Alexey Kozitsyn

 

Поздравляю, Алексей!

Ваш индикатор работает правильно)


 
Dmitriy Skub:

Поздравляю, Алексей!

Ваш индикатор работает правильно)

Рад слышать! Так и задумывалось:)

 
Dmitriy Skub:

Поздравляю, Алексей!

Ваш индикатор работает правильно)


Как удалось проверить?

 
Мне из статьи много чего не понятно, в особенности как новый тик может прийти, но при этом отсутстсвовать будет новый бар? Т.е. новый бар формируется строго после появления тика(а не параллельно), или этот процесс полностью асинхронен? Как часто возникает данная ситуация, просто как то общепринято проверять на появление нового бара, еслли торговля идет по открытию бара, а тут получается, что этот метод будет часто(всегда?) запаздывать?
 
Aleksey Vyazmikin:

Как удалось проверить?

Методом визуального сравнения.


 
Aleksey Vyazmikin:

Как удалось проверить?

Вы можете проверить сами! Просто скачайте индикатор и посмотрите. Суммарный объем на свече должен быть равен сумме объемов покупок и продаж. Объемы Вы можете сравнить открыв окно данных терминала "ctrl+d".

 
Aleksey Vyazmikin:
Мне из статьи много чего не понятно, в особенности как новый тик может прийти, но при этом отсутстсвовать будет новый бар? Т.е. новый бар формируется строго после появления тика(а не параллельно), или этот процесс полностью асинхронен? Как часто возникает данная ситуация, просто как то общепринято проверять на появление нового бара, еслли торговля идет по открытию бара, а тут получается, что этот метод будет часто(всегда?) запаздывать?
Тики в терминале собираются отдельным потоком независимо от работы индикаторов или экспертов. А свечи строятся в другом потоке — в потоке выполнения индикаторов. Эти потоки между собой никак не синхронизированы. После того как тик применен к свече, происходит расчет индикатора. При этом ни один тик не пропускается. Из этого следует, что вызывая функцию CopyTicks(), можно получить более свежие тиковые данные, чем те, что уже применены к барам.
 
Aleksey Vyazmikin:
Мне из статьи много чего не понятно, в особенности как новый тик может прийти, но при этом отсутстсвовать будет новый бар? Т.е. новый бар формируется строго после появления тика(а не параллельно), или этот процесс полностью асинхронен? Как часто возникает данная ситуация, просто как то общепринято проверять на появление нового бара, еслли торговля идет по открытию бара, а тут получается, что этот метод будет часто(всегда?) запаздывать?

Данная ситуация может возникать достаточно часто. Опять таки, скачайте индикатор, включите логирование и ищите в логе терминала следующие строки:

if(inpLog)
   Print(__FUNCTION__,": ВНИМАНИЕ! Тик будущего ["+GetMsToStringTime(_ticks.GetTickTimeMs(i))+"]. Время тика "+TimeToString(_ticks.GetTickTime(i))+
                      ", time[ rates_total-1 ]+PerSec() = "+TimeToString(time[rates_total-1]+PeriodSeconds()));

По поводу проверки на появление нового бара, а также использование индикатора из советника с контролем открытия баров. Все будет точно так же, как и с обычными индикаторами. Просто в советнике должна быть проверка (для текущего символа/периода):

if( BarsCalculated( indicatorHandle ) != Bars( _Symbol, _Period ) )
   return;

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

 
Alexey Kozitsyn:

Вы можете проверить сами! Просто скачайте индикатор и посмотрите. Суммарный объем на свече должен быть равен сумме объемов покупок и продаж. Объемы Вы можете сравнить открыв окно данных терминала "ctrl+d".

Запустил индикатор с настройками по умолчанию, ретроспективный расчет сделался только за сегодняшнее число - TF минутки - почему так?

 
Alexey Kozitsyn:

Данная ситуация может возникать достаточно часто. Опять таки, скачайте индикатор, включите логирование и ищите в логе терминала следующие строки:

По поводу проверки на появление нового бара, а также использование индикатора из советника с контролем открытия баров. Все будет точно так же, как и с обычными индикаторами. Просто в советнике должна быть проверка (для текущего символа/периода):

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

Понял, ситуация частая - причина сего в чём?

Про сформированный бар - нет, меня как раз интересует, как в советнике определить, что пришел новый тик потенциально нового бара, хотя бар ещё не сформирован.

Причина обращения: