PDA

View Full Version : Углы Гана.



Matrica
26-03-2011, 07:06
Здравствуйте. Возможно ли, написать индикатор, который строил бы углы Гана, от интрересующих экстремумов. Чтобы получилось как на картинке. Формула построения в ZIP файле.

Scriptong
27-03-2011, 20:41
На вскидку... В ТЗ не описаны следующие нюансы:

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

2. Критерий определения типа экстремума.

Matrica
28-03-2011, 08:07
На вскидку... В ТЗ не описаны следующие нюансы:

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


2. Критерий определения типа экстремума.
Правее левее указанной точки, на протяжении Х баров, нет более низкой цены (значит это у нас лоу), нет более высокой цены (хай).

Scriptong
28-03-2011, 20:12
Если получается дробное число бара, увеличиваем до целого числа, в большую сторону.


Количество баров не может быть дробным - это натуральное число.



Если же вопрос касался построения в будущее, то параметры построения одни и те же, на всем графике.
Т.е. один раз забили параметры в индикатор, и больше мы к ним не возвращаемся. Все углы (сколько бы их не было на графике), будут расположены под одним и тем же наклоном. Тут наверное можно просто копировать данные линий, со смещением на х баров и х пипсов.


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



Правее левее указанной точки, на протяжении Х баров, нет более низкой цены (значит это у нас лоу), нет более высокой цены (хай).

Я так понимаю, "правее и левее" точки? Т.е. принцип фрактала. Значение Х тоже должно находиться в настроечных параметрах индикатора?

Matrica
28-03-2011, 20:51
Да, имеется в виду тот аспект, что прямая не может быть построена (точнее, будет неправильно построена), если более поздняя ее точка приходится на несуществующий бар. Поэтому я и спрашиваю, как индикатор должен реагировать на установку точки отсчета на баре с индексом менее, чем Б? Я в этом случае предлагаю автоматически передвигать стрелку на ближайший бар, где подобное построение возможно.

А когда я руками перетаскиваешь линию, на крайнии свечи, где справа еще до конца не сформировалось, мт4 как-то же расчитывает наклон и координаты линии? Вот второй рисунок в первом посте. Там на хай натянуты углы вниз, справа баров нет (еще не сформировалось нужное кол-во), но наклон линии сохранен.

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


Я так понимаю, "правее и левее" точки? Т.е. принцип фрактала. Значение Х тоже должно находиться в настроечных параметрах индикатора?

Я просто не знаю, возможно ли, чтобы я на график кидал на интересующий меня экстремум (экстремумы), какой нибудь определенный графический обьект, т.е. обозначивал обьектом интересующий бар, а индикатор уже сам расчитывал, хай там или лоу.

Scriptong
29-03-2011, 15:56
А когда я руками перетаскиваешь линию, на крайнии свечи, где справа еще до конца не сформировалось, мт4 как-то же расчитывает наклон и координаты линии? Вот второй рисунок в первом посте. Там на хай натянуты углы вниз, справа баров нет (еще не сформировалось нужное кол-во), но наклон линии сохранен.


Я же написал выше, что это возможно, но может привести к неправильному расчету, т.к. справа от текущего времени МТ4 оперирует непрерывным временем, без учета суббот и воскресений, т.е. так, будто бы в субботу и воскресенье бары будут существовать. В моменту подхода реального времени к таким точкам получится пропуск баров, что изменит угол наклона прямых. Вы это видимо, попросту не замечали, т.к. корректировка достаточно незначительная.


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


Этот момент не понял



Я просто не знаю, возможно ли, чтобы я на график кидал на интересующий меня экстремум (экстремумы), какой нибудь определенный графический обьект, т.е. обозначивал обьектом интересующий бар, а индикатор уже сам расчитывал, хай там или лоу.

Принцип я понял. Лишь уточняю, правильно ли вас понял, что Х - настроечный параметр индикатора?

Кстати, назрел еще один вопрос. Что делать в случае, если индикатор не может произвести идентификацию экстремума (ошибка пользователя и т.д.)?

