Индикаторы: Harmonic Pattern Finder V3 - страница 2

 

Ищу помощи в настройке значений шифр-шаблона. Я нашел в коде, где шаблон определяется через серию из 14 целых чисел. Я экстраполировал, что эти 14 чисел выглядят следующим образом:

(1)Имя 0=XA

(2)Имя 1=AB

(3)Имя 2=BC

(4)Имя 3=CD

(5)Имя 4=XAB

(6)Имя 5=XAD

(7)Имя 6=ABC

(8)Имя 7=BCD

(8)Треугольник XB

(9)Треугольник BD

(10) Точка X

(11) Точка A

(12) Точка B

(13) Точка C

(14) Точка D


Вот код, основанный на этих данных для шифр-шаблона:

0.382, 0.618, 0, 0, 0, 0, 0, 0, 0.786, 0.786, 1.13, 1.414, 0, 0


Может ли кто-нибудь помочь мне понять, как скорректировать эти числа, чтобы получить то, что мне нужно? В настоящее время паттерн шифр рисуется неправильно. Чтобы считаться шифром, точка B должна достичь 0,382 фибоначчи ретрейсмента X-A, но не закрыться ниже 0,618, точка C должна достичь 1,272 фиб-расширения X-A, но не закрыться выше 1,41, а точка D должна достичь 0,786 фиб-ретрейсмента X-C.


В настоящее время кажется, что 80%-90% моделей, которые рисует этот инструмент, не соответствуют критериям. Большинство из них никогда не достигают правильной точки D, а многие выходят намного выше зоны точки C. Любая помощь приветствуется!

 
Обратите внимание, что в последовательности 14 чисел, но я дважды использовал 8, поэтому в коде есть 15 чисел, которые, как я думал, относятся к последовательности из 14 чисел.... Я могу ошибаться, если они относятся к 14 числам.... Теперь я действительно заблудился
 
jojo151579:
Обратите внимание, что в последовательности 14 чисел, но я дважды использовал 8, поэтому в коде есть 15 чисел, которые, как я думал, относятся к последовательности из 14 чисел.... Я могу ошибаться в том, что они относятся к 14 числам.... Теперь я действительно заблудился.

Шаблоны описываются структурой из 18 дублей, определенных в "HPFMatcher.mqh":

struct PATTERN_DESCRIPTOR
  {
   double            ab2xa_min;
   double            ab2xa_max;
   double            bc2ab_min;
   double            bc2ab_max;
   double            cd2bc_min;
   double            cd2bc_max;
   double            ad2xa_min;
   double            ad2xa_max;
   double            cd2xc_min;
   double            cd2xc_max;
   double            xc2xa_min;
   double            xc2xa_max;
   double            cd2ab_min;
   double            cd2ab_max;
   double            bc2xa_min;
   double            bc2xa_max;
   double            cd2ad_min;
   double            cd2ad_max;
  };

Так что имена переменных вполне объяснимы; первая - минимально допустимое отношение AB к XA ("B должен достигать ... от XA"), следующая - максимально допустимое отношение ("B не должен касаться ... от XA"), и так далее. Из-за этого не так просто внести изменения для проверки критерия "B не должен закрываться ниже ... от XA", поскольку матчер использует для расчетов только максимумы и минимумы.

Если вам это действительно нужно, возможный способ - установить максимальное соотношение немного дальше вниз, скажем, 0,618 + 0,1, как вариант - следующий гармонический уровень, и проверять в специальном фильтре, действительно ли цена закрытия была выше 0,618. Также обратите внимание, что при настройках индикатора по умолчанию к этому ограничению будет применяться 0,05 слабины, что означает, что до тех пор, пока хай/лоу на баре с точкой B не коснется 0,668, паттерн все равно будет найден. Далее вам предстоит проверить критерий цены закрытия.


Дескриптор паттерна Cypher ({0.382,0.618,0,0,0,0,0,0,0,0.786,0.786,1.13,1.414,0,0}) имеет следующие значения

  • ab2xa_min = 0.382
  • ab2xa_max = 0.618
  • cd2xc_min = 0.786
  • cd2xc_max = 0.786
  • xc2xa_min = 1.13
  • xc2xa_max = 1,414

На простом английском это означает:

  • B должен достичь ретрейсмента 0,382 XA, но не коснуться 0,618
  • D должен достичь коррекции 0,786 XC, но при этом развернуться там.
  • C должен достичь расширения 1,13 XA, но не касаться 1,414.
