Давайте обсудим алгоритм построения уровней..

 

Я уже написал почти индикатор построения уровней. Индикатор очень замороченный и зависимостей не мало. Логика не стандартная, поэтомупользоваться тем, что можно найти - нельзя.

Остался один единственный момент, который хочется обсудить. Суть в том, что есть уровни, которые уже отработанны индикатор не должен принимать в рассчёт и, если нужно, рисовать тоже не должен.. Поэтому этот момент нужно как-то учитывать. У меня логика сложнее, но, что бы не напрягать никому мозг, проще представить, что исторические уровни это экстремумы зиг-зага.

Уровни

Суть в том, что как можно оптимально отобрать отработанные уровни от не отработанных. Т.е. отработанные уровни не отрисовывать (пропускать их). На данный момент, я придумал, при переборе баров от 0-го индекса к последнему (хотя там не последний, а время бара, до которого мы перебираем т.к. уровни находящиеся слишком далеко от настоящего не так актуальны) если появляется экстремум, запоминать его цену. А дальше, пока цена ныряет в откат пока цены(если рассматривается экстремум из нижних) выше запомненной цены, мы пропускаем все бары.

Для большего понимания своих мыслей привожу скриншот с описаием этой ситуации.

Пояснение к отрисовке уровней по нижним экстремумам

Но это ситуация когда отрисовываются лишь уровни по нижним экстремумам. А нужно и п оверхним тоже. Так вот сложность в том, что нужно понять как определять какой сейчас экстремум - нижний или верхний, а дальше анализировать бары и сравнивать их цену с ценой самого экстремума. Это как-бы просто, но это единственный вариант или можно ещё как-то? Может кто-то подобное писал..

Ведь если заглянуть в будущее, то придётся ещё удалять уровни по мере их отработки. А это тоже вопрос.. Не хочется перегружать логику.

 

Начинать построение нужно с прошлого в будущее, тогда по ходу можно сразу определить, что пробито, а что нет.

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

Потом, на каждом тике проверяем только "живые" уровни.

1

 
Taras Slobodyanik:

Начинать построение нужно с прошлого в будущее, тогда по ходу можно сразу определить, что пробито, а что нет.

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

Потом, на каждом тике проверяем только "живые" уровни.


Согласен. В данном случае, удобнее анализировать с прошлого к настоящему. Да, как я и думал, проще не будет. Придётся создать массив структур, например, и оперировать данными..

Тока вот момент. Нам же нужно отработанные уровни, которые стали отработанными не при первом анализе баров при запуске индикатора, а после.. сделать отработанными в последствии. Как я понимаю, мы будем сверять последнюю поступившую цену с последним записанным в массив ценой и если цены выше или ниже последней записанной цены в массиве, то этот уроень помечаем отработанным и он станет как на скрине пунктирным и массиве помечен "отработанным". Верно?

 
Viktar Dzemikhau:

Тока вот момент. Нам же нужно отработанные уровни, которые стали отработанными не при первом анализе баров при запуске индикатора, а после.. сделать отработанными в последствии. Как я понимаю, мы будем сверять последнюю поступившую цену с последним записанным в массив ценой и если цены выше или ниже последней записанной цены в массиве, то этот уроень помечаем отработанным и он станет как на скрине пунктирным и массиве помечен "отработанным". Верно?

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

 
Taras Slobodyanik:

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

Я имею ввиду, что весь массив перебирать нет резона. Достаточно одной первой (нижней или верхней) и всё. Ну на крайняк, если кому нужно торговать на минутках, то можно до какого-нить индекса проверять. Хотя,.. минутки здесь не особо катят)) Поэтому, если от Н1 и выше, полагаю, что анализ 1 бара будет вполне приемлим. Больше не резон.

 
так весь массив перебирается только в начале, потом только видимые уровни (их не много остается)
 
Viktar Dzemikhau:

Я уже написал почти индикатор построения уровней. Индикатор очень замороченный и зависимостей не мало. Логика не стандартная, поэтомупользоваться тем, что можно найти - нельзя.

Остался один единственный момент, который хочется обсудить. Суть в том, что есть уровни, которые уже отработанны индикатор не должен принимать в рассчёт и, если нужно, рисовать тоже не должен.. Поэтому этот момент нужно как-то учитывать. У меня логика сложнее, но, что бы не напрягать никому мозг, проще представить, что исторические уровни это экстремумы зиг-зага.

