Гармоническая торговля - страница 308

 

Спасибо, 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 с вашим кодом

та же ошибка?

Файлы:
 
poruchik:
спасибо, брат

Я модифицирую 133 с помощью вашего кода

тот же баг?

Поручик, не сомневайтесь,

и для реального AB=CD, соотношения должны быть следующими

AB=CD

[.382/2.240]

[.500/2.000]

[.618/1.618]

[.707/1.414]

[.786/1.270]

[AB=CD]

Файлы:
image038.jpg  45 kb
 

Модифицированный код для проверки реальных 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;

}

}

}

 
grandaevus:
Модифицированный код для проверки реального 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;

}

}

}

 
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.

Я прав?

 

Я добавляю .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.

 
poruchik:
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 и т.д.).

Правильно?

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