Таким образом, для того, чтобы матчер требовал, чтобы точка C достигла расширения 1.272, просто измените вход #11 с 1.13 на 1.27. Опять же, изменить максимум с "не может коснуться" на "закрытие ниже" не так просто, и будет применена та же слабина в 0,05.

 
Andre Enger:

Паттерны описываются структурой из 18 дублей, определенной в файле "HPFMatcher.mqh":

Таким образом, имена переменных вполне объяснимы; первая - минимально допустимое отношение AB к XA ("B должен достигать ... от XA"), следующая - максимально допустимое отношение ("B не должен касаться ... от XA"), и так далее. В связи с этим не так просто внести изменения для проверки критерия "B не должен закрываться ниже ... от XA", поскольку матчер использует для расчетов только максимумы и минимумы.

Если вам это действительно нужно, возможный способ - установить максимальное соотношение немного дальше вниз, скажем, 0,618 + 0,1, как вариант - следующий гармонический уровень, и проверять в специальном фильтре, действительно ли цена закрытия была выше 0,618. Также обратите внимание, что при настройках индикатора по умолчанию к этому ограничению будет применяться 0,05 слабины, что означает, что до тех пор, пока хай/лоу на баре с точкой B не коснется 0,668, паттерн все равно будет найден. Далее вам предстоит проверить критерии цены закрытия.


Дескриптор паттерна Cypher ({0.382,0.618,0,0,0,0,0,0,0,0.786,0.786,1.13,1.414,0,0}) имеет

  • ab2xa_min = 0.382
  • ab2xa_max = 0.618
  • cd2xc_min = 0.786
  • cd2xc_max = 0.786
  • xc2xa_min = 1.13
  • xc2xa_max = 1.414

На простом английском это означает:

  • B должен достичь ретрейсмента 0,382 XA, но не коснуться 0,618
  • D должен достичь коррекции 0,786 XC, но при этом развернуться там.
  • C должен достичь расширения 1,13 XA, но не касаться 1,414.
Таким образом, для того, чтобы матчер требовал, чтобы точка C достигла расширения 1.272, просто измените вход #11 с 1.13 на 1.27. Опять же, изменить максимум с "не может коснуться" на "закрытие ниже" не так просто, и будет применена та же слабина в 0,05.

Спасибо за ответ! Я подумал, что установить закрытие ниже будет довольно сложно, так что я могу пропустить этот вариант (паттерн все еще действителен, если он идет выше .618, просто не может закрыться выше него, так что я могу отфильтровать их). Изменив параметры для достижения 1.27 (C) и для достижения .786, но не останавливаться на нем (я изменю max на 0, так как паттерн всегда проходит мимо .786, так как .786 - это минимум, и разворачиваться там не обязательно, так что изменение этого параметра, я надеюсь, решит и эту проблему). Я попробую эти варианты и обновлю, как это работает. Спасибо!
 
Andre Enger:

Паттерны описываются структурой из 18 дублей, определенной в файле "HPFMatcher.mqh":

Таким образом, имена переменных вполне объяснимы; первая - минимально допустимое отношение AB к XA ("B должен достигать ... от XA"), следующая - максимально допустимое отношение ("B не должен касаться ... от XA"), и так далее. В связи с этим не так просто внести изменения для проверки критерия "B не должен закрываться ниже ... от XA", поскольку матчер использует для расчетов только максимумы и минимумы.

Если вам это действительно нужно, возможный способ - установить максимальное соотношение немного ниже, скажем, 0,618 + 0,1, как вариант - следующий гармонический уровень, и проверять в специальном фильтре, действительно ли цена закрытия была выше 0,618. Также обратите внимание, что при настройках индикатора по умолчанию к этому ограничению будет применяться 0,05 слабины, что означает, что до тех пор, пока хай/лоу на баре с точкой B не коснется 0,668, паттерн все равно будет найден. Далее вам предстоит проверить критерии цены закрытия.


Дескриптор паттерна Cypher ({0.382,0.618,0,0,0,0,0,0,0,0.786,0.786,1.13,1.414,0,0}) имеет

  • ab2xa_min = 0.382
  • ab2xa_max = 0.618
  • cd2xc_min = 0.786
  • cd2xc_max = 0.786
  • xc2xa_min = 1.13
  • xc2xa_max = 1.414