Суть в том, что как можно оптимально отобрать отработанные уровни от не отработанных. Т.е. отработанные уровни не отрисовывать (пропускать их). На данный момент, я придумал, при переборе баров от 0-го индекса к последнему (хотя там не последний, а время бара, до которого мы перебираем т.к. уровни находящиеся слишком далеко от настоящего не так актуальны) если появляется экстремум, запоминать его цену. А дальше, пока цена ныряет в откат пока цены(если рассматривается экстремум из нижних) выше запомненной цены, мы пропускаем все бары.

Для большего понимания своих мыслей привожу скриншот с описаием этой ситуации.

Но это ситуация когда отрисовываются лишь уровни по нижним экстремумам. А нужно и п оверхним тоже. Так вот сложность в том, что нужно понять как определять какой сейчас экстремум - нижний или верхний, а дальше анализировать бары и сравнивать их цену с ценой самого экстремума. Это как-бы просто, но это единственный вариант или можно ещё как-то? Может кто-то подобное писал..

Ведь если заглянуть в будущее, то придётся ещё удалять уровни по мере их отработки. А это тоже вопрос.. Не хочется перегружать логику.

Что значит отработанные или не отработанные уровни. Что, если уровень пробит, то он разве уже в дальнейшем не работает? Считаю, что в общем неверный подход. Я уже давно сделал для себя скрипт, который, может рисовать уровни по фракталам, по High и Low, по Open и Close, уровни с максимальным количеством пересечений ценой. Во внешних параметрах можно задавать временной диапазон для расчёта уровней, высоту ценовых поддиапазонов, минимальное расстояние между уровнями, количество баров слева и справа от фракталов и ещё ряд других параметров и кое-какой сервис.

 
khorosh:

Что значит отработанные или не отработанные уровни. Что, если уровень пробит, то он разве уже в дальнейшем не работает? Считаю, что в общем неверный подход. Я уже давно сделал для себя скрипт, который, может рисовать уровни по фракталам, по High и Low, по Open и Close, уровни с максимальным количеством пересечений ценой. Во внешних параметрах можно задавать временной диапазон для расчёта уровней, высоту ценовых поддиапазонов, минимальное расстояние между уровнями, количество баров слева и справа от фракталов и ещё ряд других параметров и кое-какой сервис.

Скажем так, каждому своё.. Если у Вас работают все уровни, как отработанные, так и не отработанные - торгуйте хоть уровни, которые были в 1999 году, например. Меня это не интересует. К тому же, уровни торгуют все по-разному. У меня это лишь базовая составляющая. Дальше, ещё будут моменты, которые я ещё не все обдумал.

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

 

Taras Slobodyanik, а как у Вас так получается, что линии уровней всегда до настоящего времени отрисованы, а не до бесконечности? Ведь есть 2 варианта:

1. Рисуем отреезки от начала уровня, до его окончания действия.

2. Рисует Лучи.

Я так понимаю, у Вас отрезки. Но отрезок имеет начальные первую точку (её время и цену) и конечную точку. Если даже конечная точка настоящее время, то с каждым новым баром придётся перерисовывать конечную точку для всех линий. Вы перерисовываете 2-ую точку?

 
Viktar Dzemikhau:

Скажем так, каждому своё.. Если у Вас работают все уровни, как отработанные, так и не отработанные - торгуйте хоть уровни, которые были в 1999 году, например. Меня это не интересует. К тому же, уровни торгуют все по-разному. У меня это лишь базовая составляющая. Дальше, ещё будут моменты, которые я ещё не все обдумал.

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

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

Валяется где-то и индикатор по аналогичному алгоритму, что и у скрипта. Но мне скрипт показался более удобным. Если торговля на множестве символов, то не проблема сделать исполнение скрипта на всех открытых графиках по однократному нажатию кнопки. 

 
Viktar Dzemikhau:

Я так понимаю, у Вас отрезки. Но отрезок имеет начальные первую точку (её время и цену) и конечную точку. Если даже конечная точка настоящее время, то с каждым новым баром придётся перерисовывать конечную точку для всех линий. Вы перерисовываете 2-ую точку?

Конечная точка, конечно, с настоящим временем )
На предыдущем примере был включен параметр, вытягивающий пробитые линии на 15 баров вправо (после пробоя).
Но в массиве всё имеет правильный конец.

Линии рисуются трендовыми отрезками. 
Да, непробитые линии удлиняются на каждом новом баре.

1


Taras Slobodyanik:

Все точки собираем в массив - координата точки (время/цена), направление (вверх/вниз), состояние (пробит/непробит), конец линии (время пробития).

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