grandaevus: poruchik , я знаю, что такое "ExtDeltaGartley=0.09". Насколько я знаю, этот параметр контролирует максимальное отклонение от идеального фибо.
В zup130 также есть ExtDeltaStrongGartley=0.07.
В чем отличие этого параметра от ExtDeltaGartley?
poruckic, я знаю, я уже спрашивал, но чтобы прояснить тему, позвольте спросить еще раз.
То, что я понял, это,
ExtDeltaGartley=0.09 ; проверяет длину ног.
То есть в детали AB=CD длина ноги AB должна быть равна длине ноги CD.
Если мы хотим проверить, находятся ли длины ножек в пределах нормы, мы используем параметр ExtDeltaGartley.
Однако ExtDeltaStrongGartley проверяет коэффициенты Фибоначчи ретрейсмента.
Например, если AC ретрейсмент AB равен 0.3820, то fib BD ретрейсмент BC должен быть 2.240.
ExtDeltaStrongGartley здесь проверяет соотношения фиб в пределах, а не ExtDeltaGartley.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Спасибо, poruchik. Вот код, который нужно модифицировать. Я попробую его модифицировать.
if (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)
{
vBullBear = "";
vNamePattern = "";
AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);
CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);
if (CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley)
{
vNamePattern=vABCD; // AB-CD
}
else
{
for (int iABCD=0;iABCD<_ABCDsize;iABCD++)
{
if (CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley)
{
vNamePattern=_ABCDtypetxt+"*AB=CD";
break;
}
}
}
Готово! Вот модифицированный код. Теперь он проверяет AC < AB * Fib(1.0) для шаблонов AB=CD & (x) * AB=CD
if (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)
{
vBullBear = "";
vNamePattern = "";
AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);
CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);
if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=vABCD; // AB-CD
}
else
{
for (int iABCD=0;iABCD<_ABCDsize;iABCD++)
{
if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=_ABCDtypetxt+"*AB=CD";
break;
}
}
}
спасибо, брат
Я модифицировал 133 с вашим кодом
та же ошибка?
спасибо, брат
Я модифицирую 133 с помощью вашего кода
тот же баг?Поручик, не сомневайтесь,
и для реального AB=CD, соотношения должны быть следующими
AB=CD
[.382/2.240]
[.500/2.000]
[.618/1.618]
[.707/1.414]
[.786/1.270]
[AB=CD]
Модифицированный код для проверки реальных AB=CD
Новый код теперь проверяет соотношения retAC , retBD.
С новым кодом индикатор находит меньше паттернов AB=CD, но они будут очень точными
if (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)
{
vBullBear = "";
vNamePattern = "";
AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);
CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);
retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0);
retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0);
if(
(retAC>=0.382*min_DeltaGartley) && (retAC=2.240*min_DeltaGartley) && (retBD<=2.240*max_DeltaGartley)
||
(retAC>=0.500*min_DeltaGartley) && (retAC=2.000*min_DeltaGartley) && (retBD<=2.000*max_DeltaGartley)
||
(retAC>=0.618*min_DeltaGartley) && (retAC=1.618*min_DeltaGartley) && (retBD<=1.618*max_DeltaGartley)
||
(retAC>=0.707*min_DeltaGartley) && (retAC=1.414*min_DeltaGartley) && (retBD<=1.414*max_DeltaGartley)
||
(retAC>=0.786*min_DeltaGartley) && (retAC=1.270*min_DeltaGartley) && (retBD<=1.270*max_DeltaGartley)
)
{
if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=vABCD; // AB-CD
}
}
else
{
for (int iABCD=0;iABCD<_ABCDsize;iABCD++)
{
if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=_ABCDtypetxt+"*AB=CD";
break;
}
}
}
Модифицированный код для проверки реального AB=CD
Новый код теперь проверяет соотношения retAC , retBD.
С новым кодом индикатор находит меньше паттернов AB=CD, но они будут очень точными
if (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)
{
vBullBear = "";
vNamePattern = "";
AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);
CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);
retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0);
retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0);
if(
(retAC>=0.382*min_DeltaGartley) && (retAC=2.240*min_DeltaGartley) && (retBD<=2.240*max_DeltaGartley)
||
(retAC>=0.500*min_DeltaGartley) && (retAC=2.000*min_DeltaGartley) && (retBD<=2.000*max_DeltaGartley)
||
(retAC>=0.618*min_DeltaGartley) && (retAC=1.618*min_DeltaGartley) && (retBD<=1.618*max_DeltaGartley)
||
(retAC>=0.707*min_DeltaGartley) && (retAC=1.414*min_DeltaGartley) && (retBD<=1.414*max_DeltaGartley)
||
(retAC>=0.786*min_DeltaGartley) && (retAC=1.270*min_DeltaGartley) && (retBD<=1.270*max_DeltaGartley)
)
{
if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=vABCD; // AB-CD
}
}
else
{
for (int iABCD=0;iABCD<_ABCDsize;iABCD++)
{
if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=_ABCDtypetxt+"*AB=CD";
break;
}
}
}Сделал некоторые изменения(убрал ненужные скобки).
Окончательный код
if (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)
{
vBullBear = "";
vNamePattern = "";
AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);
CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);
retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0);
retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0);
if(
(retAC>=0.382*min_DeltaGartley && retAC=2.240*min_DeltaGartley && retBD<=2.240*max_DeltaGartley)
||
(retAC>=0.500*min_DeltaGartley && retAC=2.000*min_DeltaGartley && retBD<=2.000*max_DeltaGartley)
||
(retAC>=0.618*min_DeltaGartley && retAC=1.618*min_DeltaGartley && retBD<=1.618*max_DeltaGartley)
||
(retAC>=0.707*min_DeltaGartley && retAC=1.414*min_DeltaGartley && retBD<=1.414*max_DeltaGartley)
||
(retAC>=0.786*min_DeltaGartley && retAC=1.270*min_DeltaGartley && retBD<=1.270*max_DeltaGartley)
)
{
if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=vABCD; // AB-CD
}
}
else
{
for (int iABCD=0;iABCD<_ABCDsize;iABCD++)
{
if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])
||
(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])
)
{
vNamePattern=_ABCDtypetxt+"*AB=CD";
break;
}
}
}
poruchik , я знаю, что такое "ExtDeltaGartley=0.09". Насколько я знаю, этот параметр контролирует максимальное отклонение от идеального фибо.
В zup130 также есть ExtDeltaStrongGartley=0.07.
В чем отличие этого параметра от ExtDeltaGartley?poruckic, я знаю, я уже спрашивал, но чтобы прояснить тему, позвольте спросить еще раз.
То, что я понял, это,
ExtDeltaGartley=0.09 ; проверяет длину ног.
То есть в детали AB=CD длина ноги AB должна быть равна длине ноги CD.
Если мы хотим проверить, находятся ли длины ножек в пределах нормы, мы используем параметр ExtDeltaGartley.
Однако ExtDeltaStrongGartley проверяет коэффициенты Фибоначчи ретрейсмента.
Например, если AC ретрейсмент AB равен 0.3820, то fib BD ретрейсмент BC должен быть 2.240.
ExtDeltaStrongGartley здесь проверяет соотношения фиб в пределах, а не ExtDeltaGartley.
Я прав?
Я добавляю .886-1.13
.382-2.618 (не 2.24)
ExtDeltaStrongGartley - для сильных паттернов (точных паттернов), it=0.07 (7%)
varStrongPatterns - параметры алгоритма поиска точных узоров |
// // | = 0 поиск точных пятиточечных паттернов в алгоритме, |
// | | существующих до 122 версии включительно. Узор считался |
// | найденным, если ретрансляция XD-XB-AC-BD доходила до границ | // // допустимости.
// | | допуска. |
// | |
// // | = 1 при поиске паттернов в границах допуска приходится | // // | получать только XB-AC-BD.
// | | получить только возврат XB-AC-BD. |
// | | Ретресмент XD в этом случае считается справочным, | | // | участвует только в расчете границы развития.
// участвует только для расчета границы развития точки детали D.
ExtDeltaStrongGartley - для сильных паттернов (точных паттернов), он=0.07 (7%)
varStrongPatterns - опции алгоритма поиска точных узоров |.
// // | = 0 поиск точных пятиточечных паттернов в алгоритме, |
// // | | существующих до 122 версии включительно. Паттерн считался | // | найденным.
// | найденным, если ретрансляция XD-XB-AC-BD достигала границ | // | вхождения.
// | | допуска. |
// | |
// // | = 1 при поиске шаблонов в границах допуска необходимо | // // | получить только XB-AC-BD.
// | | получить только возврат XB-AC-BD. |
// | | Ретресмент XD в этом случае считается прямым, | // // |
// | участвует только для расчета границы застройки точки детали DЗатем ExtDeltaStrongGartley для 5 точечных паттернов, таких как Bat, Gartley, ButterFly и Crab.
а ExtDeltaGartley - для других (AB=CD, Alternate AB=CD и т.д.).
Правильно?