На простом английском это означает:

  • B должен достичь ретрейсмента 0,382 XA, но не коснуться 0,618
  • D должен достичь коррекции 0,786 XC, но при этом развернуться там.
  • C должен достичь расширения 1,13 XA, но не касаться 1,414.
Таким образом, для того, чтобы матчер требовал, чтобы точка C достигла расширения 1.272, просто измените вход #11 с 1.13 на 1.27. Опять же, изменить максимум с "не может коснуться" на "закрытие ниже" не так просто, и будет применена та же слабина в 0,05.

Заработало! Изменил 1.13 на 1.27 и изменил второй 0.786 на 1.000 (изменение на 0 привело к катастрофическим результатам :) ) Теперь все работает намного точнее! Спасибо за помощь с кодом. Теперь я могу разобраться во всем этом! Вы спаситель жизни! С праздником!
 

Люблю этот индикатор! (Особенно теперь, когда я могу настраивать уровни фибо!)

Если я хочу настроить сканер для использования этого инструмента и автоматического сканирования всех акций, перечисленных в моем окне наблюдения за рынком, я предполагаю, что мне придется создать советника, правильно? Я не кодер... Требуется ли знать и уметь писать код, чтобы создать этот советник?Я бы хотел, чтобы советник искал только новый паттерн шифра за последние 150 баров или около того. Это была бы сохраненная настройка, которую можно было бы загрузить в индикатор как обычно. Возможно ли это и легко ли это создать, или я слишком много желаю, не будучи кодером?

Или может быть есть более простой способ загрузить все акции в форму графика сразу и просто применить этот инструмент? Загрузка каждой акции по одной для поиска занимает много времени! (Я новичок в MT, так что мне еще предстоит разобраться со всеми перегибами :))

Буду признателен за любой совет



Кроме того, я видел на паттерне Cypher, что линия от X до D показывает фибо-ретрейсмент XA... как бы мне изменить это на XC? Ретрейсмент XA применяется только к точке B и не имеет отношения к точке D. Спасибо и отличная работа! (Извините за все вопросы).

 
jojo151579:

Люблю этот индикатор! (особенно теперь, когда я могу настраивать уровни фибо!).

Если я хочу настроить сканер для использования этого инструмента и автоматического сканирования всех акций, перечисленных в моем окне наблюдения за рынком, я предполагаю, что мне придется создать советника, правильно? Я не кодер... Требуется ли знать и уметь писать код, чтобы создать этот советник?Я бы хотел, чтобы советник искал только новый паттерн шифра за последние 150 баров или около того. Это была бы сохраненная настройка, которую можно было бы загружать в индикатор как обычно. Возможно ли это и легко ли это создать, или я слишком много желаю, не будучи кодером?

Или, может быть, есть более простой способ загрузить все акции в форму графика сразу и просто применить этот инструмент? Загрузка каждой акции по одной для поиска занимает много времени! (Я новичок в MT в целом, поэтому мне еще предстоит разобраться со всеми перегибами :) )

Буду признателен за любые предложения



Кроме того, я видел на паттерне cypher, что линия от X до D показывает фибо-ретрейсмент XA... как бы мне изменить это на XC? Ретрейсмент XA применяется только к точке B и не имеет отношения к точке D. Спасибо и отличная работа! (Извините за все вопросы).

Похоже, что в новой версии MT появилась функция разворачивания графиков. Можно открыть график для каждой акции, загрузить индикатор и свернуть график до следующего раза, когда он понадобится. Правда, для поиска все равно приходится вручную щелкать по каждому окну, но, по крайней мере, это менее обременительно, чем каждый раз загружать график и индикатор. В MT нет встроенного сканера или функций для этого. Для его создания потребуется кодирование, которое, впрочем, можно сделать в виде скрипта.

Линия от X до D строится с помощью одной и той же процедуры для всех паттернов. Это скорее ошибка, поскольку она не учитывает специфику Cypher (или других паттернов, где точка C превышает точку A), но это так и не было исправлено.

Чтобы исправить это для Cypher, сначала добавьте эту строку рядом с номером строки 880 в "HarmonicPatternFinderV3.mq5":

string xcd=IntegerToString((int) MathRound(100*MathAbs(D-C)/MathAbs(X-C)));

Затем замените текущий номер строки 992, который читается:

if(k!=FIVEO) ObjectSetString(0,name5,OBJPROP_TOOLTIP,prefix+_patternNames[k]+" XAD="+xad);