Matrica
29-03-2011, 17:24
Я же написал выше, что это возможно, но может привести к неправильному расчету, т.к. справа от текущего времени МТ4 оперирует непрерывным временем, без учета суббот и воскресений, т.е. так, будто бы в субботу и воскресенье бары будут существовать. В моменту подхода реального времени к таким точкам получится пропуск баров, что изменит угол наклона прямых. Вы это видимо, попросту не замечали, т.к. корректировка достаточно незначительная.

Ага, понял. А можно немного уточнить? Допустим, у нас идет пятница, мт4 рисует линию в будущее, с учетом непрерывного времени. Потом наступает понедельник. Пошли котировки. Код в мт4 позволяет отследить, что в выходные котировки не передавались, и у нас как бы пропало часть баров, и наклон линии, прочерченной в пятницу, надо немного скорректировать? Ну или индикатор при первом запуске терминала в понедельник, это может отслеживать?


Принцип я понял. Лишь уточняю, правильно ли вас понял, что Х - настроечный параметр индикатора? Если это не трудно реализовать, то было бы неплохо :)


Кстати, назрел еще один вопрос. Что делать в случае, если индикатор не может произвести идентификацию экстремума (ошибка пользователя и т.д.)?

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

Scriptong
31-03-2011, 09:09
Ага, понял. А можно немного уточнить? Допустим, у нас идет пятница, мт4 рисует линию в будущее, с учетом непрерывного времени. Потом наступает понедельник. Пошли котировки. Код в мт4 позволяет отследить, что в выходные котировки не передавались, и у нас как бы пропало часть баров, и наклон линии, прочерченной в пятницу, надо немного скорректировать? Ну или индикатор при первом запуске терминала в понедельник, это может отслеживать?

Можно, конечно. Только в результате вы получаете перерисовывающийся индикатор. На этом многие погорели. Ближайший пример - ZigZag. Как он красив на истории!... и практически бесполезен в текущей торговле.



Если это не трудно реализовать, то было бы неплохо :)


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




При ошибке пользователя, если указан не экстремум, ну можно наверное ничего не чертить, чтобы сразу в глаза кидалось, и внимательнее на график смотрелось, какой бар индикатору как экстремум указал :)


Просто ничего не чертить или все же выдать какое-нибудь сообщение об ошибке? Я лично склоняюсь ко второму.

Matrica
31-03-2011, 12:40
Можно, конечно. Только в результате вы получаете перерисовывающийся индикатор. На этом многие погорели. Ближайший пример - ZigZag. Как он красив на истории!... и практически бесполезен в текущей торговле.

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


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

Давайте настраиваемый.


Просто ничего не чертить или все же выдать какое-нибудь сообщение об ошибке? Я лично склоняюсь ко второму.

Согласен, про сообщение об ошибке.

Scriptong
01-04-2011, 10:09
Ну что же, детали выяснены. Будем работать.

Scriptong
06-04-2011, 11:56
Индикатор готов.
В момент присоединения к графику, на экране отображается две стрелки: вниз и вверх. Путем их перемещения пользователь может указывать интересующий его экстремум, от которого будут проведены углы, исходя из настроек индикатора.
Если указанный бар не является локальным минимумом или максимумом, то будет выдано соответствующее сообщение, а углы построены не будут.
Проблема с нехваткой баров при указании бара, расположенного слишком близко к нулевому бару, не решена. В этом случае построение углов производится максимально точно (по текущим данным), но отображается сообщение о возможных погрешностях расчетов. Перерисовками углов после появления в будущем необходимых данных индикатор не занимается.

Также необходимо заметить, что при текущих настройках индикатора три из семи линий графически сливаются в одну из-за малости получаемого масштаба: 0.36, 0.72 и 1.44 визуально выглядят как одна точка.

Matrica
06-04-2011, 15:38
Также необходимо заметить, что при текущих настройках индикатора три из семи линий графически сливаются в одну из-за малости получаемого масштаба: 0.36, 0.72 и 1.44 визуально выглядят как одна точка.
Там то сливается, то нет, закономерности не нашел. При удалении углов, и повторном указании этого же экстремума, отрисовывает правильно.

Пока нашел 1 баг. Нет угла 1х1.