на эту:

if(k!=FIVEO && k!=CYPHER)
  ObjectSetString(0,name5,OBJPROP_TOOLTIP,prefix+_patternNames[k]+" XAD="+xad);
else if(k!=FIVEO)
  ObjectSetString(0,name5,OBJPROP_TOOLTIP,prefix+_patternNames[k]+" XCD="+xcd);

Это добавит наиболее содержательную подсказку для подтвержденных паттернов. Чтобы она дополнительно появилась на проекциях, сделайте то же самое в процедуре рисования проекций, то есть добавьте первую строку примерно в строке с номером 1130 и замените текущую 1180.


 
Andre Enger:

Похоже, что в новой версии MT появилась функция сворачивания графиков. Можно открыть график для каждой акции, загрузить индикатор и свернуть график до следующего раза, когда он понадобится. Правда, для поиска все равно приходится вручную щелкать по каждому окну, но, по крайней мере, это менее обременительно, чем каждый раз загружать график и индикатор. В MT нет встроенного сканера или функций для этого. Для его создания потребуется кодирование, которое, впрочем, можно сделать в виде скрипта.

Линия от X до D строится с помощью одной и той же процедуры для всех паттернов. Это скорее ошибка, так как она не учитывает специфику Cypher (или других паттернов, где точка C превышает точку A, если на то пошло), но до этого так и не додумались.

Чтобы исправить это для Cypher, сначала добавьте эту строку рядом с номером строки 880 в "HarmonicPatternFinderV3.mq5":

Затем замените текущую строку с номером 992, которая гласит:

на эту:

Это добавит наиболее содержательную подсказку для подтвержденных деталей. Чтобы добавить ее на проекции, сделайте то же самое в процедуре построения проекции, то есть добавьте первую строку примерно в строке 1130 и замените текущую 1180.


Еще раз спасибо за помощь! К сожалению, я скопировал и вставил все вышеперечисленное (ввел первый код в строке 881 и заменил оригинальную строку 992, скомпилировал и перезапустил) и ничего не изменилось. Это не так уж и важно... При необходимости я могу разобраться сам. Возможно, это связано с отсутствием зигзагообразной линии, идущей от x к c. Спасибо за помощь!

Вроде как предполагал, что для сканера придется писать код... MT5 прекрасен и ужасен одновременно :). Даже не могу получить инструмент для рисования xabcd, как в Tradingview, который автоматически встраивается... В любом случае, этот индикатор будет хорош для бэктестинга. Возможно, мне просто придется купить сканер в один прекрасный день (и когда я найду его не таким чертовски дорогим!).

 
jojo151579:

Спасибо за помощь! К сожалению, я скопировал и вставил все вышеперечисленное (ввел первый код в строке 881 и заменил оригинальную строку 992, скомпилировал и перезапустил), и ничего не изменилось. Это не большая проблема... Если нужно, я могу разобраться сам. Возможно, это связано с отсутствием зигзагообразной линии, идущей от x к c. Спасибо за помощь!

Вроде как предполагал, что для сканера придется писать код... MT5 прекрасен и ужасен одновременно :). Даже не могу получить инструмент для рисования xabcd, как в Tradingview, который автоматически встраивается... В любом случае, этот индикатор будет хорош для бэктестинга. Возможно, мне просто придется купить сканер в один прекрасный день (и когда я найду его не таким чертовски дорогим!).

Да, извините за это **facepalm**, это должно быть сделано в "HPFDrawingObserver.mqh" вместо этого, то добавить в строке 300 заменить строку 410. Или вы можете просто скачать обновление, которое выходит сейчас и исправляет это для всех шаблонов. Если вы скачаете только файл "HPFDrawingObserver.mqh", то даже не нужно заново вводить измененный дескриптор шаблона для Cypher.
 
Andre Enger:
Да, извините за это **facepalm**, это должно быть сделано в "HPFDrawingObserver.mqh" вместо этого, затем добавить в строке 300 заменить строку 410. Или вы можете просто скачать обновление, которое выходит сейчас и исправляет это для всех шаблонов. Если вы скачаете только файл "HPFDrawingObserver.mqh", то даже не нужно заново вводить измененный дескриптор шаблона для Cypher.
Oh ok.... спасибо..... тоже попробовал все вышеперечисленное и никаких изменений. По-прежнему выдает информацию для XAD. В любом случае спасибо