И т.к. координаты у трендовых линий, задаются слишком близко от стартовой точки, при изменении масштаба, получается сбой наклона. И чем дальше от стартовой точки, тем больше погрешность угла наклона.
Т.е. я так понял, угол строится например не по 100 баров, 144 пипса, а например по 10 баров, 14.4 пипса. Вернее для трендовой указываются вторая координата в уменьшенном масштабе. И если сужать масштаб графика, по горизонтали, видно, как углы начинают гулять. При указании второй координаты, для линии, в расчетной точке, как в тз, наклон будет неизменным.
Кстати, скорее всего из-за этого и сливается часть углов.


Скрины ниже.

А в остальном, все так как и хотелось :)

Matrica
07-04-2011, 06:58
Небольшое дополнение. Странно индикатор углы чертит. Берем лоу, строим углы, смотрим свойства линии. Если точки расположены на большом расстоянии друг от друга (первый скрин), то при изменении масштаба, наклон угла не изменяется.

Если же точки у линии расположены близко (второй скрин), углы начинают гулять капитально :(

Причем не нашел закономерности, почему от одного экстремума так, а от другого этак.

Scriptong
07-04-2011, 08:09
Т.е. я так понял, угол строится например не по 100 баров, 144 пипса, а например по 10 баров, 14.4 пипса.

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

Matrica
07-04-2011, 14:39
Scriptong - ты просто волшебник, то что нужно, на все 10.000% :)

Можно две последних просьбы?

1 - добавить три угла.

(2х3 Б=50% П=0.75%)
(3х2 Б=0.75% П=50%)
(3х1 Б=0.75% П=0.25%)

2 - кнопку или галочку в индюк добавить можно, чтобы при перезагрузке терминала, или при переключении тф, линии не удалялись с экрана? Т.е. при включенном флаге, удаляем, при отключенном оставляем. Или наоборот.

Scriptong
11-04-2011, 12:38
1 - добавить три угла.

(2х3 Б=50% П=0.75%)
(3х2 Б=0.75% П=50%)
(3х1 Б=0.75% П=0.25%)


Какое-то несоответствие. Почему 3 - это 0.75? По условиям ТЗ 3 - это делитель. Поэтому получаем не 0.75, а 0.33, и не %, а частей от единицы. Исходя из этих условий углы и добавлены.



2 - кнопку или галочку в индюк добавить можно, чтобы при перезагрузке терминала, или при переключении тф, линии не удалялись с экрана? Т.е. при включенном флаге, удаляем, при отключенном оставляем. Или наоборот.

Добавлен параметр AngleDelete. Если установить его в false, то при отключении индикатора ни один из его объектов, включая стрелки, не удаляется.

Matrica
12-04-2011, 05:42
Добавлен параметр AngleDelete. Если установить его в false, то при отключении индикатора ни один из его объектов, включая стрелки, не удаляется.
Спасибо :)


Какое-то несоответствие. Почему 3 - это 0.75? По условиям ТЗ 3 - это делитель. Поэтому получаем не 0.75, а 0.33, и не %, а частей от единицы. Исходя из этих условий углы и добавлены.

Вот такой Ганн нехороший :) Использовал 3 нестандартных угла. (3/4 от единицы, 3/1 и 2/3 тоже от единицы). Отсюда и и пропорции немного отличаются.
Т.е. он единицу (кол-во баров или пипсов) делил на 4, и брал три части. Соответственно, 3 части от 4-х частей, у нас и получается 75%. Скрин ниже.

Тогда углы выглядят так.

(3х2 Б/2 П=75%)
(2х3 Б=75% П/2)
(1х3 Б=75% П/4)

Обновил скрин.

Scriptong
12-04-2011, 07:42
Вот такой Ганн нехороший :) Использовал 3 нестандартных угла. (3/4 от единицы, 3/1 и 2/3 тоже от единицы). Отсюда и и пропорции немного отличаются.
Т.е. он единицу (кол-во баров или пипсов) делил на 4, и брал три части. Соответственно, 3 части от 4-х частей, у нас и получается 75%. Скрин ниже.

Тогда углы выглядят так.

(3х2 Б/2 П=75%)
(2х3 Б=75% П/2)
(1х3 Б=75% П/4)

Обновил скрин.

В данном случае речь не о Ганне, а об алгоритме и терминологии конкретного индикатора. Если мы приняли изначально, что цифры обозначают делители, то такого принципа стоит придерживаться и дальше. Писать же одно число, а подразумевать другое - не годится. Если нужно получить 75%, то формулировка должна выглядеть следующим образом:
1. Б/2, П=75% - 1_33х2, а не 3х2
2. Б=75%, П/2 - 2х1_33, а не 2х3
3. Б=75%, П/4 - 1_33х4, а не 1х3 (здесь вообще уже ни в какие ворота не лезет; как из 1х3 получаем П/4?)
Подумайте над этим. Когда придете к какому-нибудь обоснованному мнению, то продолжим.

Matrica
12-04-2011, 08:32
Ага. Понятно. Ступил, с кем не бывает :)

Точно, если 1 разделить на 1.33, то как раз 0.75 и получаем (если брать первые 2 цифры после запятой, а остальное отбрасывать).

(2х1_33 Б/2 П/1.33)
(1_33х2 Б/1.33 П/2)
(1_33х4 Б/1.33 П/4)

Тогда вот так получается.

Matrica
22-04-2011, 10:11
Scriptong - а есть надежда, что когда нибудь, в индикаторе еще три угла появятся? :)

Scriptong
24-04-2011, 18:07
Scriptong - а есть надежда, что когда нибудь, в индикаторе еще три угла появятся? :)

Какие именно?

Matrica
25-04-2011, 08:59
(2х1.33 Б/2 П/1.33)
(1.33х2 Б/1.33 П/2)
(1.33х4 Б/1.33 П/4)

Берем число до запятой, в расчетах. После запятой все отбрасываем.

Scriptong
26-04-2011, 07:33
(2х1.33 Б/2 П/1.33)
(1.33х2 Б/1.33 П/2)
(1.33х4 Б/1.33 П/4)

Берем число до запятой, в расчетах. После запятой все отбрасываем.

Если отбрасывать числа после запятой, то получаем:
1) 2х1
2) 1х2
3) 1х4

Все эти углы уже есть.

Matrica
26-04-2011, 08:48
Если отбрасывать числа после запятой, то получаем:
1) 2х1
2) 1х2
3) 1х4

Все эти углы уже есть.

Я наверное опять не так выразился.
Например угол (2х1.33 Б/2 П/1.33)

(П/1.33) 576 пипсов делим на 1,33 = 433.08270676691729323308270676692 всё что после запятой, нас не интересует. Даже не округляем, если первая цифра после запятой 5 или более. Тупо берем только целое число. В нашем случае 433.

Scriptong
27-04-2011, 07:35
С округлением итоговых значений вопрос был решен еще в первой версии индикатора.
В четвертой версии присутствует уже 14 различных углов.

Matrica
27-04-2011, 09:12
Scriptong - низкий поклон. Всё что и требовалось. Больше ничего добавлять не надо :)

Matrica
27-04-2011, 09:44
Scriptong - последний призыв о помощи!!!
На пятизнаке наклон углов совсем не тот получается. Два скрина, Броко - 4 знака после запятой в котировках. И Альпари - 5 знаков после запятой.

На Броко правильно, на Альпари нет.

Scriptong
28-04-2011, 07:44
Scriptong - последний призыв о помощи!!!
На пятизнаке наклон углов совсем не тот получается.


Мы с вами, вообще-то, находимся на сайте Admiral Markets. Не находите, что как-то некорректно здесь упоминать других брокеров?

По сути: для пятизначных котировок размер пункта в 10 раз меньше, чем на четырехзнаке. Соответственно, вместо 576 на пятизнаке нужно использовать 5760.

Matrica
28-04-2011, 18:14
Мы с вами, вообще-то, находимся на сайте Admiral Markets. Не находите, что как-то некорректно здесь упоминать других брокеров?

По сути: для пятизначных котировок размер пункта в 10 раз меньше, чем на четырехзнаке. Соответственно, вместо 576 на пятизнаке нужно использовать 5760.

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

Но все равно, огромное спасибо за помощь и терпение :)