Price Data Components
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
ZUP_v76_5-0_mod
//|----------------------------------------------------------------------|
//| |
//| |
//| Ïîñâÿùàåòñÿ ïàìÿòè ìîåãî äðóãà |
//| Äåíèñîâà Âëàäèìèðà Íèêîëàåâè÷à |
//| ñåíòÿáðü 2007, ã. Íîâîêóéáûøåâñê |
//| |
//| |
//|----------------------------------------------------------------------|
//|ZigZag óíèâåðñàëüíûé ñ ïàòòåðíàìè Ïåñàâåíòî |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for ZigZag" |
//| |
//|----------------------------------------------------------------------|
//|ExtIndicator - âûáîð âàðèàíòà èíäèêàòîðà, íà îñíîâå êîòîðîãî |
//| ñòðîÿòñÿ ïàòòåðíû Ïåñàâåíòî |
//| 0 - Zigzag èç ìåòàòðåéäåðà, ñòàíäàðòíûé |
//| 1 - Zigzag Àëåêñà, |
//| 2 - èíäèêàòîð ïîäîáíûé âñòðîåííîìó â Ensign |
//| 3 - ZigZag Ensign ñ ïåðåìåííûì çíà÷åíèåì minBars |
//| 4 - ZigZag, ðàçðàáîòàë tauber |
//| 5 - âàðèàöèÿ íà òåìó ñâèíãîâ Ãàííà |
//| 6 - DT-ZigZag ñ âíåøíèì ZigZag_new_nen3.mq4 |
//| 7 - DT-ZigZag ñ âíåøíèì DT_ZZ.mq4 (ðàçðàáîòàë klot) |
//| 8 - DT-ZigZag ñ âíåøíèì CZigZag.mq4 (ðàçðàáîòàë Candid) |
//| 10 - DT-ZigZag ñ âíåøíèì Swing_zz - ýòî ExtIndicator=5 |
//| â ðåæèìå DT |
//| 11 - âêëþ÷àåò ïîèñê ïàòòåðíîâ Gartley |
//| 12 - ZigZag, ðàçðàáîòàë Talex |
//| 13 - SQZZ çèãçàã, ðàçðàáîòàë Òîâàðîâåä |
//| 14 - ZZ_2L_nen, ðàçðàáîòàë wellx (àâòîðàñ÷åò óðîâíåé - nen) |
//| |
//|minBars - ôèëüòð áàðîâûé (çàäàåòñÿ êîëè÷åñòâî áàðîâ) |
//|minSize - ôèëüòð ïî êîëè÷åñòâó ïóíêòîâ (çàäàåòñÿ êîëè÷åñòâî ïóíêòîâ) |
//| |
//|ExtDeviation è ExtBackstep - ïàðàìåòðû îñòàâøèåñÿ îò ZigZag èç MT4 |
//| |
//|GrossPeriod - çíà÷åíèå òàéìôðåéìà, âûðàæåííîå â ìèíóòàõ (÷èñëî ìèíóò),|
//| äàííûå ñ êîòîðîãî áåðóòñÿ äëÿ ïîñòðîåíèÿ ZigZag â ðåæèìå DT-ZigZag |
//| |
//|minPercent - ïðîöåíòíûé ôèëüòð (çàäàåòñÿ ïðîöåíò, íàïðèìåð 0.5) |
//| Åñëè èñïîëüçóþòñÿ ïðîöåíòû - ñòàâèòå ÷èñëî, à minSize=0; |
//| |
//|ExtPoint=11 - êîëè÷åñòâî òî÷åê çèãçàãà äëÿ çèãçàãà Talex |
//| |
//|StLevel - ïåðâûé óðîâåíü çèãçàãà (wellx) |
//|BigLevel - âòîðîé óðîâåíü çèãçàãà (wellx) |
//|auto - çàäàíèå àâòîìàòè÷åñêîãî ðàñ÷åòà óðîâíåé StLevel è BigLevel |
//|minBar - çíà÷åíèå % äëÿ ðàñ÷åòà StLevel |
//|maxBar - çíà÷åíèå % äëÿ ðàñ÷åòà BigLevel |
//| |
//| |
//|ExtStyleZZ - = true - çàäàåò ñòèëü ëèíèé ZigZag ÷åðåç âêëàäêó ÖÂÅÒÀ |
//| = false - Zigzag âûâîäèòñÿ òî÷êàìè ó ýêñòðåìóìîâ |
//| |
//|ExtNumberPeak - âêëþ÷àåò íóìåðàöèþ ïåðåëîìîâ ZigZag íà÷èíàÿ ñ 1 |
//|ExtNumberPeak10 - ðàçðåøàåò âûâîä íîìåðîâ òîëüêî ó ïåðâûõ 10 ïåðåëîìîâ|
//|ExtNumberPeakLow - âûâîä ÷èñåë òîëüêî ó Low èëè ó High è Low |
//|ExtNumberPeakColor - öâåò ÷èñåë |
//|ExtNumberPeakFontSize - ðàçìåð ÷èñåë |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for fibo Levels" |
//| |
//|----------------------------------------------------------------------|
//|ExtFiboDinamic - ðàçðåøàåò âûâîä äíàìè÷åñêèõ óðîâíåé ôèáî. |
//| Äèíàìè÷åñêèå óðîâíè ôèáî âûâîäÿòñÿ íà ïåðâîì ëó÷å |
//| ZigZag-a. |
//| |
//|ExtFiboStatic - ðàçðåøàåò âûâîä ñòàòè÷åñêèõ óðîâíåé ôèáî |
//| |
//|ExtFiboStaticNum - íîìåð ëó÷à ZigZag-a, íà êîòîðîì áóäóò âûâîäèòüñÿ |
//| ñòàòè÷åñêèå óðîâíè Ôèáîíà÷÷è. 1<ExtFiboStaticNum<=9|
//| |
//|ExtFiboType = 0 - ñòàíäàðòíûå ôèáû |
//| 1 - ôèáû ñ ÷èñëàìè Ïåñàâåíòî è ò.ä. |
//| 2 - ôèáû, çàäàííûå ïîëüçîâàòåëåì |
//| |
//|ExtFiboTypeFree - çàäàíèå ïîëüçîâàòåëüñêèõ ôèá |
//| |
//|ExtFiboCorrectionExpansion = false - êîððåêöèÿ Ôèáîíà÷÷è |
//| = true - ðàñøèðåíèå Ôèáîíà÷÷è |
//| |
//|ExtFiboD è ExtFiboS - âûáîð öâåòà äèíàìè÷åñêèõ è ñòàòè÷åñêèõ ôèá. |
//| |
//|ExtFiboStyle - óñòàíàâëèâàåò ñòèëü ëèíèé óðîâíåé ôèáî |
//| |
//|ExtFiboWidth - óñòàíàâëèâàåò òîëùèíó ëèíèé óðîâíåé ôèáî |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for Pesavento Patterns" |
//| |
//|----------------------------------------------------------------------|
//|ExtPPWithBars - âûâîäèòñÿ äîïîëíèòåëüíàÿ èíôîðìàöèÿ ïîñëå çíà÷åíèé |
//| ðåòðåñìåíòîâ ïàòòåðíîâ Ïåñàâåíòî. |
//| |
//| 0 - âûâîäÿòñÿ ðåòðåñìåíòû êàê áûëî ðàíåå |
//| |
//| 1 - âûâîäèòñÿ êîëè÷åñòâî áàðîâ ìåæäó òî÷êàìè, ñâÿçàííûìè |
//| "ðåòðåñìåíòîì" (ïàòòåðíîì Ïåñàâåíòî) |
//| |
//| 2 - âûâîäèòñÿ êîëè÷åñòâî áàðîâ äëÿ ïåðâîãî è âòîðîãî |
//| óñëîâíîãî ëó÷à çèãçàãà, ìåæäó êîòîðûìè ïîñòðîåí |
//| "ðåòðåñìåíò" (ïàòòåðíîì Ïåñàâåíòî) |
//| |
//| 3 - âûâîäèòñÿ âðåìåííÎé ðåòðåñìåíò ïîñëå öåíîâîãî |
//| ðåòðåñìåíòà. ÂðåìåííÎé ðåòðåñìåíò ðàññ÷èòûâàåòñÿ êàê |
//| îòíîøåíèå êîëè÷åñòâà áàðîâ íà âòîðîì ëó÷å çèãçàãà ê |
//| êîëè÷åñòâó áàðîâ íà ïåðâîì ëó÷å çèãçàãà |
//| |
//| 4 - âûâîäèòñÿ âðåìåííÎé ðåòðåñìåíò, ðàññ÷èòàííûé êàê |
//| îòíîøåíèå âðåìåíè ðàçâèòèÿ âòîðîãî ëó÷à ê âðåìåíè |
//| ðàçâèòèÿ ïåðâîãî ëó÷à |
//| |
//| 6 - âûâîäèò êîëè÷åñòâî ïóíêòîâ è ïðîöåíòîâ, íà êîòîðûå |
//| òåêóùàÿ öåíà ïåðåëîìà çèãçàãà îòëè÷àåòñÿ îò |
//| ÷èñëà Ïåñàâåíòî |
//| |
//| 7 - âûâîäèò çíà÷åíèå ñêîðîñòè äëÿ ïåðâîãî è âòîðîãî ëó÷åé|
//| Äàííûé ïàðàìåòð òàêæå ìîæíî èñïîëüçîâàòü äëÿ îïðåäå- |
//| ëåíèÿ çíà÷åíèÿ ìàñøòàáà. Äàííîå çíà÷åíèå èñïîëüçóåòñÿ|
//| ïðè àâòîìàòè÷åñêîì ìàñøòàáèðîâàíèè ôèáî äóã. |
//| |
//| 8 - âûâîäèò îòíîøåíèå äëèíû âòîðîãîî ëó÷à ê äëèíå ïåðâîãî|
//| |
//| 9 - âûâîäèò ïðîöåíò èçìåíåíèÿ öåíû íà ïåðâîì è |
//| âòîðîì ëó÷àé |
//| |
//|ExtHidden - 0 - ëèíèè è ÷èñëà ïàòòåðíîâ Ïåñàâåíòî ñêðûòû. |
//| 1 - ïîêàçûâàåò âñå ëèíèè ìåæäó ôðàêòàëàìè, ó êîòîðûõ |
//| ïðîöåíò âîññòàíîâëåíèÿ >0.14 è <5. |
//| 2 - ïîêàçûâàåò òîëüêî òå ëèíèè, ãäå ïðîöåíò âîññòàíî- |
//| âëåíèÿ ðàâåí ÷èñëàì Ïåñàâåíòî (è 0.447, 0.886, 2.236, |
//| 3.14, 3,618 äëÿ ïîñòðîåíèÿ ïàòòåðíîâ Gartley) |
//| 3 - ïîêàçûâàåò ÷èñëà, ïåðå÷èñëåííûå â ïóíêòå 2 |
//| è ñîîòâåòñòâóþùèå ëèíèè |
//| 4 - ïîêàçûâàåò ÷èñëà íå Ïåñàâåíòî è ñîîòâåòñòâóþùèå ëèíèè |
//| 5 - ñêðûâàåò âñþ îñíàñòêó. Îñòàåòñÿ òîëüêî ZigZag |
//| è âûâîä ïàòòåðíîâ Gartley |
//| |
//|ExtFractal - êîëè÷åñòâî ôðàêòàëîâ (ìàêñèìóìîâ, ìèíèìóìîâ), |
//| îò êîòîðûõ èäóò ëèíèè ê äðóãèì ôðàêòàëàì |
//| |
//|ExtFractalEnd - êîëè÷åñòâî ôðàêòàëîâ, ê êîòîðûì èäóò ëèíèè |
//| äàëüøå ýòîãî ôðàêòàëà ñîåäèíÿþùèõ ëèíèé íå áóäåò |
//| Åñëè ExtFractalEnd=0 òî ïîñëåäíèé ôðàêòàë ðàâåí |
//| ìàêñèìàëüíîìó ÷èñëó ôðàêòàëîâ. |
//| Ìèíèìàëüíîå çíà÷åíèå ExtFractalEnd=1 |
//| |
//|ExtFiboChoice - âûáîð íàáîðà ÷èñåë ÷èñåë äëÿ ïîñòðîåíèÿ ïàòòåðíîâ |
//| Ïåñàâåíòî. Ïàðàìåòð çàäàåòñÿ ÷èñëàìè îò 0 äî 11 |
//| |
//|ExtFiboZigZag - ðàçðåøàåò âûâîä "ZiaZag Fibonacci" |
//| |
//|ExtDelta - (äîïóñê) îòêëîíåíèå â ðàñ÷åòå. Çàäàåò âåëè÷èíó |
//| ïîòåíöèàëüíîé ðàçâîðîòíîé çîíû. |
//| äîëæíî áûòü 0<ExtDelta<1 |
//| |
//|ExtDeltaType - 0 - âûâîäÿòñÿ ïðîöåíòû âîññòàíîâëåíèÿ "êàê åñòü" |
//| ñ îêðóãëåíèåì äî 2 öèôð ïîñëå çàïÿòîé |
//| 1 - ðàñ÷åò äîïóñêà (%-÷èñëî Ïåñàâåíòî)<ExtDelta |
//| 2 - ((%-÷èñëî Ïåñàâåíòî)/÷èñëî Ïåñàâåíòî)<ExtDelta |
//| 3 - âûâîäÿòñÿ ïðîöåíòû âîññòàíîâëåíèÿ "êàê åñòü" |
//| ñ îêðóãëåíèåì äî 3 öèôð ïîñëå çàïÿòîé |
//| |
//|ExtSizeTxt - ðàçìåð øðèôòà äëÿ âûâîäà ÷èñåë |
//| |
//|ExtLine - âûáîð öâåòà ñîåäèíèòåëüíûõ ëèíèé |
//| |
//|ExtLine886 - âûáîð öâåòà ñîåäèíèòåëüíûõ ëèíèé ñ ÷èñëàìè Ïåñàâåíòî |
//| |
//|ExtNotFibo - âûáîð öâåòà âñåõ îñòàëüíûõ ÷èñåë |
//| |
//|ExtPesavento - âûáîð öâåòà ÷èñåë Ïåñàâåíòî |
//| |
//|ExtGartley886 - âûáîð öâåòà ÷èñëà .886 è äðóãèõ äîïîëíèòåëüíûõ |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for Gartley Patterns" |
//| |
//|----------------------------------------------------------------------|
//|maxDepth - ìàêñèìàëüíîå çíà÷åíèå Depth (minBars), äî êîòîðîãî ìîæåò |
//| èçìåíÿòüñÿ ïàðàìåòð Depth çèãçàãà ïðè àêòèâíîì ñêàíèðîâàíèè|
//| äëÿ ïîèñêà ïàòòåðíîâ Gartley |
//|minDepth - çàäàåò ìèíèìàëüíîå çíà÷åíèå Depth äëÿ ïîèñêà ïàòòåðíîâ |
//| Gartley. |
//| |
//|DirectionOfSearchMaxMin - çàäàåò íàïðàâëåíèå ïîèñêà: |
//| false - îò minDepth ê maxDepth |
//| true - îò maxDepth ê minDepth |
//| |
//|NumberPattern -Íîìåð ïàòòåðíà, ïî êîòîðîìó êàëèáðóåòñÿ çèãçàã è |
//| ïàðàìåòðû êîòîðîãî âûâîäÿòñÿ ÷åðåç InfoTF |
//| |
//|ExtGartleyTypeSearch - ðåæèì ïîèñêà ïàòòåðíîâ |
//| 0 - ïîèñê çàêàí÷èâàåòñÿ ïîñëå ïåðâîãî íàéäåííîãî ïàòòåðíà |
//| 1 - âûâîäÿòñÿ âñå ïàòòåðíû íà ó÷àñòêå, çàäàííîì |
//| ïàðàìåòðîì maxBarToD. Ïîèñê ïîâòîðÿåòñÿ ïðè êàæäîì |
//| ïåðåñ÷åòå çèãçàãà |
//| 2 - âûâðäÿòñÿ âñå ïàòòåðíû íà ó÷àñòêå, çàäàííîì |
//| ïàðàìåòðîì mxBarToD. Ïîèñê ïðîèçâîäèòñÿ òîëüêî îäèí ðàç|
//| |
//|ExtHiddenPP - ðåæèì îòîáðàæåíèÿ çèãçàãà |
//| 0 - çèãçàã íå âûâîäèòñÿ. Âûâîäÿòñÿ òîëüêî òî÷êè ó |
//| âåðøèí çèãçàãà. Ïàòòåðíû Ïåñàâåíòî íå âûâîäÿòñÿ. |
//| 1 - âûâîäèòñÿ çèãçàã îòêàëèáðîâàííûé ïàòòåðíîì, çàäàííûì |
//| ïàðàìåòðîì NumberPattern. Ïàòòåðíû Ïåñàâåíòî âûâîäÿòñÿ |
//| îáû÷íûì îáðàçîì. |
//| 2 - çèãçàã íå âûâîäèòñÿ. Âûâîäÿòñÿ òîëüêî òî÷êè ó |
//| âåðøèí çèãçàãà. Ïàòòåðíû Ïåñàâåíòî âûâîäÿòñÿ òîëüêî |
//| äëÿ âåðøèí ïàòòåðíîâ Gartley |
//| |
//|ExtGartleyOnOff - âêëþ÷àåò ïîêàç ïàòòåðíîâ Gartley. |
//| |
//|maxBarToD - çàäàåò ìàêñèìàëüíîå êîëè÷åñòâî áàðîâ îò íóëåâîãî |
//| äî òî÷êè D ïàòòåðíà |
//| |
//|RangeForPointD - ðàçðåøàåò ïîêàç çîíû ðàçâèòèÿ òî÷êè D |
//| |
//|ExtColorRangeForPointD - öâåò ðàìêè çîíû ðàçâèòèÿ òî÷êè D |
//| |
//|ExtColorPatterns - öâåò òðåóãîëüíèêîâ ïàòòåðíîâ |
//| |
//|ExtColorPatternList - çàäàåòñÿ ñïèñîê öâåòîâ äëÿ çàêðàñêè êðûëüåâ |
//| ïàòòåðíîâ Gartley. Íàçâàíèÿ öâåòîâ ïåðå÷èñëåíû |
//| ÷åðåç çàïÿòóþ. Åñëè êàêîé ëèáî öâåò áóäåò |
//| çàïèñàí ñ îøèáêîé, òî äëÿ ýòîãî öâåòà âûáèðàåòñÿ|
//| êðàñíûé öâåò |
//| |
//|ExtDeltaGartley - äîïóñê íà îòêëîíåíèå öåíû äëÿ ïîèñêà ïàòòåðíîâ |
//| ïî óìîë÷àíèþ 9% - 0.09 |
//| |
//|ExtCD - âåëè÷èíà ëó÷à CD ïàòòåðíà îòíîñèòåëüíî ëó÷à BC ïîñëå êîòîðîé |
//| íà÷èíàåòñÿ ïîèñê ïàòòåðíîâ (âîçìîæíî - ýòî ëèøíèé ïàðàìåòð) |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for Andrews Pitchfork" |
//| |
//|----------------------------------------------------------------------|
//|ExtPitchforkDinamic > 0 (=1) âûâîäÿòñÿ äèíàìè÷åñêèå âèëû Ýíäðþñà îò |
//| ïîñëåäíèõ äâóõ ýêñòðåìóìîâ ZigZag |
//| =2 50% ìåäèàíà |
//| =3 50% âèëû |
//| =4 ëèíèè Øèôôà |
//| |
//|ExtPitchforkStatic > 0 (=1) âûâîäÿòñÿ ñòàòè÷åñêèå âèëû Ýíäðþñà îò |
//| ýêñòðåìóìà ZigZag ñ íîìåðîì ExtPitchforkStaticNum |
//| =2 50% ìåäèàíà |
//| =3 50% âèëû |
//| =4 ëèíèè Øèôôà |
//| |
//|3<ExtPitchforkStaticNum<=9 - íîìåð âåðøèíû ZigZag, îò êîòîðîé |
//| íà÷èíàþòñÿ ñòàòè÷åñêèå âèëû |
//| |
//|ExtLinePitchforkD è |
//|ExtLinePitchforkS çàäàåò öâåò äèíàìè÷åñêèõ è ñòàòè÷åñêèõ âèë |
//| |
//|ExtPitchforkStaticColor - çàäàåò öâåò çàêðàñêè êàíàëà âèë |
//| |
//|ExtPitchforkStyle - çàäàåò ñòèëü âûâîäà âèë. |
//| 0 - Ñïëîøíàÿ ëèíèÿ |
//| 1 - Øòðèõîâàÿ ëèíèÿ |
//| 2 - Ïóíêòèðíàÿ ëèíèÿ |
//| 3 - Øòðèõ-ïóíêòèðíàÿ ëèíèÿ |
//| 4 - Øòðèõ-ïóíêòèðíàÿ ëèíèÿ ñ äâîéíûìè òî÷êàìè |
//| |
//|ExtPitchforkWidth - çàäàåò òîëùèíó âûâîäà âèë |
//| |
//|ExtISLStyle - çàäàåò ñòèëü âûâîäà ISL. |
//| |
//|ExtISLWidth - çàäàåò òîëùèíó âûâîäà ISL |
//| |
//|ExtFiboFanDinamic - ðàçðåøàåò âûâîä äèíàìè÷åñêèõ ôèáî-âååðîâ |
//| |
//|ExtFiboFanStatic - ðàçðåøàåò âûâîä ñòàòè÷åñêèõ ôèáî-âååðîâ |
//| âûâîäèòñÿ òîëüêî ñî ñòàòè÷åñêèìè âèëàìè |
//| |
//|ExtFiboFanD - çàäàåò öâåò äèíàìè÷åñêèõ ôèáî-âååðîâ |
//| |
//|ExtFiboFanS - çàäàåò öâåò ñòàòè÷åñêèõ ôèáî-âååðîâ |
//| |
//|ExtFiboFanExp - êîëè÷åñòâî ëó÷åé ôèáî âååðà. true=6, false=4 |
//| |
//|ExtFiboFanHidden - ðàçðåøàåò âûâîä ìàðêèðîâêè ëó÷åé ôèáî-âååðîâ |
//| |
//|ExtFiboFanMedianaDinamicColor è |
//|ExtFiboFanMedianaStaticColor - çàäàþò öâåò ôèáî-âååðîâ íà |
//| ñðåäèííîé ëèíèè äèíàìè÷åñêèõ è ñòàòè÷åñêèõ âèë |
//| |
//| Âðåìåííûå çîíû ôèáî âûâîäÿòñÿ òîëüêî äëÿ ñòàòè÷åñêèõ âèë |
//| |
//|ExtFiboTime1 - âêëþ÷àåò âðåìåííûå çîíû ôèáî 1. |
//| |
//|ExtFiboTime2 - âêëþ÷àåò âðåìåííûå çîíû ôèáî 2. |
//| |
//|ExtFiboTime3 - âêëþ÷àåò âðåìåííûå çîíû ôèáî 3. |
//| |
//|ExtFiboTime1C - çàäàåò öâåò ëèíèé âðåìåííîé çîíû 1. |
//| |
//|ExtFiboTime2C - çàäàåò öâåò ëèíèé âðåìåííîé çîíû 2. |
//| |
//|ExtFiboTime3C - çàäàåò öâåò ëèíèé âðåìåííîé çîíû 3. |
//| |
//|ExtVisibleDateTime - âêëþ÷àåò ïîêàç çíà÷åíèé äàòû è âðåìåíè âðåìåííûõ |
//| çîí |
//| |
//|ExtVisibleNumberFiboTime - ïîçâîëÿåò âûäåëèòü òå Fibo Time, ó êîòîðûõ |
//| íåîáõîäèìî ïîêàçàòü çíà÷åíèå äàòû è âðåìåíè |
//| |
//| 1 - âûâîäèòñÿ çíà÷åíèå äàòû è âðåìåíè |
//| 0 - íå âûâîäèòñÿ |
//| |
//| ïåðâàÿ öèôðà - äëÿ Fibo Time 1 |
//| âòîðàÿ öèôðà - äëÿ Fibo Time 2 |
//| òðåòüÿ öèôðà - äëÿ Fibo Time 3 |
//| |
//|ExtPivotZoneDinamicColor - çàäàåò öâåò çàêðàñêè äèíàìè÷. Pivot Zone |
//| |
//|ExtPivotZoneStaticColor - çàäàåò öâåò çàêðàñêè ñòàòè÷. Pivot Zone |
//| |
//|ExtPivotZoneFramework - âûâîä Pivot Zone â âèäå ðàìêè (ïî óìîë÷àíèþ) |
//| èëè â âèäå çàêðàøåííîãî ïðÿìîóãîëüíèêà |
//| |
//|ExtUTL - âêëþ÷àåò âåðõíþþ êîíòðîëüíóþ ëèíèþ âèë Ýíäðþñà |
//| |
//|ExtLTL - âêëþ÷àåò íèæíþþ êîíòðîëüíóþ ëèíèþ âèë Ýíäðþñà |
//| |
//|ExtUWL - âêëþ÷àåò âåðõíèå ïðåäóïðåæäàþùèå ëèíèè |
//| |
//|ExtLWL - âêëþ÷àåò íèæíèå ïðåäóïðåæäàþùèå ëèíèè |
//| |
//|ExtLongWL - ðåãóëèðóåò äëèíó ïðåäóïðåæäàþùèõ ëèíèé |
//| |
//|ExtISLDinamic - âêëþ÷àåò âíóòðåííèå ñèãíàëüíûå ëèíèè |
//| äëÿ äèíàìè÷åñêèõ âèë Ýíäðþñà |
//|ExtISLStatic - âêëþ÷àåò âíóòðåííèå ñèãíàëüíûå ëèíèè |
//| äëÿ ñòàòè÷åñêèõ âèë Ýíäðþñà |
//| |
//|ExtRL146 - âêëþ÷àåò äîïîëíèòåëüíî RL 14.6 è RL 23.6 |
//| |
//|ExtRLine - ðàçðåøàåò âûâîä ëèíèé ðåàêöèè âäîëü âèë Ýíäðþñà |
//| |
//|ExtRLineBase - ñêðûâàåò íàïðàâëÿþùèå ëèíèé ðåàêöèè |
//| |
//|ExtPitchforkCandle - âêëþ÷àåò âûâîä êîìïëåêòà âèë îò âûáðàííûõ ñâå÷åé |
//| |
//|ExtDateTimePitchfork_1, ExtDateTimePitchfork_2, |
//| |
//|ExtDateTimePitchfork_3 - çàäàåòñÿ äàòà è âðåìÿ ñâå÷åé, îò êîòîðûõ |
//| áóäóò ñòðîèòüñÿ âèëû Ýíäðþñà |
//| |
//|ExtPitchfork_1_HighLow - ïðè ïîñòðîåíèè âèë îò âûáðàííûõ ñâå÷åé çà- |
//| äàåò îò ìàêñèìóìà èëè ìèíèìóìà ñâå÷è ñòðîèòü ïåðâóþ òî÷êó âèë |
//| |
//|ExtFiboFreeFT1, ExtFiboFreeFT2, ExtFiboFreeFT3 - çàäàþò çíà÷åíèÿ |
//| ïîëüçîâàòåëüñêèõ Fibo Time |
//| |
//|ExtFiboFreeRL - çàäàåò çíà÷åíèå ïîëüçîâàòåëüñêèõ ëèíèé ðåàêöèè. |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for micmed Channels" |
//| |
//|----------------------------------------------------------------------|
//| Êàíàëû micmed'a ñòðîÿòñÿ ñ ïîìîùüþ âèë Ýíäðþñà |
//| |
//|ExtCM_0_1A_2B_Static, ExtCM_0_1A_2B_Dinamic - êàíàëû micmed'a. |
//| Çíà÷åíèå âûáèðàåòñÿ èç 0-5 |
//| |
//|ExtCM_FiboStatic, ExtCM_FiboDinamic - çàäàåòñÿ ïîëîæåíèå ñðåäèííîé |
//| ëèíèè âèë Ýíäðþñà äëÿ ïîñòðîåíèÿ êàíàëîâ micmed'a |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for fibo Fan" |
//| |
//|----------------------------------------------------------------------|
//|ExtFiboFanColor - âêëþ÷àåò ïðîèçâîëüíûå ôèáîâååðû çàäàíèåì öâåòà. |
//| |
//|ExtFiboFanNum - íîìåð ëó÷à ZigZag-a, íà êîòîðîì áóäóò âûâîäèòüñÿ |
//| ïðîèçâîëüíûå ôèáîâååðû. 1<ExtFiboStaticNum<=9 |
//| |
//|ExtFanStyle - óñòàíàâëèâàåò ñòèëü ëèíèé óðîâíåé ôèáî âååðîâ |
//| |
//|ExtFanWidth - óñòàíàâëèâàåò òîëùèíó ëèíèé óðîâíåé ôèáî âååðîâ |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for fibo Expansion" |
//| |
//|----------------------------------------------------------------------|
//|ExtFiboExpansion - ðàñøèðåíèÿ Ôèáîíà÷÷è, êàê â Ìåòàòðåéäåðå |
//| < 2 ðàñøèðåíèÿ Ôèáîíà÷÷è íå âûâîäÿòñÿ |
//| = 2 äèíàìè÷åñêîå ðàñøèðåíè Ôèáîíà÷÷è |
//| >2 è <=9 ñòàòè÷åñêèå ðàñøèðåíèÿ Ôèáîíà÷÷è |
//| |
//|ExtFiboExpansionColor - çàäàåò öâåò ëèíèé ðàñøèðåíèé Ôèáîíà÷÷è |
//| |
//|ExtExpansionStyle - óñòàíàâëèâàåò ñòèëü ëèíèé óðîâíåé ðàñøèðåíèé |
//| Ôèáîíà÷÷è |
//| |
//|ExtExpansionWidth - óñòàíàâëèâàåò òîëùèíó ëèíèé óðîâíåé ðàñøèðåíèé |
//| Ôèáîíà÷÷è |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for versum Levels" |
//| |
//|----------------------------------------------------------------------|
//|ExtVLDinamicColor - âêëþ÷àå Versum Levels äèíàìè÷åñêèå âûáîðîì öâåòà |
//| |
//|ExtVLStaticColor - âêëþ÷àåò Versum Levels ñòàòè÷åñêèå âûáîðîì öâåòà |
//| |
//|ExtVLStaticNum - çàäàåò íîìåð âåðøèíû, îò êîòîðîé âûâîäÿòñÿ |
//| Versum Levels |
//| |
//|ExtVLStyle - óñòàíàâëèâàåò ñòèëü ëèíèé óðîâíåé Versum Levels |
//| |
//|ExtVLWidth - óñòàíàâëèâàåò òîëùèíó ëèíèé óðîâíåé Versum Levels |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for fibo Arc" |
//| |
//|----------------------------------------------------------------------|
//|ExtArcDinamicNum - çàäàåò íîìåð ïåðåëîìîâ ZigZag äî êîòîðûõ |
//| ñòðîÿòñÿ äèíàìè÷åñêèå ôèáî äóãè |
//| |
//|ExtArcStaticNum - çàäàåò íîìåð ïåðåëîìîâ ZigZag íà êîòîðûõ |
//| ñòðîÿòñÿ ñòàòè÷åñêèå ôèáî äóãè |
//| |
//|ExtArcDinamicColor - çàäàåò öâåò äèíàìè÷åñêèõ ôèáî äóã |
//| |
//|ExtArcStaticColor - çàäàåò öâåò ñòàòè÷åñêèõ ôèáî äóã |
//| |
//|ExtArcDinamicScale - çàäàåò ìàñøòàá äèíàìè÷åñêèõ ôèáî äóã |
//| 0 - àâòîìàñøòàá; >0 - ìàñøòàá çàäàåòñÿ ïîëüçîâàòåëåì |
//| |
//|ExtArcStaticScale çàäàåò ìàñøòàá ñòàìè÷åñêèõ ôèáî äóã |
//| 0 - àâòîìàñøòàá; >0 - ìàñøòàá çàäàåòñÿ ïîëüçîâàòåëåì |
//| |
//|ExtArcStyle - óñòàíàâëèâàåò ñòèëü ëèíèé óðîâíåé ôèáî äóã |
//| |
//|ExtArcWidth - óñòàíàâëèâàåò òîëùèíó ëèíèé óðîâíåé ôèáî äóã |
//|----------------------------------------------------------------------|
//| |
//| "Golden Spiral" |
//| |
//|----------------------------------------------------------------------|
//|ExtSpiralNum - çàäàåò íîìåð ïåðåëîìîâ ZigZag, íà êîòîðûõ |
//| ñòðîèòñÿ çîëîòàÿ ñïèðàëü |
//| |
//|goldenSpiralCycle - çàäàåò ðàññòîÿíèå ìåæäó âèòêàìè. ×åì áîëüøå ÷èñëî,|
//| òåì ìåíüøå ðàññòîÿíèå ìåæäó âèòêàìè ñïèðàëè. |
//| |
//|accurity - çàäàåò äëèíó îòðåçêîâ ïðÿìûõ ëèíèé, êîòîðûìè ñòðîèòñÿ |
//| ñïèðàëü |
//| |
//|NumberOfLines çàäàåò êîëè÷åñòâî îòðåçêîâ ïðÿìûõ ëèíèé, èç êîòîðûõ |
//| ñòðîèòñÿ ñïèðàëü |
//| |
//|clockWiseSpiral - çàäàåò íàïðàâëåíèå çàêðó÷èâàíèÿ ñïèðàëè |
//| true - ñïèðàëü çàêðó÷èâàåòñÿ ïî ÷àñîâîé ñòðåëêå |
//| false - ñïèðàëü çàêðó÷èâàåòñÿ ïðîòèâ ÷àñîâîé ñòðåëêè|
//| |
//|spiralColor1 - çàäàåò ïåðâûé öâåò ëèíèè ñïèðàëè |
//| |
//|spiralColor2 - çàäàåò âòîðîé öâåò ëèíèè ñïèðàëè |
//| |
//|ExtSpiralStyle - óñòàíàâëèâàåò ñòèëü ëèíèè ñïèðàëè |
//| |
//|ExtSpiralWidth - óñòàíàâëèâàåò òîëùèíó ëèíèè ñïèðàëè |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for Pivot ZigZag" |
//| |
//|----------------------------------------------------------------------|
//|ExtPivotZZ1Color - çàäàåò öâåò Pivot ZigZag 1 |
//| |
//|ExtPivotZZ2Color - çàäàåò öâåò Pivot ZigZag 2 |
//| |
//|ExtPivotZZ1Num - çàäàåò íîìåðà ëó÷à, íà êîòîðîì ðàññ÷èòûâàåòñÿ 1 |
//| Pivot ZigZag |
//| |
//|ExtPivotZZ2Num - çàäàåò íîìåðà ëó÷à, íà êîòîðîì ðàññ÷èòûâàåòñÿ 2 |
//| Pivot ZigZag |
//| |
//|ExtPivotZZStyle - óñòàíàâëèâàåò ñòèëü ëèíèé óðîâíåé Pivot ZigZag |
//| |
//|ExtPivotZZWidth - óñòàíàâëèâàåò òîëùèíó ëèíèé óðîâíåé Pivot ZigZag |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for Channels" |
//| |
//|----------------------------------------------------------------------|
//|ExtTypeChannels - Çàäàåò òèï êàíàëà. |
//| 1 - ëèíèÿ òðåíäà ïðîõîäèò ÷åðåç ïåðåëîì çèãçàãà è |
//| ïî êàñàòåëüíîé ê ðûíêó. Ëèíèÿ öåëåé ïðîõîäèò |
//| ïàðàëëåëüíî ëèíèè òðåíäà. Ýòîò êàíàë ñòðîèòñÿ |
//| èëè íà îäíîì ëó÷å, èëè íà äâóõ ïîñëåäîâàòåëüíûõ |
//| |
//| 2 - ëèíèÿ òðåíäà è ëèíèÿ öåëåé ïðîõîäÿò ïàðàëëåëüíî |
//| ëó÷ó çèãçàãà ïî êàñàòåëüíîé ê ðûíêó. Ëó÷ çèãçàãà|
//| ìîæåò ïðîõîäèòü ìåæäó ëþáûìè ïåðåëîìàìè îò 1 äî |
//| 9 |
//| |
//|ExtTypeLineChannels - çàäàåò òèï ëèíèé òðåíäà è öåëåé. Ìîæåò |
//| ïðèíèìàòü çíà÷åíèÿ îò 0 äî 3 |
//| |
//|ExtChannelsNum - çàäàåò íîìåðà ïåðåëîìîâ çèãçàãà, ìåæäó êîòîðûìè |
//| ñòðîèòñÿ êàíàë. |
//| |
//|ExtLTColor - çàäàåò öâåò ëèíèè òðåíäà |
//|ExtLCColor - çàäàåò öâåò ëèíèè öåëåé |
//|ExtLTChannelsStyle - çàäàåò ñòèëü ëèíèè òðåíäà |
//|ExtLTChannelsWidth - çàäàåò òîëùèíó ëèíèè òðåíäà |
//|ExtLCChannelsStyle - çàäàåò ñòèëü ëèíèè öåëåé |
//|ExtLCChannelsWidth - çàäàåò òîëùèíó ëèíèè öåëåé |
//|----------------------------------------------------------------------|
//| |
//| "Parameters for Fibo Time" |
//| |
//|----------------------------------------------------------------------|
//|ExtFiboTimeNum - çàäàåò ïåðåëîìû çèãçàãà, îò êîòîðûõ ñòðîÿòñÿ |
//| ExtFiboTime, íå ïðèâÿçàííûå ê âèëàì Ýíäðþñà |
//| |
//|ExtFiboTime1x- âêëþ÷àåò âðåìåííûå çîíû ôèáî 1. |
//| |
//|ExtFiboTime2x- âêëþ÷àåò âðåìåííûå çîíû ôèáî 2. |
//| |
//|ExtFiboTime3x- âêëþ÷àåò âðåìåííûå çîíû ôèáî 3. |
//| |
//|ExtFiboTime1Cx- çàäàåò öâåò ëèíèé âðåìåííîé çîíû 1. |
//| |
//|ExtFiboTime2Cx- çàäàåò öâåò ëèíèé âðåìåííîé çîíû 2. |
//| |
//|ExtFiboTime3Cx- çàäàåò öâåò ëèíèé âðåìåííîé çîíû 3. |
//| |
//|ExtVisibleDateTimex- âêëþ÷àåò ïîêàç çíà÷åíèé äàòû è âðåìåíè âðåìåííûõ |
//| çîí |
//| |
//|ExtVisibleNumberFiboTimex- ïîçâîëÿåò âûäåëèòü òå Fibo Time, ó êîòîðûõ |
//| íåîáõîäèìî ïîêàçàòü çíà÷åíèå äàòû è âðåìåíè |
//| |
//| 1 - âûâîäèòñÿ çíà÷åíèå äàòû è âðåìåíè |
//| 0 - íå âûâîäèòñÿ |
//| |
//| ïåðâàÿ öèôðà - äëÿ Fibo Time 1 |
//| âòîðàÿ öèôðà - äëÿ Fibo Time 2 |
//| òðåòüÿ öèôðà - äëÿ Fibo Time 3 |
//|----------------------------------------------------------------------|
//| |
//| "Parameters Exp" |
//| |
//|----------------------------------------------------------------------|
//|chHL = true - âûâîäèò óðîâíè ïîäòâåðæäåíèÿ äëÿ ðåæèìîâ |
//| ExtIdicator=1, ExtIdicator=2, ExtIdicator=3 |
//| |
//|PeakDet = true - âûâîäèò óðîâíè ïðåäûäóùèõ ìàêñèìóìîâ äëÿ âñåõ |
//| ðåæèìîâ ExtIndicator |
//| |
//|chHL_PeakDet_or_vts - true - Ïî óìîë÷àíèþ ðàçðåøàåò âûâîä ëèíèé |
//| ïîäòâåðæäåíèÿ (öåíîâîé êàíàë) è óðîâíè ïðåäûäóùèõ ìàêñèìóìîâ ZigZag. |
//| false - âûâîäèòñÿ èíäèêàòîð i-vts. |
//| |
//|ExtLabel =0 îáû÷íûé ðåæèì âûâîäà çèãçàãîâ |
//| =1 âûâîä ìåòîê â ðàñ÷åòíîì ìåñòå ïîÿâëåíèÿ íîâîãî ëó÷à |
//| äëÿ ðåäèìà DT - â âèäå ïîëîñîê ñèìâîëîâ |
//| =3 âûâîä ìåòîê â ðàñ÷åòíîì ìåñòå ïîÿâëåíèÿ íîâîãî ëó÷à |
//| äëÿ ðåæèìà DT - â âèäå îäíîãî ñèìâîëà |
//| |
//|ExtCodLabel - êîä ñèìâîëà äëÿ âûâîäà ìåòêè |
//| |
//|NumberOfBars - Êîëè÷åñòâî áàðîâ îáñ÷¸òà (0-âñå) äëÿ i-vts. |
//| |
//|NumberOfVTS - ýòî, ÿ òàê ïîíèìàþ, ïàðàìåòð ñãëàæèâàíèÿ äëÿ i-vts. |
//| |
//|NumberOfVTS1 - ïàðàìåòð ñãëàæèâàíèÿ äëÿ âòîðîé êîïèè i-vts. |
//|----------------------------------------------------------------------|
//| |
//| "Common Parameters" |
//| |
//|----------------------------------------------------------------------|
//|ExtObjectColor - çàäàåò öâåò ëèíèè, ñîåäèíÿþùåé áàçîâûå òî÷êè îáúåêòîâ|
//| |
//|ExtObjectStyle - çàäàåò còèëü ëèíèè, |
//| ñîåäèíÿþùåé áàçîâûå òî÷êè îáúåêòîâ|
//| |
//|ExtObjectWidth - çàäàåò òîëùèíó ëèíèè, |
//| ñîåäèíÿþùåé áàçîâûå òî÷êè îáúåêòîâ|
//| |
//|ExtDinamic - ðàçðåøàåò âûâîä ñòàòè÷åñêèõ èíñòðóìåíòîâ êàê äèíàìè÷åñêèõ|
//| ïðè ýòîì ïðè ïîÿâëåíèè íîâîãî ëó÷à ñòàòè÷åñêèå |
//| èíñòðóìåíòû ïåðåìåùàþòñÿ íà äðóãèå ïåðåëîìû çèãçàãà |
//| |
//|ExtVisibleDinamic - ïîçâîëÿåò âûäåëèòü, êàêèå ñòàòè÷åñêèå |
//| èíñòðóìåíòû âûâîäèòü â äèíàìè÷åñêîì ðåæèìå |
//| |
//| Âñåãî 10 èíñòðóìåíòîâ. |
//| |
//| Ïåðå÷èñëþ èõ ïî ïîðÿäêó ñëåäîâàíèÿ â ñïèñêå: |
//| 1 - íóìåðàöèÿ ïåðåëîìîâ çèãçàãà |
//| 2 - ñòàòè÷åñêèå ôèáî óðîâíè è ïåðâûé òèï ðàñøèðåíèé ôèáî |
//| 3 - ñòàòè÷åñêèå âèëû Ýíäðþñà è âñå, ÷òî ñâÿçàíî ñ âèëàìè |
//| 4 - ñòàòè÷åñêèå ôèáî âååðû |
//| 5 - ñòàòè÷åñêèå ôèáî ðàñøèðåíèÿ |
//| 6 - ñòàòè÷åñêèå Versum Levels |
//| 7 - ñòàòè÷åñêèå ôèáî äóãè |
//| 8 - ñòàòè÷åñêàÿ ôèáî ñïèðàëü |
//| 9 - ñòàòè÷åñêèé Pivot ZigZag |
//| 10 - êàíàëû |
//| 11 - Fibo Time |
//| |
//| Ïî óìîë÷àíèþ ExtVisibleDinamic = "1000000000" |
//| 0 - âûâîäèòñÿ â ñòàòè÷åñêîì ðåæèìå |
//| 1 - âûâîäèòñÿ â äèíàìè÷åñêîì ðåæèìå |
//| |
//| |
//|ZigZagHighLow - çàäàåò, îò êàêèõ òî÷åê äåëàòü ïîñòðîåíèå |
//| ïàòòåðíîâ Ïåñàâåíòî, âèë Ýíäðþñà è ò.ä. |
//|true - îò ýêñòðåìóìîâ áàðîâ |
//|false - îò ïåðåëîìîâ ZigZag, êîãäà îíè âèñÿò â "âîçäóõå" |
//| |
//|ExtSendMail - îòïðàâêà ñîîáùåíèÿ íà email î ïîÿâèâøåìñÿ ïàòòåðíå. |
//| |
//|ExtAlert - ðàçðåøàåò âûâîä ñîîáùåíèÿ è çâóêîâîãî ñèãíàëà ïðè |
//| âîçíèêíîâåíèè íîâîãî ëó÷à ZigZag |
//| |
//|ExtBack - çàäàåò âûâîä âñåõ îáúåêòîâ â âèäå ôîíà |
//| |
//|ExtSave - ðàçðåøàåò ñîõðàíåíèå êîìïëåêòà ñòàòè÷åñêèõ âèë è |
//| Fibo Time |
//| |
//|info_comment - ïîçâîëÿåò âûäåëèòü ãðóïïó ïàðàìåòðîâ äëÿ âûâîäà ýòîé |
//| ãðóïïû â èíôîðìàöèîííîé ñòðîêå. |
//| Âñåãî 4 ãðóïïû ïàðàìåòðîâ. |
//| 0 - ãðóïïà ïàðàìåòðîâ íå âûâîäèòñÿ |
//| 1 - ãðóïïà ïàðàìåòðîâ âûâîäèòñÿ |
//| |
//| Ãðóïïû ïàðàìåòðîâ: |
//| 1 - èíôîðìàöèÿ î ñâå÷àõ ñî ñòàðøèõ òàéìôðåéìîâ |
//| 2 - % èçìåíåíèÿ ëó÷à äëÿ ëó÷åâîé òàêòèêè |
//| 3 - ïàðàìåòðû çèãçàãîâ |
//| 4 - èíôîðìàöèÿ î íàéäåííîì ïàòòåðíå Gartley |
//| |
//|infoTF - âêëþ÷àåò èíôîðìàöèþ ïî 5 ñòàðøèì òàéìôðåéìàì. |
//| Âûâîäèòñÿ íàèìåíîâàíèå òàéìôðåéìà. Ðàçìåð ñâå÷è â ïóíêòàõ. |
//| Òåêóùåå ïîëîæåíèå öåíû îòíîñèòåëüíî ìèíèìóìà. |
//| Òàêæå ïîêàçûâàåò Âûñîòó ëó÷à çèãçàãà âûðàæåííóþ â ïðîöåíòàõ. |
//| Ïîêàçûâàåò ðåæèì ðàáîòû èíäèêàòîðà è ïàðàìåòðû çèãçàãîâ. |
//| Ïîêàçûâàåò íàçâàíèÿ ïàòòåðíîâ Gartley è öåíîâîé ðàçìåð çîíû |
//| âîçìîæíîãî ðàçâèòèÿ òî÷êè D äëÿ ïàòòåðíîâ Gartley. |
//| |
//|ExtComplekt - çàäàåò íîìåð èíäèêàòîðà. Ïðè âûâîäå íà ãðàôèê íåñêîëüêèõ|
//| èíäèêàòîðîâ ÷åðåç ýòîò ïàðàìåòð çàäàåòñÿ íîìåð êîïèè. |
//| Ïðè ýòîì âñå êîïèè èíäèêàòîðà áóäóò ðàáîòàòü êîððåêòíî. |
//+----------------------------------------------------------------------+
#property copyright "nen"
#property link "http://onix-trade.net/forum/index.php?s=&showtopic=118&view=findpost&p=310019"
// îïèñàíèå http://onix-trade.net/forum/index.php?s=&showtopic=373&view=findpost&p=72865
#property stacksize 65535
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Magenta //Red
//#property indicator_width6 5
#property indicator_color2 Green
#property indicator_color3 Orange
#property indicator_color4 LightSkyBlue
#property indicator_color5 LemonChiffon
//#property indicator_color4 Chartreuse
//#property indicator_color5 Red
#property indicator_color6 Magenta //Yellow
#import "user32.dll"
int GetClientRect(int hWnd,int lpRect[]);
#import
#define pi 3.14159265
#define phi 1.61803399
//===================================
//---- indicator parameters
extern string ______________0_____________ = "Parameters for ZigZag";
extern int ExtIndicator = 11;
extern int minBars = 12;
extern int minSize = 50;
// Ïåðåìåííûå îò ZigZag èç ÌÒ
extern int ExtDeviation = 8;
extern int ExtBackstep = 3;
// Ïåðåìåííàÿ äëÿ nen-ZigZag
extern int GrossPeriod = 1440;
//----
extern double minPercent = 0;
extern int ExtPoint=11; // êîëè÷åñòâî òî÷åê çèãçàãà äëÿ çèãçàãà Talex
// Ïàðàìåòðû äëÿ çèãçàãà, ðàçðàáîòàííîãî wellx
extern int StLevel = 28;
extern int BigLevel = 32;
extern bool auto = true;
extern double minBar=38.2, maxBar=61.8;
extern bool ExtStyleZZ = true;
// âûâîä íîìåðîâ ïåðåëîìîâ çèãçàãîâ
extern bool ExtNumberPeak = false;
extern bool ExtNumberPeak10 = true;
extern bool ExtNumberPeakLow = true;
extern color ExtNumberPeakColor = Red;
extern int ExtNumberPeakFontSize = 11;
extern string ______________1_____________ = "Parameters for fibo Levels";
extern bool ExtFiboDinamic = false;
extern bool ExtFiboStatic = false;
extern int ExtFiboStaticNum = 2;
extern int ExtFiboType = 1;
extern string ExtFiboTypeFree = "0,0.382,0.618,0.764,1,1.236,1.618";
extern bool ExtFiboCorrectionExpansion = false;
extern color ExtFiboD = Sienna;
extern color ExtFiboS = Teal;
extern int ExtFiboStyle = 2;
extern int ExtFiboWidth = 0;
//-------------------------------------
extern string ______________2_____________ = "Parameters for Pesavento Patterns";
extern int ExtPPWithBars = 0;
extern int ExtHidden = 1;
extern int ExtFractal = 7;
extern int ExtFractalEnd = 7;
extern int ExtFiboChoice = 2;
extern bool ExtFiboZigZag = false;
extern double ExtDelta = 0.04;
extern int ExtDeltaType = 2;
extern int ExtSizeTxt = 7;
extern color ExtLine = DarkBlue;
extern color ExtLine886 = Purple;
extern color ExtNotFibo = SlateGray;
extern color ExtPesavento = Yellow;
extern color ExtGartley886 = GreenYellow;
color colorPPattern;
// Ïàòòåðíû Gartley
extern string ______________3_____________ = "Parameters for Gartley Patterns";
extern int maxDepth = 33;
extern int minDepth = 3;
extern bool DirectionOfSearchMaxMin = true;
extern int NumberPattern = 1; // Íîìåð ïàòòåðíà, ïî êîòîðîìó êàëèáðóåòñÿ çèãçàã è ïàðàìåòðû êîòîðîãî âûâîäÿòñÿ ÷åðåç InfoTF
extern int ExtGartleyTypeSearch = 0;
extern int ExtHiddenPP = 1;
extern bool ExtGartleyOnOff = false;
//extern int VarDisplay=0;
extern int maxBarToD = 15;
extern bool RangeForPointD = true;
extern color ExtColorRangeForPointD = Red;
extern color ExtColorPatterns = Blue;
extern string ExtColorPatternList = "Blue,DarkGreen,Navy,Sienna,MediumBlue,RoyalBlue,DodgerBlue,CornflowerBlue,LightSkyBlue,SlateBlue,MediumSlateBlue,SlateGray,LightSteelBlue";
extern double ExtDeltaGartley = 0.09;
extern double ExtCD = 0.886;
//----------------------------------------------------------------------
// Êîìïëåêò èíñòðóìåíòîâ, ðàáîòàþùèõ ñîâìåñòíî ñ âèëàìè Ýíäðþñà. Íà÷àëî.
//----------------------------------------------------------------------
// Ïåðåìåííûå äëÿ âèë Ýíäðþñà
extern string ______________4_____________ = "Parameters for Andrews Pitchfork";
extern int ExtPitchforkDinamic = 0;
extern int ExtPitchforkStatic = 0;
extern int ExtPitchforkStaticNum = 3;
extern color ExtLinePitchforkD = MediumSlateBlue;
extern color ExtLinePitchforkS = MediumBlue;
extern color ExtPitchforkStaticColor = CLR_NONE;
extern int ExtPitchforkStyle = 1;
extern int ExtPitchforkWidth = 0;
extern int ExtISLStyle = 1;
extern int ExtISLWidth = 0;
// Ïåðåìåííûå äëÿ ôèáîâååðîâ
extern bool ExtFiboFanDinamic = false; // ìîæåò âûâîäèòüñÿ ñàìîñòîÿòåëüíî
extern bool ExtFiboFanStatic = false; // âûâîäèòñÿ òîëüêî ñîâìåñòíî ñî ñòàòè÷åñêèìè âèëàìè
extern bool ExtFiboFanExp = true;
extern bool ExtFiboFanHidden = false;
extern color ExtFiboFanD = Sienna;
extern color ExtFiboFanS = Teal;
extern color ExtFiboFanMedianaDinamicColor = CLR_NONE;
extern color ExtFiboFanMedianaStaticColor = CLR_NONE;
// Âðåìåííûå çîíû Ôèáî â ñîñòàâå âèë Ýíäðþñà
extern bool ExtFiboTime1 = false;
extern bool ExtFiboTime2 = false;
extern bool ExtFiboTime3 = false;
extern color ExtFiboTime1C = Teal;
extern color ExtFiboTime2C = Sienna;
extern color ExtFiboTime3C = Aqua;
extern bool ExtVisibleDateTime = false;
extern string ExtVisibleNumberFiboTime = "111";
// Pivot Zone
extern color ExtPivotZoneDinamicColor = CLR_NONE;
extern color ExtPivotZoneStaticColor = CLR_NONE;
extern bool ExtPivotZoneFramework = false;
// Âêëþ÷åíèå ïðåäóïðåæäàþùèõ è êîíòðîëüíûõ ëèíèé
extern bool ExtUTL = false;
extern bool ExtLTL = false;
extern bool ExtUWL = false;
extern bool ExtLWL = false;
extern bool ExtLongWL = false;
extern bool ExtISLDinamic = false;
extern bool ExtISLStatic = false;
// Âêëþ÷åíèå ëèíèé ðåàêöèè
extern bool ExtRL146 = false;
extern bool ExtRLine = true;
extern bool ExtRLineBase = true;
//----------------------------------------------------------------------
//extern datetime ExtDateTimePitchfork_1 = D'11.07.2006 00:00';
//extern datetime ExtDateTimePitchfork_2 = D'19.07.2006 00:00';
//extern datetime ExtDateTimePitchfork_3 = D'09.08.2006 00:00';
//----------------------------------------------------------------------
// Íèæå âûáðàíû âðåìåííûå ïàðàìåòðû äëÿ ïîñòðîåíèÿ âèë Ýíäðþñà äëÿ âñåé èñòîðèè eurusd äëÿ äíåâîê
//----------------------------------------------------------------------
extern bool ExtPitchforkCandle = false;
extern datetime ExtDateTimePitchfork_1 = D'15.06.1989 00:00';
extern datetime ExtDateTimePitchfork_2 = D'08.03.1995 00:00';
extern datetime ExtDateTimePitchfork_3 = D'26.10.2000 00:00';
extern bool ExtPitchfork_1_HighLow = false;
//----------------------------------------------------------------------
// Çàäàíèå ïîëüçîâàòåëüñêè[ óðîâíåé ôèá äëÿ èíñòðóìåíòîâ, âñòðîåííûõ â âèëû Ýíäðþñà
extern string ExtFiboFreeFT1 = "0.382,0.618,1.0,1.236,1.618";
extern string ExtFiboFreeFT2 = "0.382,0.618,1.0,1.236,1.618";
extern string ExtFiboFreeFT3 = "0.382,0.618,1.0,1.236,1.618";
extern string ExtFiboFreeRL = "0.382,0.618,1,1.618,2.618";
//extern string ExtFiboFreeISL = "0.25,0.75";
//extern string ExtFiboFreeXWL = "0.5,1,2,4";
//----------------------------------------------------------------------
// Êàíàëû micmed'a
extern string ________________5_____________ = "Parameters for micmed Channels";
extern int ExtCM_0_1A_2B_Dinamic = 0, ExtCM_0_1A_2B_Static = 0;
extern double ExtCM_FiboDinamic = 0.618, ExtCM_FiboStatic = 0.618;
//----------------------------------------------------------------------
// Êîìïëåêò èíñòðóìåíòîâ, ðàáîòàþùèõ ñîâìåñòíî ñ âèëàìè Ýíäðþñà. Êîíåö.
//----------------------------------------------------------------------
// Ôèáîâååðû äîïîëíèòåëüíûå
extern string ______________6_____________ = "Parameters for fibo Fan";
extern color ExtFiboFanColor = CLR_NONE;
extern int ExtFiboFanNum = 0;
extern int ExtFanStyle = 1;
extern int ExtFanWidth = 0;
// Ðàñøèðåíèÿ Ôèáîíà÷÷è
extern string ______________7_____________ = "Parameters for fibo Expansion";
extern int ExtFiboExpansion = 0;
extern color ExtFiboExpansionColor = Yellow;
extern int ExtExpansionStyle = 2;
extern int ExtExpansionWidth = 0;
//--------------------------------------
extern string ______________8_____________ = "Parameters for versum Levels";
extern color ExtVLDinamicColor = CLR_NONE;
extern color ExtVLStaticColor = CLR_NONE;
extern int ExtVLStaticNum = 0;
extern int ExtVLStyle = 0;
extern int ExtVLWidth = 0;
//--------------------------------------
extern string ______________9_____________ = "Parameters for fibo Arc";
extern int ExtArcDinamicNum = 0;
extern int ExtArcStaticNum = 0;
extern color ExtArcDinamicColor = Sienna;
extern color ExtArcStaticColor = Teal;
extern double ExtArcDinamicScale = 0;
extern double ExtArcStaticScale = 0;
extern int ExtArcStyle = 0;
extern int ExtArcWidth = 0;
extern string ______________10_____________ = "Golden Spiral";
extern int ExtSpiralNum = 0;
extern double goldenSpiralCycle = 1;
extern double accurity = 0.2;
extern int NumberOfLines = 200;
extern bool clockWiseSpiral = true;
extern color spiralColor1 = Blue;
extern color spiralColor2 = Red;
extern int ExtSpiralStyle = 0;
extern int ExtSpiralWidth = 0;
extern string ______________11_____________ = "Pivot ZigZag";
extern color ExtPivotZZ1Color = Blue;
extern color ExtPivotZZ2Color = Red;
extern int ExtPivotZZ1Num = 0;
extern int ExtPivotZZ2Num = 0;
extern int ExtPivotZZStyle = 0;
extern int ExtPivotZZWidth = 2;
extern string ______________12_____________ = "Parameters for Channels";
extern int ExtTypeChannels = 0;
extern int ExtTypeLineChannels = 1;
extern int ExtChannelsNum = 3;
extern color ExtLTColor = Red;
extern color ExtLCColor = Green;
extern int ExtLTChannelsStyle = 0;
extern int ExtLTChannelsWidth = 1;
extern int ExtLCChannelsStyle = 2;
extern int ExtLCChannelsWidth = 0;
extern string ______________13_____________ = "Parameters Fibo Time";
// Âðåìåííûå çîíû Ôèáî
extern int ExtFiboTimeNum = 0;
extern bool ExtFiboTime1x = false;
extern bool ExtFiboTime2x = false;
extern bool ExtFiboTime3x = false;
extern color ExtFiboTime1Cx = Teal;
extern color ExtFiboTime2Cx = Sienna;
extern color ExtFiboTime3Cx = Aqua;
extern bool ExtVisibleDateTimex = false;
extern string ExtVisibleNumberFiboTimex = "111";
extern string ______________14_____________ = "Parameters Exp";
extern bool chHL = false;
extern bool PeakDet = false;
// Ïåðåìåííûå äëÿ i-vts
extern bool chHL_PeakDet_or_vts = true;
extern int ExtLabel = 0;
extern int ExtCodLabel = 116;
extern int NumberOfBars = 1000; // Êîëè÷åñòâî áàðîâ îáñ÷¸òà (0-âñå)
extern int NumberOfVTS = 13;
extern int NumberOfVTS1 = 1;
extern string ______________15_____________ = "Common Parameters";
//--------------------------------------
extern color ExtObjectColor = CLR_NONE;
extern int ExtObjectStyle = 1;
extern int ExtObjectWidth = 0;
// âûâîä ñòàòè÷åñêèõ îáúåêòîâ â ðåæèìå äèíàìè÷åñêèõ
extern bool ExtDinamic = false;
extern string ExtVisibleDinamic = "01000000000";
extern bool ZigZagHighLow = true;
// --------------------------------
// Äîïîëíèòåëüíûå ôèíêöèè
extern bool ExtSendMail = false;
extern bool ExtAlert = false;
// Âûâîä îáúåêòîâ â âèäå ôîíà
extern bool ExtBack = true;
// Ñîõðàíåíèå ñòàòè÷åñêèõ âèë Ýíäðþñà, Fibo Time è ò.ä.
extern bool ExtSave = false;
extern string info_comment= "1111";
extern bool infoTF = true;
extern int ExtComplekt = 0;
//===================================
// Ìàññèâû äëÿ ZigZag
// Ìàññèâ äëÿ îòðèñîâêè ZigZag
double zz[];
// Ìàññèâ ìèíèìóìîâ ZigZag
double zzL[];
// Ìàññèâ ìàêñèìóìîâ ZigZag
double zzH[];
// Ìàññèâû äëÿ nen-ZigZag
double nen_ZigZag[];
// Ìàññèâ äëÿ îïòèìèçèðîâàííîãî ZigZag
//double TempBuffer[1],ZigZagBuffer[1];
// Ïåðåìåííûå äëÿ îñíàñòêè
// Ìàññèâ ÷èñåë Ïåñàâåíòî (Ôèáû è ìîäèôèöèðîâàííûå Ôèáû)
//double fi[]={0.146, 0.236, 0.382, 0.447, 0.5, 0.618, 0.707, 0.786, 0.841, 0.886, 1.0, 1.128, 1.272, 1.414, 1.5, 1.618, 1.732, 1.902, 2.0, 2.236, 2.414, 2.618, 3.14, 3.618, 4.0};
//string fitxt[]={"0.146", "0.236", ".382", ".447", ".5", ".618", ".707", ".786", ".841", ".886", "1.0", "1.128", "1.272", "1.414", "1.5", "1.618", "1.732", "1.902", "2.0", "2.236", "2.414", "2.618", "3.14", "3.618", "4.0"};
//double fi1[]={0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, 1.618};
//string fitxt1[]={"0.146", "0.236", ".382", ".5", ".618", ".764", ".854", "1.0", "1.236", "1.618"};
// Ìàññèâ ÷èñåë, çàäàííûõ ïîëüçîâàòåëåì
double fi[];
string fitxt[];
string fitxt100[];
int Sizefi=0,Sizefi_1=0;
color ExtLine_;
double number[64];
string numbertxt[64];
int numberFibo[64];
int numberPesavento[64];
int numberGartley[64];
int numberMix[64];
int numberGilmorQuality[64];
int numberGilmorGeometric[64];
int numberGilmorHarmonic[64];
int numberGilmorArithmetic[64];
int numberGilmorGoldenMean[64];
int numberSquare[64];
int numberCube[64];
int numberRectangle[64];
int numberExt[64];
string nameObj,nameObjtxt,save;
//
bool descript_b=false;
// PPWithBars - òåêñò, âûâîäèìûé ó ñîåäèíèòåëüíîé ëèíèè
// descript - îïèñàíèå îáúåêòîâ
string PPWithBars, descript;
// Ìàòðèöà äëÿ ïîèñêà èñ÷åçíóâøèõ áàðîâ afr - ìàññèâ çíà÷åíèé âðåìåíè ïÿòè ïîñëåäíèõ ôðàêòàëîâ è îòðèñîâêè äèíàìè÷åñêèõ è ñòàòè÷åñêèõ ôèá
// afrl - ìèíèìóìû, afrh - ìàêñèìóìû
int afr[]={0,0,0,0,0,0,0,0,0,0};
double afrl[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, afrh[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, afrx[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
// Ïàðàìåòðû òàéìôðéìîâ
double openTF[]={0.0,0.0,0.0,0.0,0.0}, closeTF[]={0.0,0.0,0.0,0.0,0.0}, lowTF[]={0.0,0.0,0.0,0.0,0.0}, highTF[]={0.0,0.0,0.0,0.0,0.0};
double close_TF=0;
string TF[]={"MN","W1","D1","H4","H1","m30","m15","m5","m1"};
string Period_tf;
bool afrm=true;
double ExtHL;
double HL,HLp,kk,kj,Angle;
// LowPrim,HighPrim,LowLast,HighLast - çíà÷åíèÿ ìèíèìóìîâ è ìàêñèìóìîâ áàðîâ
double LowPrim,HighPrim,LowLast,HighLast;
// numLowPrim,numHighPrim,numLowLast,numHighLast -íîìåðà áàðîâ
int numLowPrim,numHighPrim,numLowLast,numHighLast,k,k1,k2,ki,kiPRZ=0,countLow1,countHigh1,shift,shift1;
string txtkk;
// Âðåìÿ ñâå÷è ñ ïåðâûì îò íóëåâîãî áàðà ôðàêòàëîì
int timeFr1new;
// Ñ÷åò÷èê ôðàêòàëîâ
int countFr;
// Áàð, äî êîòîðîãî íàäî ðèñîâàòü ñîåäèíèòåëüíûå ëèíèè îò íóëåâîãî áàðà
int countBarEnd=0,TimeBarEnd;
// Áàð, äî êîòîðîãî íàäî ïåðåñ÷èòûâàòü îò íóëåâîãî áàðà
int numBar=0;
// Íîìåð îáúåêòà
int numOb;
// flagFrNew=true - îáðàçîâàëñÿ íîâûé ôðàêòàë èëè ïåðâûé ôðàêòàë ñìåñòèëñÿ íà äðóãîé áàð. =false - ïî óìîë÷àíèþ.
bool flagFrNew=false;
// èäåíòèôèêàòîð íîâîãî ëó÷à
bool newRay=true;
// flagGartle - ïîÿâëåíèå íîâîãî ïàòòåðíà Gartley èëè èñ÷åçíîâåíèå ïàòòåðíà Gartley
bool flagGartle=false;
// Ïåðèîä òåêóùåãî ãðàôèêà
int perTF;
bool Demo;
// Ïåðåìåííûå äëÿ çèãçàãà, ðàçðàáîòàííîãî wellx
bool first=true;
int NewBarTime=0, countbars=0;
int lasthighpos,lastlowpos,realcnt=0;
double lasthigh,lastlow;
double int_to_d=0, int_to_d1=0, int_to_d2=0;
int counted_bars, cbi, iBar;
// ñðåäíèé ðàçìåð áàðà òåêóùåãî òàéìôðåéìà
// The average size of a bar
double ASBar;
// Ïåðåìåííûå äëÿ ZigZag Àëåêñà è èíäèêàòîðà ïîäîáíîãî âñòðîåííîìó â Ensign
double ha[],la[],hi,li,si,sip,di,hm,lm,ham[],lam[],him,lim,lLast=0,hLast=0;
int fs=0,fsp,countBar;
int ai,bi,ai0,bi0,aim,bim;
datetime tai,tbi,ti,tmh,tml;
// fcount0 - ïðè îáíóëåíèè ñ÷åò÷èêà ïðîïóùåííûõ áàðîâ íà 0 áàðå fcount0=true.
// Íà ñëåäóþùåì áàðå =false è ìîæíî îïðåäåëÿòü òî÷êó ïåðåëîìà
bool fh=false,fl=false,fcount0,PeakDetIni;
/*
// Ïåðåìåííûå äëÿ Ñâèíãîâ Ãàííà
double lLast_m=0, hLast_m=0;
int countBarExt; // ñ÷åò÷èê âíåøíèõ áàðîâ
int countBarl,countBarh;
*/
// Ïåðåìåííûå äëÿ nen-ZigZag
bool hi_nen;
bool init_zz=true;
// Ïåðåìåííûå äëÿ ðàñøèðåííîãî ðåæèìà ðàáîòû èíäèêàòîðà
int mFibo[]={0,0}, mPitch[]={0,0,0}, mFan[]={0,0}, mExpansion[]={0,0,0}, mVL[]={0,0,0}, mArcS[]={0,0}, mArcD[]={0,0}, mSpiral[]={0,0};
// Ïåðåìåííûå äëÿ ïîñòðîåíèÿ âèë Ýíäðþñà ïî ñâå÷àì
int mPitchTime[]={0,0,0};
int mPitchTimeSave;
double mPitchCena[]={0.0,0.0,0.0};
// ïåðåìåííûå äëÿ vts
double ms[2];
// Ïåðåìåííûå äëÿ ïàòòåðíîâ Gartley
string vBullBear = ""; // ïåðåìåííàÿ äëÿ îáîçíà÷åíèÿ áû÷èé èëè ìåäâåæèé ïàòòåðí
string vNamePattern = ""; // ïåðåìåííàÿ äëÿ îáîçíà÷åíèÿ íàèìåíîâàíèÿ ïàòòåðíà
string vBullBearToNumberPattern = "";
string vNamePatternToNumberPattern = "";
int maxPeak, vPatOnOff, vPatNew=0;
double hBar, lBar;
datetime tiZZ;
bool FlagForD = true; // Ðàçðåøåíèå íà ïîèñê ìîìåíòà îáðàçîâàíèÿ òî÷êè D ïàòòåðíà (Gartley)
datetime TimeForDmin = 0, TimeForDminToNumberPattern;
datetime TimeForDmax = 0, TimeForDmaxToNumberPattern;
double LevelForDmin = 0, LevelForDminToNumberPattern;
double LevelForDmax = 0, LevelForDmaxToNumberPattern;
double PeakCenaX[1],PeakCenaA[1],PeakCenaB[1],PeakCenaC[1],PeakCenaD[1];
datetime PeakTimeX[1],PeakTimeA[1],PeakTimeB[1],PeakTimeC[1],PeakTimeD[1];
int countGartley = 0; // Ñ÷åò÷èê ïàòòåðíîâ
int minBarsToNumberPattern;
color ColorList[];
int ColorSize=0;
int countColor = 0;
bool flagExtGartleyTypeSearch2=false;
int minBarsSave, minBarsX;
int strDepth = 3, strD;
// Ïåðåìåííûå äëÿ çèãçàãà Talex
static int endbar = 0;
static double endpr = 0;
static int GPixels,VPixels;
int rect[4],hwnd;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string aa,aa1;
int aa2, i;
hwnd=WindowHandle(Symbol(),Period());
if(hwnd>0)
{
GetClientRect(hwnd,rect);
GPixels=rect[2]; // çäåñü ôóíêöèÿ âîçâðàùàåò êîë-âî ïèêñåëîâ ïî ãîðèçîíòàëè
VPixels=rect[3]; // çäåñü ôóíêöèÿ âîçâðàùàåò êîë-âî ïèêñåëîâ ïî âåðòèêàëè
}
minBarsSave=minBars;
IndicatorBuffers(8);
// -------
// Gartley Patterns
if (ExtGartleyTypeSearch<0) ExtGartleyTypeSearch=0;
if (ExtGartleyTypeSearch>2) ExtGartleyTypeSearch=2;
if (ExtHiddenPP<0) ExtHiddenPP=0;
if (ExtHiddenPP>2) ExtHiddenPP=2;
if (NumberPattern<1) NumberPattern=1;
if (ExtIndicator==14)
{
if (auto)
{
double wrmassiv[];
if (minBar>=100) minBar=61.8;
if (minBar<=0) minBar=61.8;
if (maxBar>=100) maxBar=38.2;
if (minBar<=0) minBar=38.2;
ArrayResize(wrmassiv,Bars-1);
for (i=Bars-1;i>0;i--) {wrmassiv[i]=High[i]-Low[i]+Point;}
ArraySort (wrmassiv);
i=MathFloor(minBar*Bars/100);
StLevel=MathFloor(wrmassiv[i]/Point);
i=MathFloor(maxBar*Bars/100);
BigLevel=MathFloor(wrmassiv[i]/Point);
//Print ("StLevel=",StLevel);
//Print ("BigLevel=",BigLevel);
}
}
if (ExtGartleyTypeSearch>0) // Ïîäãîòîâêà ñïèñêà çíà÷åíèé öâåòà äëÿ áàáî÷åê Gartley, çàäàííûõ ïîëüçîâàòåëåì
{
//---------
if (maxBarToD==0) maxBarToD=Bars-15;
if (ExtHiddenPP==0 || ExtHiddenPP==2) {ExtHidden=0; ExtStyleZZ=false;}
//---------
i=-1;
aa2=0;
while (aa2>=0)
{
aa2=StringFind(ExtColorPatternList, ",",i+1);
if (aa2>=0)
{i=aa2;ColorSize++;}
else
{
if (StringLen(ExtColorPatternList)-i>0)
{
if (StrToDouble(StringSubstr(ExtColorPatternList,i+1))>0) ColorSize++;
ArrayResize(ColorList,ColorSize);
aa1=ExtColorPatternList;
for (i=0;i<ColorSize;i++)
{
aa2=StringFind(aa1, ",", 0);
ColorList[i]=fStrToColor(StringTrimLeft(StringTrimRight(StringSubstr(aa1,0,aa2))));
if (aa2>=0) aa1=StringSubstr(aa1,aa2+1);
}
aa2=-1;
}
}
}
}
// -------
if (ExtStyleZZ) {SetIndexStyle(0,DRAW_SECTION);}
else {SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,158);}
if (ExtLabel>0)
{
SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,ExtCodLabel);
SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,ExtCodLabel);
}
else
{
SetIndexStyle(3,DRAW_LINE,STYLE_DOT);
SetIndexStyle(4,DRAW_LINE,STYLE_DOT);
}
SetIndexLabel(0,"ZUP"+ExtComplekt+" (zz"+ExtIndicator+")");
if (ExtIndicator==6) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT6_"+minBars+"/"+ExtDeviation+"/"+ExtBackstep+"/GP"+GrossPeriod+"");
else if (ExtIndicator==7) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT7_"+minBars+"/GP"+GrossPeriod+"");
else if (ExtIndicator==8) SetIndexLabel(5,"ZUP"+ExtComplekt+" DT8_"+minBars+"/"+ExtDeviation+"/GP"+GrossPeriod+"");
if (ExtLabel>0)
{
SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_PeakDet");
SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_PeakDet");
SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" UpTrend");
SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" DownTrend");
}
else
{
if (chHL_PeakDet_or_vts)
{
PeakDetIni=true;
SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_PeakDet");
SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_PeakDet");
SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_chHL");
SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_chHL");
}
else
{
SetIndexLabel(1,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_vts");
SetIndexLabel(2,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_vts");
SetIndexLabel(3,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" H_vts1");
SetIndexLabel(4,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" L_vts1");
}
}
// Óðîâíè ïðåäûäóùèõ ïèêîâ
SetIndexStyle(1,DRAW_LINE,STYLE_DOT);
SetIndexStyle(2,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(1,ham);
SetIndexBuffer(2,lam);
// Óðîâíè ïîäòâåðæäåíèÿ
SetIndexBuffer(3,ha);
SetIndexBuffer(4,la);
SetIndexBuffer(0,zz);
SetIndexBuffer(5,nen_ZigZag);
SetIndexBuffer(6,zzL);
SetIndexBuffer(7,zzH);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(5,159);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);
SetIndexEmptyValue(4,0.0);
SetIndexEmptyValue(5,0.0);
SetIndexEmptyValue(6,0.0);
SetIndexEmptyValue(7,0.0);
if (ExtIndicator<6 || ExtIndicator>10)
{
switch (Period())
{
case 1 : {Period_tf=TF[8];break;}
case 5 : {Period_tf=TF[7];break;}
case 15 : {Period_tf=TF[6];break;}
case 30 : {Period_tf=TF[5];break;}
case 60 : {Period_tf=TF[4];break;}
case 240 : {Period_tf=TF[3];break;}
case 1440 : {Period_tf=TF[2];break;}
case 10080 : {Period_tf=TF[1];break;}
case 43200 : {Period_tf=TF[0];break;}
}
}
else
switch (GrossPeriod)
{
case 1 : {Period_tf=TF[8];break;}
case 5 : {Period_tf=TF[7];break;}
case 15 : {Period_tf=TF[6];break;}
case 30 : {Period_tf=TF[5];break;}
case 60 : {Period_tf=TF[4];break;}
case 240 : {Period_tf=TF[3];break;}
case 1440 : {Period_tf=TF[2];break;}
case 10080 : {Period_tf=TF[1];break;}
case 43200 : {Period_tf=TF[0];break;}
}
if (ExtIndicator==1) if (minSize!=0) di=minSize*Point/2;
if (ExtIndicator==2) {di=minSize*Point; countBar=minBars;}
if (ExtIndicator==3) {countBar=minBars;}
if (ExtIndicator>5 && ExtIndicator<11 && GrossPeriod>Period())
{
if (GrossPeriod==43200 && Period()==10080) maxBarToD=maxBarToD*5; else maxBarToD=maxBarToD*GrossPeriod/Period();
}
if (ExtIndicator<6 ||ExtIndicator>10) GrossPeriod=Period();
if (ExtFiboType<0) ExtFiboType=0;
if (ExtFiboType>2) ExtFiboType=2;
if (ExtFiboType==2) // Ïîäãîòîâêà ñïèñêà ôèá, çàäàííûõ ïîëüçîâàòåëåì
{
i=-1;
aa2=0;
while (aa2>=0)
{
aa2=StringFind(ExtFiboTypeFree, ",",i+1);
if (aa2>=0)
{i=aa2;Sizefi++;}
else
{
if (StringLen(ExtFiboTypeFree)-i>0)
{
if (StrToDouble(StringSubstr(ExtFiboTypeFree,i+1))>0) Sizefi++;
arrResize(Sizefi);
aa1=ExtFiboTypeFree;
for (i=0;i<Sizefi;i++)
{
aa2=StringFind(aa1, ",", 0);
fitxt[i]=StringTrimLeft(StringTrimRight(StringSubstr(aa1,0,aa2)));
fi[i]=StrToDouble(fitxt[i]);
if (fi[i]<1) fitxt[i]=StringSubstr(fitxt[i],1);
fitxt100[i]=DoubleToStr(100*fi[i],1);
if (aa2>=0) aa1=StringSubstr(aa1,aa2+1);
}
// aa2=-1;
}
}
}
}
// -------
// Ïðîâåðêà ïðàâèëüíîñòè ââåäåííûõ âíåøíèõ ïåðåìåííûõ
if (ExtDelta<=0) ExtDelta=0.001;
if (ExtDelta>1) ExtDelta=0.999;
if (ExtHidden<0) ExtHidden=0;
if (ExtHidden>5) ExtHidden=5;
if (ExtDeltaType<0) ExtDeltaType=0;
if (ExtDeltaType>3) ExtDeltaType=3;
if (ExtFiboChoice<0) ExtFiboChoice=0;
if (ExtFiboChoice>11) ExtFiboChoice=11;
if (ExtPivotZZ1Num>9) ExtPivotZZ1Num=9;
if (ExtPivotZZ2Num>9) ExtPivotZZ2Num=9;
if (ExtPivotZZ1Num==ExtPivotZZ2Num)
{
if (ExtPivotZZ1Num>0) ExtPivotZZ1Num=ExtPivotZZ2Num-1;
}
if (ExtFractalEnd>0)
{
if (ExtFractalEnd<1) ExtFractalEnd=1;
}
if (ExtPitchforkStatic>4) ExtPitchforkStatic=4;
if (ExtPitchforkDinamic>4) ExtPitchforkDinamic=4;
if (ExtCM_0_1A_2B_Dinamic<0) ExtCM_0_1A_2B_Dinamic=0;
if (ExtCM_0_1A_2B_Dinamic>5) ExtCM_0_1A_2B_Dinamic=5;
if (ExtCM_0_1A_2B_Static<0) ExtCM_0_1A_2B_Static=0;
if (ExtCM_0_1A_2B_Static>5) ExtCM_0_1A_2B_Static=5;
if (ExtCM_FiboDinamic<0) ExtCM_FiboDinamic=0;
if (ExtCM_FiboDinamic>1) ExtCM_FiboDinamic=1;
if (ExtCM_FiboStatic<0) ExtCM_FiboStatic=0;
if (ExtCM_FiboStatic>1) ExtCM_FiboStatic=1;
//--------------------------------------------
if (ExtPitchforkStaticNum<3) ExtPitchforkStaticNum=3;
if (ExtFiboStaticNum<2) ExtFiboStaticNum=2;
if (ExtFiboStaticNum>9)
{
aa=DoubleToStr(ExtFiboStaticNum,0);
aa1=StringSubstr(aa,0,1);
mFibo[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,1,1);
mFibo[1]=StrToInteger(aa1);
}
else
{
mFibo[0]=ExtFiboStaticNum;
mFibo[1]=ExtFiboStaticNum-1;
}
if (ExtFiboFanNum<1) ExtFiboFanNum=1;
if (ExtFiboFanNum>9)
{
aa=DoubleToStr(ExtFiboFanNum,0);
aa1=StringSubstr(aa,0,1);
mFan[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,1,1);
mFan[1]=StrToInteger(aa1);
}
else
{
mFan[0]=ExtFiboFanNum;
mFan[1]=ExtFiboFanNum-1;
}
if (ExtPitchforkStaticNum>99)
{
aa=DoubleToStr(ExtPitchforkStaticNum,0);
aa1=StringSubstr(aa,0,1);
mPitch[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,1,1);
mPitch[1]=StrToInteger(aa1);
aa1=StringSubstr(aa,2,1);
mPitch[2]=StrToInteger(aa1);
}
else
{
mPitch[0]=ExtPitchforkStaticNum;
mPitch[1]=ExtPitchforkStaticNum-1;
mPitch[2]=ExtPitchforkStaticNum-2;
}
if (ExtFiboExpansion<2) ExtFiboExpansion=0;
if (ExtFiboExpansion>0)
{
if (ExtFiboExpansion>99)
{
aa=DoubleToStr(ExtFiboExpansion,0);
aa1=StringSubstr(aa,0,1);
mExpansion[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,1,1);
mExpansion[1]=StrToInteger(aa1);
aa1=StringSubstr(aa,2,1);
mExpansion[2]=StrToInteger(aa1);
}
else
{
mExpansion[0]=ExtFiboExpansion;
mExpansion[1]=ExtFiboExpansion-1;
mExpansion[2]=ExtFiboExpansion-2;
}
}
if (ExtPitchforkCandle)
{
mPitchTime[0]=ExtDateTimePitchfork_1;
mPitchTime[1]=ExtDateTimePitchfork_2;
mPitchTime[2]=ExtDateTimePitchfork_3;
if (ExtPitchfork_1_HighLow)
{
mPitchCena[0]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_1,true)];
mPitchCena[1]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_2,true)];
mPitchCena[2]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3,true)];
}
else
{
mPitchCena[0]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_1,true)];
mPitchCena[1]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_2,true)];
mPitchCena[2]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3,true)];
}
if (mPitchCena[0]<=0 || mPitchCena[1]<=0 || mPitchCena[2]<=0) {ExtPitchforkCandle=false;ExtPitchforkStatic=0;}
}
if (ExtFiboTimeNum<=2) ExtFiboTimeNum=0;
if (ExtFiboTimeNum>999) ExtFiboTimeNum=0;
if (ExtVLStaticNum>0)
{
if (ExtVLStaticNum<2) ExtVLStaticNum=2;
if (ExtVLStaticNum>99)
{
aa=DoubleToStr(ExtVLStaticNum,0);
aa1=StringSubstr(aa,0,1);
mVL[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,1,1);
mVL[1]=StrToInteger(aa1);
aa1=StringSubstr(aa,2,1);
mVL[2]=StrToInteger(aa1);
}
else
{
mVL[0]=ExtVLStaticNum;
mVL[1]=ExtVLStaticNum-1;
mVL[2]=ExtVLStaticNum-2;
}
}
if (ExtArcStaticNum>0)
{
if (ExtArcStaticNum<2) ExtArcStaticNum=2;
if (ExtArcStaticNum<12 && ExtArcStaticNum>9) ExtArcStaticNum=9;
if (ExtArcStaticNum>98) ExtArcStaticNum=98;
if (ExtArcStaticNum>=12)
{
aa=DoubleToStr(ExtArcStaticNum,0);
aa1=StringSubstr(aa,1,1);
mArcS[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,0,1);
mArcS[1]=StrToInteger(aa1);
if (mArcS[0]==0) {ExtArcStaticNum=0; mArcS[1]=0;}
}
else
{
mArcS[1]=ExtArcStaticNum;
mArcS[0]=ExtArcStaticNum-1;
}
}
if (ExtArcDinamicNum>0)
{
if (ExtArcDinamicNum>90) ExtArcStaticNum=90;
if (ExtArcDinamicNum>9)
{
aa=DoubleToStr(ExtArcDinamicNum,0);
aa1=StringSubstr(aa,1,1);
mArcD[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,0,1);
mArcD[1]=StrToInteger(aa1);
if (mArcD[0]>0) mArcD[0]=0;
}
else
{
mArcD[1]=0;
mArcD[0]=ExtArcDinamicNum;
}
}
// Çîëîòàÿ ñïèðàëü
if (ExtSpiralNum>0)
{
if(goldenSpiralCycle <= 0) goldenSpiralCycle = 1;
if(accurity <= 0) accurity = 0.2;
if (ExtSpiralNum<2) ExtSpiralNum=2;
if (ExtSpiralNum>98) ExtSpiralNum=98;
if (ExtSpiralNum>9)
{
aa=DoubleToStr(ExtSpiralNum,0);
aa1=StringSubstr(aa,1,1);
mSpiral[0]=StrToInteger(aa1);
aa1=StringSubstr(aa,0,1);
mSpiral[1]=StrToInteger(aa1);
if (mSpiral[0]==0) {ExtSpiralNum=0; mSpiral[1]=0;}
}
else
{
mSpiral[1]=ExtSpiralNum;
mSpiral[0]=ExtSpiralNum-1;
}
}
if (ExtSave)
{
MathSrand(LocalTime());
save=MathRand();
}
if (ExtCM_0_1A_2B_Static==4 || ExtCM_0_1A_2B_Dinamic==4)
{
for (i=Bars-1; i>-1; i--)
{
ASBar=ASBar + iHigh(NULL,GrossPeriod,i) - iLow(NULL,GrossPeriod,i) + Point;
}
ASBar=ASBar/Bars;
}
array_();
perTF=Period();
Demo=IsDemo();
delete_objects1();
return(0);
}
//+------------------------------------------------------------------+
//| Äåèíèöèàëèçàöèÿ. Óäàëåíèå âñåõ òðåíäîâûõ ëèíèé è òåêñòîâûõ îáúåêòîâ
//+------------------------------------------------------------------+
int deinit()
{
int i;
delete_objects_dinamic();
delete_objects1();
delete_objects3();
delete_objects4();
delete_objects_spiral();
delete_objects_number();
ObjectDelete("fiboS" + ExtComplekt+"_");
ObjectDelete("fiboFanS" + ExtComplekt+"_");
ObjectDelete("RLineS" + ExtComplekt+"_");
ObjectDelete("pitchforkS" + ExtComplekt+"_");
ObjectDelete("pmedianaS" + ExtComplekt+"_");
ObjectDelete("1-2pmedianaS" + ExtComplekt+"_");
ObjectDelete("fiboTime1" + ExtComplekt+"_");ObjectDelete("fiboTime2" + ExtComplekt+"_");ObjectDelete("fiboTime3" + ExtComplekt+"_");
ObjectDelete("fiboTime1Free" + ExtComplekt+"_");ObjectDelete("fiboTime2Free" + ExtComplekt+"_");ObjectDelete("fiboTime3Free" + ExtComplekt+"_");
ObjectDelete("UTL" + ExtComplekt+"_");ObjectDelete("LTL" + ExtComplekt+"_");
ObjectDelete("UWL" + ExtComplekt+"_");ObjectDelete("LWL" + ExtComplekt+"_");
ObjectDelete("ISL_S" + ExtComplekt+"_");
ObjectDelete("CL" + ExtComplekt+"_");
ObjectDelete("PivotZoneS" + ExtComplekt+"_");
ObjectDelete("FanMedianaStatic" + ExtComplekt+"_");
ObjectDelete("FiboFan" + ExtComplekt+"_");
ObjectDelete("FiboArcS" + ExtComplekt+"_");
ObjectDelete("LinePivotZZ" + "1" + ExtComplekt+"_");
ObjectDelete("LinePivotZZ" + "2" + ExtComplekt+"_");
for (i=0;i<9; i++)
{
nameObj="LCChannel" + i + ExtComplekt+"_";
ObjectDelete(nameObj);
nameObj="LTChannel" + i + ExtComplekt+"_";
ObjectDelete(nameObj);
}
for (i=0; i<7; i++)
{
nameObj="VLS"+i+" " + ExtComplekt+"_";
ObjectDelete(nameObj);
}
Comment("");
return(0);
}
//********************************************************
// ÍÀ×ÀËÎ
int start()
{
if ((ExtIndicator==6 || ExtIndicator==7 || ExtIndicator==8 || ExtIndicator==10) && Period()>GrossPeriod)
{
ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0);ArrayInitialize(nen_ZigZag,0);
init_zz=true;
return;
}
counted_bars=IndicatorCounted();
if (perTF!=Period())
{
delete_objects1();
perTF=Period();
}
if (Demo!=IsDemo())
{
delete_objects1();
Demo=IsDemo();
counted_bars=0;
}
//-----------------------------------------
//
// 1.
//
// Áëîê çàïîëíåíèÿ áóôåðîâ. Íà÷àëî.
//-----------------------------------------
// zz[] - áóôåð, äàííûå èç êîòîðîãî áåðóòñÿ äëÿ îòðèñîâêè ñàìîãî ZigZag-a
// zzL[] - ìàññèâ ìèíèìóìîâ ÷åðíîâîé
// zzH[] - ìàññèâ ìàêñèìóìîâ ÷åðíîâîé
//
//-----------------------------------------
if (Bars-IndicatorCounted()>2)
{
cbi=Bars-1; tiZZ=0;
if (ExtIndicator==1) {ti=0; ai=0; bi=0; tai=0; tbi=0; fs=0; si=0; sip=0;} lBar=0; hBar=0;
ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0);ArrayInitialize(nen_ZigZag,0);
init_zz=true; afrm=true; delete_objects_dinamic(); delete_objects1(); delete_objects3();
flagExtGartleyTypeSearch2=false; vPatOnOff=0; PeakDetIni=true;
}
else
{
if (ExtIndicator==1) cbi=Bars-IndicatorCounted()-1;
else cbi=Bars-IndicatorCounted();
if (lBar<=iLow(NULL,GrossPeriod,0) && hBar>=iHigh(NULL,GrossPeriod,0) && tiZZ==iTime(NULL,GrossPeriod,0)) return(0);
else
{
if (tiZZ<iTime(NULL,GrossPeriod,0) && ExtHidden<5)
{
if (iBarShift(Symbol(),Period(),afr[0])==2)
{
if (ExtPivotZZ1Num==1 && ExtPivotZZ1Color>0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1);
if (ExtPivotZZ2Num==1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2);
}
}
lBar=iLow(NULL,GrossPeriod,0); hBar=iHigh(NULL,GrossPeriod,0); tiZZ=iTime(NULL,GrossPeriod,0);
}
}
switch (ExtIndicator)
{
case 0 : {ZigZag_(); break;}
case 1 : {ang_AZZ_(); break;}
case 2 : {Ensign_ZZ(); break;}
case 3 : {Ensign_ZZ(); break;}
case 4 : {ZigZag_tauber();break;}
case 5 : {GannSwing(); break;}
case 6 : {nenZigZag(); break;} // DT-ZigZag - ñ èñïðàâëåííûì, îïòèìèçèðîâàííûì çèãçàãîì ZigZag_new_nen3.mq4
case 7 : {nenZigZag(); break;} // DT-ZigZag - âàðèàíò çèãçàãà, êîòîðûé ëþáåçíî ïðåäîñòàâèë klot - DT_ZZ.mq4
case 8 : {nenZigZag(); break;} // DT-ZigZag - âàðèàíò çèãçàãà, êîòîðûé ëþáåçíî ïðåäîñòàâèë Candid - CZigZag.mq4
case 10 : {nenZigZag(); break;} // DT-ZigZag - âàðèàíò çèãçàãà ExtIndicator=5 â ðåæèìå DT - âíåøíèé çèãçàã Swing_zz.mq4
// Ïîèñê ïàòòåðíîâ
case 11 :
{
if (ExtGartleyTypeSearch<2) vPatOnOff = 0;
ZigZag_();
if (ExtGartleyTypeSearch==2 && vPatOnOff == 1) flagExtGartleyTypeSearch2=true;
if (vPatOnOff==1 && vPatNew==0)
{
vPatNew=1; flagGartle=true;
if (ExtSendMail) _SendMail("There was a pattern","on " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern);
}
else if (vPatOnOff==0 && vPatNew==1)
{
vPatNew=0; flagGartle=true; FlagForD=true;
}
if (minBarsSave!=minBarsX)
{
afrm=true; delete_objects_dinamic(); delete_objects1(); counted_bars=0; minBarsSave=minBarsX; PeakDetIni=true;
}
break;
}
case 12 : {ZZTalex(minBars);break;}
case 13 : {ZigZag_SQZZ();break;} // ZigZag òîâàðîâåäà
case 14 : {ZZ_2L_nen();break;} // ZigZag wellx
}
if (ExtHidden<5) // Ðàçðåøåíèå íà âûâîä îñíàñòêè. Íà÷àëî.
{
if(!chHL_PeakDet_or_vts)
{
if (ExtLabel==0) {i_vts(); i_vts1();}
}
else if (PeakDetIni && PeakDet)
{
PeakDetIni=false;
double kl=0,kh=0; // kl - min; kh - max
for (shift=Bars; shift>0; shift--)
{
if (zzH[shift]>0) {kh=zzH[shift];}
if (zzL[shift]>0) {kl=zzL[shift];}
lam[shift]=kl;
ham[shift]=kh;
}
}
// Èíèöèàëèçàöèÿ ìàòðèöû
matriza();
if (infoTF) if (close_TF!=Close[0]) info_TF();
}
//-----------------------------------------
// Áëîê çàïîëíåíèÿ áóôåðîâ. Êîíåö.
//-----------------------------------------
if (ExtHidden<5) // Ðàçðåøåíèå íà âûâîä îñíàñòêè. Íà÷àëî.
{
//======================
//======================
//======================
//-----------------------------------------
//
// 2.
//
// Áëîê ïîäãîòîâêè äàííûõ. Íà÷àëî.
//-----------------------------------------
if (Bars - counted_bars>2 || flagFrNew)
{
// Ïîèñê âðåìåíè è íîìåðà áàðà, äî êîòîðîãî áóäóò ðèñîâàòüñÿ ñîåäèíèòåëüíûå ëèíèè
if (countBarEnd==0)
{
if (ExtFractalEnd>0)
{
k=ExtFractalEnd;
for (shift=0; shift<Bars && k>0; shift++)
{
if (zz[shift]>0 && zzH[shift]>0) {countBarEnd=shift; TimeBarEnd=Time[shift]; k--;}
}
}
else
{
countBarEnd=Bars-3;
TimeBarEnd=Time[Bars-3];
}
}
else
{
countBarEnd=iBarShift(Symbol(),Period(),TimeBarEnd);
}
}
//-----------------------------------------
// Áëîê ïîäãîòîâêè äàííûõ. Êîíåö.
//-----------------------------------------
//-----------------------------------------
//
// 3.
//
// Áëîê ïðîâåðîê è óäàëåíèÿ ëèíèé,
// ïîòåðÿâøèõ àêòóàëüíîñòü. Íà÷àëî.
//-----------------------------------------
// Êîððåêöèÿ ñîåäèíÿþùèõ ëèíèé è ÷èñåë. Íà÷àëî.
if (Bars - counted_bars<3)
{
// Ïîèñê âðåìåíè áàðà ïåðâîãî ýêñòðåìóìà, ñ÷èòàÿ îò íóëåâîãî áàðà
for (shift1=0; shift1<Bars; shift1++)
{
if (zz[shift1]>0.0 && (zzH[shift1]==zz[shift1] || zzL[shift1]==zz[shift1]))
{
timeFr1new=Time[shift1];
break;
}
}
// Ïîèñê áàðà, íà êîòîðîì ïåðâûé ýêñòðåìóì áûë ðàíåå.
shift=iBarShift(Symbol(),Period(),afr[0]);
// Ïîÿâèëñÿ íîâûé ëó÷ ZigZag
if ((zzH[shift1]>0 && afrl[0]>0) || (zzL[shift1]>0 && afrh[0]>0))
{
newRay=true;
if (!ExtDinamic)
{
ExtNumberPeak=false;
ExtFiboStatic=false;
ExtPitchforkStatic=0;
ExtFiboFanNum=0;
ExtFiboExpansion=0;
ExtVLStaticNum=0;
ExtArcStaticNum=0;
ExtSpiralNum=0;
ExtPivotZZ2Num=0;
ExtChannelsNum=0;
ExtFiboTimeNum=0;
}
else
{
if (StringSubstr(ExtVisibleDinamic,0,1)!="1") ExtNumberPeak=false;
if (StringSubstr(ExtVisibleDinamic,1,1)!="1") ExtFiboStatic=false;
if (StringSubstr(ExtVisibleDinamic,2,1)!="1") ExtPitchforkStatic=0;
if (StringSubstr(ExtVisibleDinamic,3,1)!="1") ExtFiboFanNum=0;
if (StringSubstr(ExtVisibleDinamic,4,1)!="1") ExtFiboExpansion=0;
if (StringSubstr(ExtVisibleDinamic,5,1)!="1") ExtVLStaticNum=0;
if (StringSubstr(ExtVisibleDinamic,6,1)!="1") ExtArcStaticNum=0;
if (StringSubstr(ExtVisibleDinamic,7,1)!="1") ExtSpiralNum=0;
if (StringSubstr(ExtVisibleDinamic,8,1)!="1") ExtPivotZZ2Num=0;
if (StringSubstr(ExtVisibleDinamic,9,1)!="1") ExtChannelsNum=0;
if (StringSubstr(ExtVisibleDinamic,10,1)!="1") ExtFiboTimeNum=0;
}
if (ExtAlert)
{
Alert (Symbol()," ",Period()," ïîÿâèëñÿ íîâûé ëó÷ ZigZag");
PlaySound("alert.wav");
}
}
// Ñðàâíåíèå òåêóùåãî çíà÷åíèÿ ýêñòðåìóìà ñ òåì, êîòîðûé áûë ðàíåå
// Îáðàçîâàëñÿ íîâûé ýêñòðåìóì
if (timeFr1new!=afr[0])
{
flagFrNew=true;
if (shift>=shift1) numBar=shift; else numBar=shift1;
afrm=true;
}
// Ýêñòðåìóì íà ìàêñèìóìå ñäâèíóëñÿ íà äðóãîé áàð
if (afrh[0]>0 && zz[shift]==0.0)
{
flagFrNew=true;
if (numBar<shift) numBar=shift;
afrm=true;
}
// Ýêñòðåìóì íà ìèíèìóìå ñäâèíóëñÿ íà äðóãîé áàð
if (afrl[0]>0 && zz[shift]==0.0)
{
flagFrNew=true;
if (numBar<shift) numBar=shift;
afrm=true;
}
//-----------3 Ñìåñòèëñÿ ìàêñèìóì èëè ìèíèìóì, íî îñòàëñÿ íà òîì æå áàðå. Íà÷àëî.
//============= 1 ñìåñòèëñÿ ìàêñèìóì. Íà÷àëî.
if (afrh[0]-High[shift]!=0 && afrh[0]>0)
{
flagFrNew=true;
numBar=0;
delete_objects2(afr[0]);
afrx[0]=High[shift];
afrh[0]=High[shift];
if (ExtFiboFanDinamic) screenFiboFanD();
if (mFibo[1]==0 && ExtFiboStatic) screenFiboS();
if (ExtFiboDinamic) screenFiboD();
if (ExtPitchforkDinamic>0) screenPitchforkD();
if (ExtVLDinamicColor>0) VLD();
if (mVL[2]==0 && ExtVLStaticNum>0) VLS();
if (ExtFiboTimeNum>2) fiboTimeX ();
if (ExtPitchforkStatic>0)
{
if (ExtPitchforkCandle)
{
if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS();
}
else
{
if (mPitch[2]==0) screenPitchforkS();
}
}
if (mExpansion[2]==0 && ExtFiboExpansion>0) FiboExpansion();
if (mFan[1]==0 && ExtFiboFanNum>0 && ExtFiboFanColor>0) screenFiboFan();
if (ExtArcDinamicNum>0) screenFiboArcD();
if (ExtArcStaticNum>0) screenFiboArcS();
}
//============= 1 ñìåñòèëñÿ ìàêñèìóì. Êîíåö.
//
//============= 1 ñìåñòèëñÿ ìèíèìóì. Íà÷àëî.
if (afrl[0]-Low[shift]!=0 && afrl[0]>0)
{
flagFrNew=true;
numBar=0;
delete_objects2(afr[0]);
afrx[0]=Low[shift];
afrl[0]=Low[shift];
if (mFibo[1]==0 && ExtFiboStatic) screenFiboS();
if (ExtFiboDinamic) screenFiboD();
if (ExtPitchforkDinamic>0) screenPitchforkD();
if (ExtFiboFanDinamic) screenFiboFanD();
if (ExtVLDinamicColor>0) VLD();
if (mVL[2]==0 && ExtVLStaticNum>0) VLS();
if (ExtFiboTimeNum>2) fiboTimeX ();
if (ExtPitchforkStatic>0)
{
if (ExtPitchforkCandle)
{
if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS();
}
else
{
if (mPitch[2]==0) screenPitchforkS();
}
}
if (mExpansion[2]==0 && ExtFiboExpansion>0) FiboExpansion();
if (mFan[1]==0 && ExtFiboFanNum>0 && ExtFiboFanColor>0) screenFiboFan();
if (ExtArcDinamicNum>0) screenFiboArcD();
if (ExtArcStaticNum>0) screenFiboArcS();
}
//============= 1 ñìåñòèëñÿ ìèíèìóì. Êîíåö.
//-----------3 Ñìåñòèëñÿ ìàêñèìóì èëè ìèíèìóì, íî îñòàëñÿ íà òîì æå áàðå. Êîíåö.
// Ïîèñê èñ÷åçíóâøèõ ôðàêòàëîâ è óäàëåíèå ëèíèé, èñõîäÿùèõ îò ýòèõ ôðàêòàëîâ. Íà÷àëî.
countBarEnd=iBarShift(Symbol(),Period(),TimeBarEnd);
for (k=0; k<5; k++)
{
// Ïðîâåðêà ìàêñèìóìîâ.
if (afrh[k]>0)
{
// Ïîèñê áàðà, íà êîòîðîì áûë ýòîò ôðàêòàë
shift=iBarShift(Symbol(),Period(),afr[k]);
if (zz[shift]==0)
{
flagFrNew=true;
if (shift>numBar) numBar=shift;
afrm=true;
numHighPrim=shift; numHighLast=0;HighLast=0.0;
for (k1=shift+1; k1<=countBarEnd; k1++)
{
if (zzH[k1]>0)
{
if (ZigZagHighLow) HighLast=High[k1]; else HighLast=zzH[k1];
numHighLast=k1;
nameObj="_" + ExtComplekt + "ph" + Time[numHighPrim] + "_" + Time[numHighLast];
numOb=ObjectFind(nameObj);
if (numOb>-1)
{
ObjectDelete(nameObj);
nameObjtxt="_" + ExtComplekt + "phtxt" + Time[numHighPrim] + "_" + Time[numHighLast];
ObjectDelete(nameObjtxt);
}
}
}
}
}
// Ïðîâåðêà ìèíèìóìîâ.
if (afrl[k]>0)
{
// Ïîèñê áàðà, íà êîòîðîì áûë ýòîò ôðàêòàë
shift=iBarShift(Symbol(),Period(),afr[k]);
if (zz[shift]==0)
{
flagFrNew=true;
if (shift>numBar) numBar=shift;
afrm=true;
numLowPrim=shift; numLowLast=0;LowLast=10000000;
for (k1=shift+1; k1<=countBarEnd; k1++)
{
if (zzL[k1]>0)
{
if (ZigZagHighLow) LowLast=Low[k1]; else LowLast=zzL[k1];
numLowLast=k1;
nameObj="_" + ExtComplekt + "pl" + Time[numLowPrim] + "_" + Time[numLowLast];
numOb=ObjectFind(nameObj);
if (numOb>-1)
{
ObjectDelete(nameObj);
nameObjtxt="_" + ExtComplekt + "pltxt" + Time[numLowPrim] + "_" + Time[numLowLast];
ObjectDelete(nameObjtxt);
}
}
}
}
}
}
// Ïîèñê èñ÷åçíóâøèõ ôðàêòàëîâ è óäàëåíèå ëèíèé, èñõîäÿùèõ îò ýòèõ ôðàêòàëîâ. Êîíåö.
// Ïåðåçàïèñü ìàòðèöû. Íà÷àëî.
matriza ();
// Ïåðåçàïèñü ìàòðèöû. Êîíåö.
}
// Êîððåêöèÿ ñîåäèíÿþùèõ ëèíèé è ÷èñåë. Êîíåö.
//-----------------------------------------
// Áëîê ïðîâåðîê è óäàëåíèÿ ëèíèé,
// ïîòåðÿâøèõ àêòóàëüíîñòü. Êîíåö.
//-----------------------------------------
// Ïîäñ÷åò êîëè÷åñòâà ôðàêòàëîâ. Íà÷àëî.
countFractal();
// Ïîäñ÷åò êîëè÷åñòâà ôðàêòàëîâ. Êîíåö.
//-----------------------------------------
//
// 4.
//
// Áëîê âûâîäà ñîåäèíèòåëüíûõ ëèíèé. Íà÷àëî.
//-----------------------------------------
if (Bars - counted_bars>2 && ExtHidden>0)
{
//-----------1 Îòðèñîâêà ìàêñèìóìîâ. Íà÷àëî.
//+--------------------------------------------------------------------------+
//| Âûâîä ñîåäèíÿþùèõ ëèíèé è ÷èñåë Ïåñàâåíòî è 0.886 äëÿ ìàêñèìóìîâ ZigZag-a
//| Îòðèñîâêà íà÷èíàåòñÿ îò íóëåâîãî áàðà
//+--------------------------------------------------------------------------+
numLowPrim=0; numLowLast=0;
numHighPrim=0; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
Angle=-100;
if (flagFrNew && !flagGartle) countFr=1;
else countFr=ExtFractal;
for (k=0; (k<Bars-1 && countHigh1>0 && countFr>0); k++)
{
if (zzL[k]>0.0 && (zzL[k]<LowPrim || LowPrim==0.0) && HighPrim>0 && zzL[k]==zz[k])
{
if (ZigZagHighLow) LowPrim=Low[k]; else LowPrim=zzL[k];
numLowPrim=k;
}
if (zzH[k]>0.0 && zzH[k]==zz[k])
{
if (HighPrim>0)
{
if (ZigZagHighLow) HighLast=High[k]; else HighLast=zzH[k];
numHighLast=k;
HL=HighLast-LowPrim;
kj=(HighPrim-HighLast)*1000/(numHighLast-numHighPrim);
if (HL>0 && (Angle>=kj || Angle==-100)) // Ïðîâåðêà óãëà íàêëîíà ëèíèè
{
Angle=kj;
// Ñîçäàíèå ëèíèè è òåêñòîâîãî îáúåêòà
HLp=HighPrim-LowPrim;
k1=MathCeil((numHighPrim+numHighLast)/2);
kj=HLp/HL;
if (ExtPPWithBars==0) PPWithBars="";
else if (ExtPPWithBars==1) PPWithBars=" ("+(numHighLast-numHighPrim)+")";
else if (ExtPPWithBars==2) PPWithBars=" ("+(numHighLast-numLowPrim)+"-"+(numLowPrim-numHighPrim)+")";
else if (ExtPPWithBars==3)
{
int_to_d1=(numLowPrim-numHighPrim);
int_to_d2=(numHighLast-numLowPrim);
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==4)
{
int_to_d1=(Time[numLowPrim]-Time[numHighPrim]);
int_to_d2=(Time[numHighLast]-Time[numLowPrim]);
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==5)
{
int_to_d1=(numLowPrim-numHighPrim)*(High[numHighPrim]-Low[numLowPrim]);
int_to_d2=(numHighLast-numLowPrim)*(High[numHighLast]-Low[numLowPrim]);
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==7)
{
int_to_d1=((High[numHighLast]-Low[numLowPrim])/Point)/(numHighLast-numLowPrim);
int_to_d2=((High[numHighPrim]-Low[numLowPrim])/Point)/(numLowPrim-numHighPrim);
PPWithBars=" ("+DoubleToStr(int_to_d1,3)+"/"+DoubleToStr(int_to_d2,3)+")";
}
else if (ExtPPWithBars==8)
{
int_to_d1=MathSqrt((numLowPrim-numHighPrim)*(numLowPrim-numHighPrim) + ((High[numHighPrim]-Low[numLowPrim])/Point)*((High[numHighPrim]-Low[numLowPrim])/Point));
int_to_d2=MathSqrt((numHighLast-numLowPrim)*(numHighLast-numLowPrim) + ((High[numHighLast]-Low[numLowPrim])/Point)*((High[numHighLast]-Low[numLowPrim])/Point));
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==9)
{
int_to_d1=100-100*Low[numLowPrim]/High[numHighLast];
int_to_d2=100*High[numHighPrim]/Low[numLowPrim]-100;
PPWithBars=" ("+DoubleToStr(int_to_d1,1)+"/"+DoubleToStr(int_to_d2,1)+")";
}
// ExtPPWithBars=6 Âû÷èñëÿåòñÿ êîëè÷ñòâî ïóíêòîâ è ïðîöåíò îòêëîíåíèÿ îò ðåòðåñìåíòà "Ïåñàâåíòî"
ExtLine_=ExtLine;
if (kj>0.1 && kj<9.36)
{
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
kk=kj;
k2=1;
Pesavento_patterns();
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.886
{
ExtLine_=ExtLine886;
if (ExtHidden!=4)
{
nameObj="_" + ExtComplekt + "phtxt" + Time[numHighPrim] + "_" + Time[numHighLast];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(HighPrim+HighLast)/2);
if (ExtPPWithBars==6)
{
int_to_d=MathAbs((kk-kj)/kk)*100;
PPWithBars=" ("+DoubleToStr((LowPrim+(HighLast-LowPrim)*kk-HighPrim)/Point,0)+"/"+DoubleToStr(int_to_d,2)+"%)";
}
descript=txtkk;
ObjectSetText(nameObj,txtkk+PPWithBars,ExtSizeTxt,"Arial", colorPPattern);
if (ExtPPWithBars==6) PPWithBars="";
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.886)
{
if (ExtHidden==1 || ExtHidden==4)
{
nameObj="_" + ExtComplekt + "phtxt" + Time[numHighPrim] + "_" + Time[numHighLast];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(HighPrim+HighLast)/2);
descript=DoubleToStr(kk,3);
if (ExtDeltaType==3)
{
ObjectSetText(nameObj,""+DoubleToStr(kk,3)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern);
}
else
{
ObjectSetText(nameObj,""+DoubleToStr(kk,2)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern);
}
}
}
if ((ExtHidden==2 && k2<0) || ExtHidden!=2)
{
nameObj="_" + ExtComplekt + "ph" + Time[numHighPrim] + "_" + Time[numHighLast];
ObjectCreate(nameObj,OBJ_TREND,0,Time[numHighLast],HighLast,Time[numHighPrim],HighPrim);
if (descript_b) ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" PPesavento "+"Line High "+descript);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLine_);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
}
if (ExtFiboZigZag) k=countBarEnd;
}
}
}
else
{
if (ZigZagHighLow) HighPrim=High[k]; else HighPrim=zzH[k];
numHighPrim=k;
}
}
// Ïåðåõîä íà ñëåäóþùèé ýêñòðåìóì
if (k>countBarEnd)
{
k=numHighPrim+1; countHigh1--; countFr--;
numLowPrim=0; numLowLast=0;
numHighPrim=0; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
Angle=-100;
}
}
//-----------1 Îòðèñîâêà ìàêñèìóìîâ. Êîíåö.
//-----------2 Îòðèñîâêà ìèíèìóìîâ. Íà÷àëî.
//+-------------------------------------------------------------------------+
//| Âûâîä ñîåäèíÿþùèõ ëèíèé è ÷èñåë Ïåñàâåíòî è 0.886 äëÿ ìèíèìóìîâ ZigZag-a
//| Îòðèñîâêà èäåò îò íóëåâîãî áàðà
//+-------------------------------------------------------------------------+
numLowPrim=0; numLowLast=0;
numHighPrim=0; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
Angle=-100;
if (flagFrNew && !flagGartle) countFr=1;
else countFr=ExtFractal;
flagFrNew=false;
flagGartle=false;
for (k=0; (k<Bars-1 && countLow1>0 && countFr>0); k++)
{
if (zzH[k]>HighPrim && LowPrim>0)
{
if (ZigZagHighLow) HighPrim=High[k]; else HighPrim=zzH[k];
numHighPrim=k;
}
if (zzL[k]>0.0 && zzL[k]==zz[k])
{
if (LowPrim>0)
{
if (ZigZagHighLow) LowLast=Low[k]; else LowLast=zzL[k];
numLowLast=k;
// âûâîä ñîåäèíÿþùèõ ëèíèé è ïðîöåíòîâ âîññòàíîâëåíèÿ(÷èñåë Ïåñàâåíòî)
HL=HighPrim-LowLast;
kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);
if (HL>0 && (Angle<=kj || Angle==-100)) // Ïðîâåðêà óãëà íàêëîíà ëèíèè
{
Angle=kj;
HLp=HighPrim-LowPrim;
k1=MathCeil((numLowPrim+numLowLast)/2);
kj=HLp/HL;
if (ExtPPWithBars==0) PPWithBars="";
else if (ExtPPWithBars==1) PPWithBars=" ("+(numLowLast-numLowPrim)+")";
else if (ExtPPWithBars==2) PPWithBars=" ("+(numLowLast-numHighPrim)+"-"+(numHighPrim-numLowPrim)+")";
else if (ExtPPWithBars==3)
{
int_to_d1=(numHighPrim-numLowPrim);
int_to_d2=(numLowLast-numHighPrim);
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==4)
{
int_to_d1=(Time[numHighPrim]-Time[numLowPrim]);
int_to_d2=(Time[numLowLast]-Time[numHighPrim]);
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==5)
{
int_to_d1=(numHighPrim-numLowPrim)*(High[numHighPrim]-Low[numLowPrim]);
int_to_d2=(numLowLast-numHighPrim)*(High[numHighPrim]-Low[numLowLast]);
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==7)
{
int_to_d1=((High[numHighPrim]-Low[numLowLast])/Point)/(numLowLast-numHighPrim);
int_to_d2=((High[numHighPrim]-Low[numLowPrim])/Point)/(numHighPrim-numLowPrim);
PPWithBars=" ("+DoubleToStr(int_to_d1,3)+"/"+DoubleToStr(int_to_d2,3)+")";
}
else if (ExtPPWithBars==8)
{
int_to_d1=MathSqrt((numHighPrim-numLowPrim)*(numHighPrim-numLowPrim) + ((High[numHighPrim]-Low[numLowPrim])/Point)*((High[numHighPrim]-Low[numLowPrim])/Point));
int_to_d2=MathSqrt((numLowLast-numHighPrim)*(numLowLast-numHighPrim) + ((High[numHighPrim]-Low[numLowLast])/Point)*((High[numHighPrim]-Low[numLowLast])/Point));
int_to_d=int_to_d1/int_to_d2;
PPWithBars=" ("+DoubleToStr(int_to_d,2)+")";
}
else if (ExtPPWithBars==9)
{
int_to_d1=100*High[numHighPrim]/Low[numLowLast]-100;
int_to_d2=100-100*Low[numLowPrim]/High[numHighPrim];
PPWithBars=" ("+DoubleToStr(int_to_d1,1)+"/"+DoubleToStr(int_to_d2,1)+")";
}
// ExtPPWithBars=6 Âû÷èñëÿåòñÿ êîëè÷ñòâî ïóíêòîâ è ïðîöåíò îòêëîíåíèÿ îò ðåòðåñìåíòà "Ïåñàâåíòî"
ExtLine_=ExtLine;
if ( kj>0.1 && kj<9.36)
{
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
kk=kj;
k2=1;
Pesavento_patterns();
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.886
{
ExtLine_=ExtLine886;
if (ExtHidden!=4)
{
nameObj="_" + ExtComplekt + "pltxt" + Time[numLowPrim] + "_" + Time[numLowLast];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(LowPrim+LowLast)/2);
if (ExtPPWithBars==6)
{
int_to_d=MathAbs((kk-kj)/kk)*100;
PPWithBars=" ("+DoubleToStr((HighPrim-(HighPrim-LowLast)*kk-LowPrim)/Point,0)+"/"+DoubleToStr(int_to_d,2)+"%)";
}
descript=txtkk;
ObjectSetText(nameObj,txtkk+PPWithBars,ExtSizeTxt,"Arial", colorPPattern);
if (ExtPPWithBars==6) PPWithBars="";
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.886)
{
if (ExtHidden==1 || ExtHidden==4)
{
nameObj="_" + ExtComplekt + "pltxt" + Time[numLowPrim] + "_" + Time[numLowLast];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(LowPrim+LowLast)/2);
descript=DoubleToStr(kk,3);
if (ExtDeltaType==3)
{
ObjectSetText(nameObj,""+DoubleToStr(kk,3)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern);
}
else
{
ObjectSetText(nameObj,""+DoubleToStr(kk,2)+PPWithBars,ExtSizeTxt,"Arial",colorPPattern);
}
}
}
if ((ExtHidden==2 && k2<0) || ExtHidden!=2)
{
nameObj="_" + ExtComplekt + "pl" + Time[numLowPrim] + "_" + Time[numLowLast];
ObjectCreate(nameObj,OBJ_TREND,0,Time[numLowLast],LowLast,Time[numLowPrim],LowPrim);
if (descript_b) ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" PPesavento "+"Line Low "+descript);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLine_);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
}
if (ExtFiboZigZag) k=countBarEnd;
}
}
}
else
{
numLowPrim=k;
if (ZigZagHighLow) LowPrim=Low[k]; else LowPrim=zzL[k];
}
}
// Ïåðåõîä íà ñëåäóþùèé ýêñòðåìóì
if (k>countBarEnd)
{
k=numLowPrim+1; countLow1--; countFr--;
numLowPrim=0; numLowLast=0;
numHighPrim=0; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
Angle=-100;
}
}
//-----------2 Îòðèñîâêà ìèíèìóìîâ. Êîíåö.
}
//-----------------------------------------
// Áëîê âûâîäà ñîåäèíèòåëüíûõ ëèíèé. Êîíåö.
//-----------------------------------------
//======================
//======================
//======================
} // Ðàçðåøåíèå íà âûâîä îñíàñòêè. Êîíåö.
// ÊÎÍÅÖ
} // start
//----------------------------------------------------
// Ïîäïðîãðàììû è ôóíêöèè
//----------------------------------------------------
//--------------------------------------------------------
// Ïîäñ÷åò êîëè÷åñòâà ýêñòðåìóìîâ. Ìèíèìóìîâ è ìàêñèìóìîâ. Íà÷àëî.
//--------------------------------------------------------
void countFractal()
{
int shift;
countLow1=0;
countHigh1=0;
if (flagFrNew && !flagGartle)
{
for(shift=0; shift<=numBar; shift++)
{
if (zzL[shift]>0.0) {countLow1++;}
if (zzH[shift]>0.0) {countHigh1++;}
}
numBar=0;
counted_bars=Bars-4;
}
else
{
if (flagGartle) {counted_bars=0;}
for(shift=0; shift<=countBarEnd; shift++)
{
if (zzL[shift]>0.0) {countLow1++;}
if (zzH[shift]>0.0) {countHigh1++;}
}
}
}
//--------------------------------------------------------
// Ïîäñ÷åò êîëè÷åñòâà ýêñòðåìóìîâ. Ìèíèìóìîâ è ìàêñèìóìîâ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôîðìèðîâàíèå ìàòðèöû. Íà÷àëî.
//
// Ìàòðèöà èñïîëüçóåòñÿ äëÿ ïîèñêà èñ÷åçíóâøèõ ýêñòðåìóìîâ.
// Ýòî èíñòðóìåíò êîìïåíñàöèè íåïðåäâèäåííûõ çàêèäîíîâ ñòàíäàðòíîãî ZigZag-a.
//
// Òàêæå âûâîäÿòñÿ ñòàòè÷åñêèå è äèíàìè÷åñêèå ôèáû è âååðû Ôèáîíà÷÷è,
// âèëû Ýíäðþñà...
//------------------------------------------------------
void matriza()
{
if (afrm && ExtHidden<5)
{
afrm=false;
int shift,k;
double kl=0,kh=0;
k=0;
for (shift=0; shift<Bars && k<10; shift++)
{
if (zz[shift]>0)
{
afrx[k]=zz[shift];
afr[k]=Time[shift];
if (zz[shift]==zzL[shift])
{
kl=zzL[shift];
if (ZigZagHighLow) afrl[k]=Low[shift];
else
{
if (k==0) afrl[k]=Low[shift]; else afrl[k]=zzL[shift];
}
afrh[k]=0.0;
}
if (zz[shift]==zzH[shift])
{
kh=zzH[shift];
if (ZigZagHighLow) afrh[k]=High[shift];
else
{
if (k==0) afrh[k]=High[shift]; else afrh[k]=zzH[shift];
}
afrl[k]=0.0;
}
k++;
}
}
if (PeakDet && chHL_PeakDet_or_vts)
{
// kl - min; kh - max
for (k=shift; k>0; k--)
{
if (zzH[k]>0) {kh=zzH[k];}
if (zzL[k]>0) {kl=zzL[k];}
if (kl>0) lam[k]=kl;
if (kh>0) ham[k]=kh;
}
}
// Âûâîä Fibo Time âíå âèë Ýíäðþñà
if (ExtFiboTimeNum>2) fiboTimeX (); // äîëæíî âûçûâàòüñÿ ðàíüøå âûçîâà ñòàòè÷åñêèõ âèë Ýíäðþñà
// Âûâîä âèë Ýíäðþñà
if (ExtPitchforkStatic>0)
{
if (newRay && mPitch[2]>0) screenPitchforkS();
if (ExtPitchforkCandle)
{
if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0) screenPitchforkS();
}
else
{
if (mPitch[2]==0) screenPitchforkS();
}
}
if (ExtPitchforkDinamic>0) screenPitchforkD();
// Âûâîä êàíàëëîâ.
if (ExtChannelsNum>1) Channels();
// Âûâîä ñòàòè÷åñêèõ è äèíàìè÷åñêèõ ôèá.
if (ExtFiboStatic)
{
if (newRay && mFibo[1]>0) screenFiboS();
if (mFibo[1]==0) screenFiboS();
}
if (ExtFiboDinamic) {screenFiboD();}
// Ðàñøèðåíèÿ Ôèáîíà÷÷è
if (ExtFiboExpansion>0)
{
if (newRay && mExpansion[2]>0) FiboExpansion();
if (mExpansion[2]==0) FiboExpansion();
}
// Âûâîä ôèáîâååðîâ
if (ExtFiboFanNum>0 && ExtFiboFanColor>0)
{
if (newRay && mFan[1]>0) screenFiboFan();
if (mFan[1]==0) screenFiboFan();
}
if (ExtFiboFanDinamic) screenFiboFanD();
// Âûâîä Versum Levels
if (ExtVLStaticColor>0)
{
if (newRay && mVL[2]>0 && ExtVLStaticNum>0) VLS();
if (mVL[2]==0) VLS();
}
if (ExtVLDinamicColor>0) {VLD();}
// Âûâîä PivotZZ äèíàìè÷åñêèå
if (ExtPivotZZ1Num==1 && ExtPivotZZ1Color>0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1);
if (ExtPivotZZ2Num==1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2);
// Âûâîä PivotZZ ñòàòè÷åñêèå
if (newRay && ExtPivotZZ1Num>1 && ExtPivotZZ1Color>0) PivotZZ(ExtPivotZZ1Color, ExtPivotZZ1Num, 1);
if (newRay && ExtPivotZZ2Num>1 && ExtPivotZZ2Color>0) PivotZZ(ExtPivotZZ2Color, ExtPivotZZ2Num, 2);
// Âûâîä ôèáîäóã
if (ExtArcDinamicNum>0) screenFiboArcD();
if (newRay && ExtArcStaticNum>0) screenFiboArcS();
// Âûâîä ñïèðàëè
if (newRay && ExtSpiralNum>0) GoldenSpiral(afr[mSpiral[0]],afrx[mSpiral[0]],afr[mSpiral[1]],afrx[mSpiral[1]]);
// Ïîèñê ïàòòåðíîâ Gartley
if (ExtGartleyOnOff)
{
switch (ExtIndicator)
{
case 0 : {_Gartley("ExtIndicator=0_" + minBars+"/"+ExtDeviation+"/"+ExtBackstep,0);break;}
case 1 : {_Gartley("ExtIndicator=1_" + minSize+"/"+minPercent,0);break;}
case 2 : {_Gartley("ExtIndicator=2_" + minBars+"/"+minSize,0);break;}
case 3 : {_Gartley("ExtIndicator=3_" + minBars,0);break;}
case 4 : {_Gartley("ExtIndicator=4_" + minSize,0);break;}
case 5 : {_Gartley("ExtIndicator=5_" + minBars,0);break;}
case 6 : {_Gartley("ExtIndicator=6_" + minBars+"/"+ExtDeviation+"/"+ExtBackstep,0);break;}
case 7 : {_Gartley("ExtIndicator=7_" + minBars,0);break;}
case 8 : {_Gartley("ExtIndicator=8_" + minBars+"/"+ExtDeviation,0);break;}
case 10 : {_Gartley("ExtIndicator=10_" + minBars,0);break;}
case 12 : {_Gartley("ExtIndicator=12_" + minBars,0);break;}
case 13 : {_Gartley("ExtIndicator=13_" + minBars+"/"+minSize,0);break;}
case 14 : {_Gartley("ExtIndicator=14_" + minBars,0);break;}
}
if (vPatOnOff==1 && vPatNew==0)
{
vPatNew=1;
if (ExtSendMail) _SendMail("There was a pattern","on " + Symbol() + " " + Period() + " pattern " + vBullBear + " " + vNamePattern);
}
else if (vPatOnOff==0 && vPatNew==1) {vPatNew=0; FlagForD=true;}
}
ExtSave=false;
}
if (newRay && ExtNumberPeak) NumberPeak();
newRay=false;
}
//--------------------------------------------------------
// Ôîðìèðîâàíèå ìàòðèöû. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä íîìåðîâ ïåðåëîìîâ çèãçàãîâ. Íà÷àëî
//--------------------------------------------------------
void NumberPeak()
{
int n=0,i,endNumber;
string txt;
if (ExtNumberPeak10) endNumber=iBarShift(Symbol(),Period(),afr[9]); else endNumber=Bars-minBars;
delete_objects_number();
for (i=iBarShift(Symbol(),Period(),afr[0])+1;i<endNumber;i++)
{
if (zz[i]>0)
{
n++;
if (ExtNumberPeakLow)
{
if (zzL[i]>0)
{
txt=DoubleToStr(n,0);
nameObj="NumberPeak" + "_" + ExtComplekt + "_" + n;
ObjectCreate(nameObj,OBJ_TEXT,0,Time[i],zz[i]);
ObjectSetText(nameObj,txt,ExtNumberPeakFontSize,"Arial",ExtNumberPeakColor);
}
}
else
{
txt=DoubleToStr(n,0);
nameObj="NumberPeak" + "_" + ExtComplekt + "_" + n;
ObjectCreate(nameObj,OBJ_TEXT,0,Time[i],zz[i]);
ObjectSetText(nameObj,txt,ExtNumberPeakFontSize,"Arial",ExtNumberPeakColor);
}
}
}
}
//--------------------------------------------------------
// Âûâîä íîìåðîâ ïåðåëîìîâ çèãçàãîâ. Êîíåö
//--------------------------------------------------------
//--------------------------------------------------------
// Êàíàëû. Íà÷àëî.
//--------------------------------------------------------
void Channels()
{
if (ExtChannelsNum<=1) {ExtChannelsNum=0; return (0);}
int i,j,k,m,n,peakLeft,peakRight,peakBase,mChannels[]={0,0,0,0,0,0,0,0,0};
double tangens, sdvigH, sdvigL, sdvigH_, sdvigL_, cenaLTLeft, cenaLTRight, cenaLCLeft, cenaLCRight, wrcenaL, wrcenaR;
string aa=DoubleToStr(ExtChannelsNum,0);
datetime timeLTLeft, timeLTRight, timeLCLeft, timeLCRight;
int baseExtremum; // íîìåð ïåðåëîìà çèãçàãà (áàð), îò êîòîðîãî ñòðîèòñÿ òðåíäîâàÿ
bool fTrend=false; // =true - Bull ïðîâîäèì òðåíäîâóþ ïî ìèíèìóìàì, =false - Bear ïðîâîäèì òðåíäîâóþ ïî ìàêñèìóìàì
k=StringLen(aa);
//int o;
for (i=0;i<k;i++)
{
mChannels[i]=StrToInteger(StringSubstr(aa,i,1));
}
if (k==1) {mChannels[k]=mChannels[0]-1; k++;}
ArraySort(mChannels,WHOLE_ARRAY,0,MODE_DESCEND);
for (i=1;i<9;i++)
{
if ((mChannels[i]==mChannels[i-1]) && mChannels[i]>0) {mChannels[i]=0; ArraySort(mChannels,WHOLE_ARRAY,0,MODE_DESCEND); i--;}
}
k=0;
for (i=0;i<9;i++) {if (mChannels[i]>0) k++;}
// Êàíàëû ñ ëèíèåé òðåíäà, ïåðâàÿ òî÷êà êîòîðîé íà ïåðåëîìå çèãçàãà,
// âòîðàÿ òî÷êà ïîñòðîåíà ïî êàñàòåëüíîé ê ðûíêó íà ó÷àñòêå, îõâàòûâàåìîì êàíàëîì. Íà÷àëî.
if (ExtTypeChannels==1)
{
for (i=1;i<k;i++)
{
sdvigH=0; sdvigL=0; sdvigH_=0; sdvigL_=0;
peakLeft=iBarShift(Symbol(),Period(),afr[mChannels[i-1]],true);
if (peakLeft<0) continue;
peakRight=iBarShift(Symbol(),Period(),afr[mChannels[i]],true);
if (peakRight<0) continue;
if (peakLeft==peakRight) continue;
if (afrx[mChannels[i-1]]<afrx[mChannels[i]]) fTrend=true; else fTrend=false;
j=mChannels[i-1]-mChannels[i];
//Print ("j=",j);
//o=0;
if (j==1)
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i]]) fTrend=true; else fTrend=false;
baseExtremum=mChannels[i-1];
}
else if (j==2)
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i]])
{
fTrend=true;
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i-1]-1;
}
else
{
fTrend=false;
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]-1; else baseExtremum=mChannels[i-1];
}
}
/*
else if (j==3)
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-2] && afrx[mChannels[i-1]-1]<afrx[mChannels[i]])
{
o=1;
Print ("===1===");
fTrend=true;
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i-1]-1;
}
else if (afrx[mChannels[i-1]]>afrx[mChannels[i-1]-2] && afrx[mChannels[i-1]-1]>afrx[mChannels[i]])
{
o=2;
Print ("===2===");
fTrend=false;
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1]) baseExtremum=mChannels[i-1]-1; else baseExtremum=mChannels[i-1];
}
else
{
if (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-1])>MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+1])) // ñõîäÿùèéñÿ òðåóãîëüíèê
{
if (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])>MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]))
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
fTrend=true;
if (afrx[mChannels[i-1]]>afrx[mChannels[i]+1]) baseExtremum=mChannels[i]+1; else baseExtremum=mChannels[i-1];
}
else
{
fTrend=false;
if (afrx[mChannels[i-1]]>afrx[mChannels[i]+1]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i]+1;
}
o=3;
Print ("===3===");
}
else
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
fTrend=false;
if (afrx[mChannels[i-1]-1]>afrx[mChannels[i]]) baseExtremum=mChannels[i-1]-1; else baseExtremum=mChannels[i];
}
else
{
fTrend=true;
if (afrx[mChannels[i-1]-1]>afrx[mChannels[i]]) baseExtremum=mChannels[i]; else baseExtremum=mChannels[i-1]-1;
}
o=4;
Print ("===4===");
}
}
else // ðàñõîäÿùèéñÿ òðåóãîëüíèê èëè ïëîñêàÿ (ïàðàëëåëüíàÿ) êîððåêöèÿ, ÷òî î÷åíü ðåäêî
{
if (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])>MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]))
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
o=5;
Print ("===5===");
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
fTrend=false;
if (afrx[mChannels[i]]>afrx[mChannels[i]+2]) baseExtremum=mChannels[i]; else baseExtremum=mChannels[i]+2;
}
else
{
o=51;
Print ("===51===");
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
fTrend=true;
if (afrx[mChannels[i]]>afrx[mChannels[i]+2]) baseExtremum=mChannels[i]; else baseExtremum=mChannels[i]+2;
}
}
else
{
if (afrx[mChannels[i-1]]<afrx[mChannels[i-1]-1])
{
o=6;
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
Print ("afrx[mChannels[i-1]]=",afrx[mChannels[i-1]]);
Print ("afrx[mChannels[i-1]-1]=",afrx[mChannels[i-1]-1]);
Print ("===6===");
fTrend=true;
if (afrx[mChannels[i]+1]>afrx[mChannels[i-1]]) baseExtremum=mChannels[i-1]; else baseExtremum=mChannels[i]+1;
}
else
{
o=7;
Print (MathAbs(afrx[mChannels[i-1]]-afrx[mChannels[i-1]-2])-MathAbs(afrx[mChannels[i]]-afrx[mChannels[i]+2]));
Print ("===7===");
fTrend=false;
if (afrx[mChannels[i]+1]>afrx[mChannels[i-1]]) baseExtremum=mChannels[i]+1; else baseExtremum=mChannels[i-1];
}
}
}
}
}
//Print ("baseExtremum=",baseExtremum);
//Print ("o=",o);
*/
peakBase=iBarShift(Symbol(),Period(),afr[baseExtremum]);
tangens=(afrx[mChannels[i]]-afrx[baseExtremum])/(peakBase-peakRight);
for (j=peakBase;j>=peakRight;j--) // âû÷èñëÿåì tangens
{
if (fTrend)
{
if (afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]>0) tangens=(Low[j]-afrx[baseExtremum])/(peakBase-j);
}
else
{
if (High[j] - (afrx[baseExtremum] + tangens*(peakBase-j))>0) tangens=(High[j]-afrx[baseExtremum])/(peakBase-j);
}
}
for (j=peakLeft;j>=peakRight;j--) // âû÷èñëÿåì ñäâèãè
{
if (fTrend)
{
sdvigH_=High[j] - (afrx[baseExtremum] + tangens*(peakBase-j));
if (sdvigH_>sdvigH) {sdvigH=sdvigH_; cenaLCRight=High[j]+tangens*(j-peakRight);}
}
else
{
sdvigL_=afrx[baseExtremum] + tangens*(peakBase-j)-Low[j];
if (sdvigL_>sdvigL) {sdvigL=sdvigL_; cenaLCRight=Low[j]+tangens*(j-peakRight);}
}
}
timeLCRight=afr[mChannels[i]];
if (ExtTypeLineChannels==0)
{
while (j>0)
{
if (fTrend)
{
if (afrx[baseExtremum] + tangens*(peakBase-j)-Low[j]>sdvigL) break;
}
else
{
if (High[j] - (afrx[baseExtremum] + tangens*(peakBase-j))>sdvigH) break;
}
j--;
}
}
nameObj="LTChannel" + i + ExtComplekt+"_";
if (ExtSave)
{
nameObj=nameObj + save;
}
ObjectDelete(nameObj);
if (fTrend)
{
timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[baseExtremum]-tangens*(peakLeft-peakBase);
timeLTRight=Time[j]; cenaLTRight=afrx[baseExtremum] + tangens*(peakBase-j)-sdvigL;
}
else
{
timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[baseExtremum]-tangens*(peakLeft-peakBase);
timeLTRight=Time[j]; cenaLTRight=afrx[baseExtremum] + tangens*(peakBase-j)+sdvigH;
}
if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
{
n=j;
wrcenaR=cenaLTRight;
if (fTrend)
{
while (cenaLTRight<=afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaR+tangens*(j-n);}
}
else
{
while (cenaLTRight>=afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaR+tangens*(j-n);}
}
timeLTRight=Time[n];
timeLTLeft=afr[baseExtremum]; cenaLTLeft=afrx[baseExtremum];
}
ObjectCreate(nameObj,OBJ_TREND,0,timeLTLeft,cenaLTLeft,timeLTRight,cenaLTRight);
if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLTColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtLTChannelsStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtLTChannelsWidth);
nameObj="LCChannel" + i + ExtComplekt+"_";
if (ExtSave)
{
nameObj=nameObj + save;
}
ObjectDelete(nameObj);
if (fTrend)
{
cenaLCLeft=afrx[baseExtremum]+sdvigH-tangens*(peakLeft-peakBase);
}
else
{
cenaLCLeft=afrx[baseExtremum]-sdvigL-tangens*(peakLeft-peakBase);
}
timeLCLeft=afr[mChannels[i-1]];
if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
{
m=peakLeft;
wrcenaL=cenaLCLeft;
n=peakRight;
wrcenaR=cenaLCRight;
if (fTrend)
{
while (cenaLCLeft>=afrx[baseExtremum] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
while (cenaLCRight>=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
}
else
{
while (cenaLCLeft<=afrx[baseExtremum] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
while (cenaLCRight<=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
}
timeLCLeft=Time[m];
cenaLCRight=wrcenaR-tangens*(n-1-peakRight);
timeLCRight=Time[n-1];
}
ObjectCreate(nameObj,OBJ_TREND,0,timeLCLeft,cenaLCLeft,timeLCRight,cenaLCRight);
if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLCColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtLCChannelsStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtLCChannelsWidth);
}
}
// Êàíàëû ñ ëèíèåé òðåíäà, ïåðâàÿ òî÷êà êîòîðîé íà ïåðåëîìå çèãçàãà,
// âòîðàÿ òî÷êà ïîñòðîåíà ïî êàñàòåëüíîé ê ðûíêó íà ó÷àñòêå, îõâàòûâàåìîì êàíàëîì. Êîíåö.
// Êàíàëû, ïàðàëëåëüíûå ëó÷ó çèãçàãà. Íà÷àëî.
if (ExtTypeChannels==2)
{
for (i=1;i<k;i++)
{
sdvigH=0; sdvigL=0; sdvigH_=0; sdvigL_=0;
peakLeft=iBarShift(Symbol(),Period(),afr[mChannels[i-1]],true);
if (peakLeft<0) continue;
peakRight=iBarShift(Symbol(),Period(),afr[mChannels[i]],true);
if (peakRight<0) continue;
if (peakLeft==peakRight) continue;
if (afrx[mChannels[i-1]]<afrx[mChannels[i]]) fTrend=true; else fTrend=false;
tangens=(afrx[mChannels[i]]-afrx[mChannels[i-1]])/(peakLeft-peakRight);
for (j=peakLeft;j>=peakRight;j--) // âû÷èñëÿåì ñäâèãè
{
sdvigH_=High[j] - (afrx[mChannels[i-1]] + tangens*(peakLeft-j));
sdvigL_=afrx[mChannels[i-1]] + tangens*(peakLeft-j)-Low[j];
if (sdvigH_>sdvigH) sdvigH=sdvigH_;
if (sdvigL_>sdvigL) sdvigL=sdvigL_;
}
if (ExtTypeLineChannels==0)
{
while (j>=0)
{
if (fTrend)
{
if (afrx[mChannels[i-1]] + tangens*(peakLeft-j)-Low[j]>sdvigL) break;
}
else
{
if (High[j] - (afrx[mChannels[i-1]] + tangens*(peakLeft-j))>sdvigH) break;
}
j--;
}
}
nameObj="LTChannel" + i + ExtComplekt+"_";
if (ExtSave)
{
nameObj=nameObj + save;
}
ObjectDelete(nameObj);
if (fTrend)
{
timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[mChannels[i-1]]-sdvigL;
timeLTRight=Time[j]; cenaLTRight=afrx[mChannels[i-1]] + tangens*(peakLeft-j)-sdvigL;
}
else
{
timeLTLeft=afr[mChannels[i-1]]; cenaLTLeft=afrx[mChannels[i-1]]+sdvigH;
timeLTRight=Time[j]; cenaLTRight=afrx[mChannels[i-1]] + tangens*(peakLeft-j)+sdvigH;
}
if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
{
if (fTrend)
{
m=peakLeft;
wrcenaL=cenaLTLeft;
while (cenaLTLeft<afrx[mChannels[i-1]] && m>peakRight) {m--; cenaLTLeft=wrcenaL+tangens*(peakLeft-m);}
timeLTLeft=Time[m+1]; cenaLTLeft=wrcenaL+tangens*(peakLeft-m-1);
n=peakRight;
wrcenaR=cenaLTRight;
while (cenaLTRight<afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaL+tangens*(peakLeft-n);}
timeLTRight=Time[n];
}
else
{
m=peakLeft;
wrcenaL=cenaLTLeft;
while (cenaLTLeft>=afrx[mChannels[i-1]] && m>peakRight) {m--; cenaLTLeft=wrcenaL+tangens*(peakLeft-m);}
timeLTLeft=Time[m+1]; cenaLTLeft=wrcenaL+tangens*(peakLeft-m-1);
n=peakRight;
wrcenaR=cenaLTRight;
while (cenaLTRight>afrx[mChannels[i]] && n>0) {n--; cenaLTRight=wrcenaL+tangens*(peakLeft-n);}
timeLTRight=Time[n];
}
}
ObjectCreate(nameObj,OBJ_TREND,0,timeLTLeft,cenaLTLeft,timeLTRight,cenaLTRight);
if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLTColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtLTChannelsStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtLTChannelsWidth);
nameObj="LCChannel" + i + ExtComplekt+"_";
if (ExtSave)
{
nameObj=nameObj + save;
}
ObjectDelete(nameObj);
if (fTrend)
{
timeLCLeft=afr[mChannels[i-1]]; cenaLCLeft=afrx[mChannels[i-1]]+sdvigH;
timeLCRight=afr[mChannels[i]]; cenaLCRight=afrx[mChannels[i]]+sdvigH;
}
else
{
timeLCLeft=afr[mChannels[i-1]]; cenaLCLeft=afrx[mChannels[i-1]]-sdvigL;
timeLCRight=afr[mChannels[i]]; cenaLCRight=afrx[mChannels[i]]-sdvigL;
}
if (ExtTypeLineChannels==1 || ExtTypeLineChannels==3)
{
if (fTrend)
{
m=peakLeft;
wrcenaL=cenaLCLeft;
while (cenaLCLeft>afrx[mChannels[i-1]] && m<Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
timeLCLeft=Time[m];
n=peakRight;
wrcenaR=cenaLCRight;
while (cenaLCRight>afrx[mChannels[i]] && n<peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
timeLCRight=Time[n-1]; cenaLCRight=wrcenaR-tangens*(n-1-peakRight);
}
else
{
m=peakLeft;
wrcenaL=cenaLCLeft;
while (cenaLCLeft<=afrx[mChannels[i-1]] && m<=Bars) {m++; cenaLCLeft=wrcenaL-tangens*(m-peakLeft);}
timeLCLeft=Time[m];
n=peakRight;
wrcenaR=cenaLCRight;
while (cenaLCRight<=afrx[mChannels[i]] && n<=peakLeft) {n++; cenaLCRight=wrcenaR-tangens*(n-peakRight);}
timeLCRight=Time[n-1]; cenaLCRight=wrcenaR-tangens*(n-1-peakRight);
}
}
ObjectCreate(nameObj,OBJ_TREND,0,timeLCLeft,cenaLCLeft,timeLCRight,cenaLCRight);
if (ExtTypeLineChannels<2) ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLCColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtLCChannelsStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtLCChannelsWidth);
}
}
// Êàíàëû, ïàðàëëåëüíûå ëó÷ó çèãçàãà. Êîíåö.
}
//--------------------------------------------------------
// Êàíàëû. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä Pivot ZigZag. Íà÷àëî.
//--------------------------------------------------------
void PivotZZ(int PivotZZColor, int PivotZZNum, int LinePivotZZ)
{
int peak1, peak2, shift;
double tangens, cena, val;
peak1=iBarShift(Symbol(),Period(),afr[PivotZZNum-1]);
peak2=iBarShift(Symbol(),Period(),afr[PivotZZNum]);
nameObj="LinePivotZZ" + LinePivotZZ + ExtComplekt+"_";
if (ExtSave)
{
nameObj=nameObj + save;
}
ObjectDelete(nameObj);
if (peak1>1)
{
cena=(zz[peak2]+zz[peak1]+Close[peak1-1])/3;
tangens=(zz[peak2]-zz[peak1])/(peak2-peak1);
val=zz[peak1];
for (shift=peak1; shift<peak2; shift++)
{
val=val+tangens;
if (zz[peak2]>zz[peak1])
{
if (val>cena) break;
}
else
{
if (val<cena) break;
}
}
ObjectCreate(nameObj,OBJ_TREND,0,Time[shift+1],cena,Time[0]+5*Period()*60,cena);
ObjectSet(nameObj,OBJPROP_COLOR,PivotZZColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtPivotZZStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtPivotZZWidth);
}
}
//--------------------------------------------------------
// Âûâîä Pivot ZigZag. Êîíåöî.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä Versum Levels ñòàòè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void VLS()
{
VL(mVL[0],mVL[1],mVL[2],ExtVLStaticColor,"VLS");
}
//--------------------------------------------------------
// Âûâîä Versum Levels ñòàòè÷åñêèõ. Êîíåöî.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä Versum Levels äèíàìè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void VLD()
{
VL(2,1,0,ExtVLDinamicColor,"VLD");
}
//--------------------------------------------------------
// Âûâîä Versum Levels äèíàìè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Versum Levels. Íà÷àëî.
//--------------------------------------------------------
void VL(int na,int nb,int nc,color color_line,string vl)
{
double line_pesavento[7]={0.236, 0.382, 0.447, 0.5, 0.618, 0.786, 0.886}, line_fibo[7]={0.236, 0.382, 0.455, 0.5, 0.545, 0.618, 0.764};
int c_bar1, c_bar2, i;
double H_L, mediana, tangens, cena;
c_bar1=iBarShift(Symbol(),Period(),afr[na])-iBarShift(Symbol(),Period(),afr[nb]); // êîëè÷åñòâî áàð â îòðåçêå AB
c_bar2=iBarShift(Symbol(),Period(),afr[nb])-iBarShift(Symbol(),Period(),afr[nc]); // êîëè÷åñòâî áàð â îòðåçêå ÂÑ
if (afrl[na]>0)
{
H_L=afrh[nb]-afrl[nc]; // âûñîòà îòðåçêà ÂÑ
for (i=0; i<7; i++)
{
if (ExtFiboType==1)
{
mediana=line_pesavento[i]*H_L+afrl[nc];
tangens=(mediana-afrl[na])/(c_bar1+(1-line_pesavento[i])*c_bar2);
cena=c_bar2*line_pesavento[i]*tangens+mediana;
nameObj=vl+i+" " + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrl[na],afr[nc],cena);
ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_pesavento[i]*100,1)+"");
}
else
{
mediana=line_fibo[i]*H_L+afrl[nc];
tangens=(mediana-afrl[na])/(c_bar1+(1-line_fibo[i])*c_bar2);
cena=c_bar2*line_fibo[i]*tangens+mediana;
nameObj=vl+i+" " + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrl[na],afr[nc],cena);
ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_fibo[i]*100,1)+"");
}
ObjectSet(nameObj,OBJPROP_COLOR,color_line);
ObjectSet(nameObj,OBJPROP_STYLE,ExtVLStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtVLWidth);
}
}
else
{
H_L=afrh[nc]-afrl[nb]; // âûñîòà îòðåçêà ÂÑ
for (i=0; i<7; i++)
{
if (ExtFiboType==1)
{
mediana=afrh[nc]-line_pesavento[i]*H_L;
tangens=(afrh[na]-mediana)/(c_bar1+(1-line_pesavento[i])*c_bar2);
cena=mediana-c_bar2*line_pesavento[i]*tangens;
nameObj=vl+i+" " + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrh[na],afr[nc],cena);
ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_pesavento[i]*100,1)+"");
}
else
{
mediana=afrh[nc]-line_fibo[i]*H_L;
tangens=(afrh[na]-mediana)/(c_bar1+(1-line_fibo[i])*c_bar2);
cena=mediana-c_bar2*line_fibo[i]*tangens;
nameObj=vl+i+" " + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TREND,0,afr[na],afrh[na],afr[nc],cena);
ObjectSetText(nameObj,"ZUP"+ExtComplekt+" zz"+ExtIndicator+" "+vl+" "+DoubleToStr(line_fibo[i]*100,1)+"");
}
ObjectSet(nameObj,OBJPROP_COLOR,color_line);
ObjectSet(nameObj,OBJPROP_STYLE,ExtVLStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtVLWidth);
}
}
}
//--------------------------------------------------------
// Versum Levels. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä âèë Ýíäðþñà ñòàòè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenPitchforkS()
{
int i,k1,n,nbase1,nbase2;
double a1,b1,c1,ab1,bc1,ab2,bc2,tangens,n1,cl1,ch1,cena;
datetime ta1,tb1,tc1,tab2,tbc2,tcl1,tch1;
bool fo1=false,fo2=false;
int pitch_time[]={0,0,0};
double pitch_cena[]={0,0,0};
double TLine, m618=0.618, m382=0.382;
int mirror1, mirror2;
if (ExtPitchforkCandle)
{
if (iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)==0)
{
if (ExtPitchfork_1_HighLow)
{
mPitchCena[2]=High[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)];
}
else
{
mPitchCena[2]=Low[iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)];
}
}
}
if (ExtPitchforkCandle)
{
cena=mPitchCena[0];
if (ExtPitchfork_1_HighLow)
{
if (ExtCM_0_1A_2B_Static==1)
{
cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboStatic;
}
else if (ExtCM_0_1A_2B_Static==4)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza4(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
}
else
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
}
}
else if (ExtCM_0_1A_2B_Static==5)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza5(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
}
else
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
}
}
else if (ExtCM_0_1A_2B_Static>1)
{
if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboStatic;
}
}
else
{
if (ExtCM_0_1A_2B_Static==1)
{
cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboStatic;
}
else if (ExtCM_0_1A_2B_Static==4)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza4(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
}
else
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
}
}
else if (ExtCM_0_1A_2B_Static==5)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza5(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
}
else
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
}
}
else if (ExtCM_0_1A_2B_Static>1)
{
if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboStatic;
}
}
}
else
{
mPitchTime[0]=afr[mPitch[0]]; mPitchTime[1]=afr[mPitch[1]]; mPitchTime[2]=afr[mPitch[2]];
if (afrl[mPitch[0]]>0)
{
cena=afrl[mPitch[0]];
mPitchCena[0]=afrl[mPitch[0]]; mPitchCena[1]=afrh[mPitch[1]]; mPitchCena[2]=afrl[mPitch[2]];
if (ExtCM_0_1A_2B_Static==1)
{
cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboStatic;
}
else if (ExtCM_0_1A_2B_Static==4)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza4(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
}
else
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
}
}
else if (ExtCM_0_1A_2B_Static==5)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza5(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
}
else
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
}
}
else if (ExtCM_0_1A_2B_Static>1)
{
if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboStatic;
}
}
else
{
cena=afrh[mPitch[0]];
mPitchCena[0]=afrh[mPitch[0]]; mPitchCena[1]=afrl[mPitch[1]]; mPitchCena[2]=afrh[mPitch[2]];
if (ExtCM_0_1A_2B_Static==1)
{
cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboStatic;
}
else if (ExtCM_0_1A_2B_Static==4)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza4(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
}
else
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
}
}
else if (ExtCM_0_1A_2B_Static==5)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza5(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
}
else
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
}
}
else if (ExtCM_0_1A_2B_Static>1)
{
if (ExtCM_0_1A_2B_Static==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboStatic;
}
}
}
mPitchCena[0]=cena;
if (ExtFiboFanStatic) {ExtFiboFanStatic=false; screenFiboFanS();}
nameObj="pmedianaS" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
coordinaty_1_2_mediany_AP(mPitchCena[0], mPitchCena[1], mPitchCena[2], mPitchTime[0], mPitchTime[1], mPitchTime[2], tab2, tbc2, ab1, bc1);
pitch_time[0]=tab2;pitch_cena[0]=ab1;
if (ExtPitchforkStatic==2)
{
ObjectCreate(nameObj,OBJ_TREND,0,tab2,ab1,tbc2,bc1);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
nameObj="1-2pmedianaS" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TEXT,0,tab2,ab1+3*Point);
ObjectSetText(nameObj," 1/2 ML",9,"Arial", ExtLinePitchforkS);
}
nameObj="pitchforkS" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
if (ExtPitchforkStatic!=4)
{
pitch_time[0]=mPitchTime[0];pitch_cena[0]=mPitchCena[0];
if (ExtPitchforkStatic==3) pitch_cena[0]=ab1;
}
pitch_time[1]=mPitchTime[1];pitch_cena[1]=mPitchCena[1];
pitch_time[2]=mPitchTime[2];pitch_cena[2]=mPitchCena[2];
ObjectCreate(nameObj,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]);
ObjectSet(nameObj,OBJPROP_STYLE,ExtPitchforkStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtPitchforkWidth);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboFanMedianaStaticColor>0)
{
coordinaty_mediany_AP(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], tb1, b1);
nameObj="FanMedianaStatic" + ExtComplekt+"_";
/*
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
*/
ObjectDelete(nameObj);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectCreate(nameObj,OBJ_FIBOFAN,0,pitch_time[0],pitch_cena[0],tb1,b1);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanMedianaStaticColor);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==0)
{
screenFibo_st();
}
else if (ExtFiboType==1)
{
screenFibo_Pesavento();
}
else if (ExtFiboType==2)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
for (i=0;i<Sizefi;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100[i]);
}
}
}
//-------------------------------------------------------
if (ExtUTL)
{
nameObj="UTL" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
if (pitch_cena[1]>pitch_cena[2])
{
ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1]);
}
else
{
ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[2],pitch_cena[2]);
}
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
}
if (ExtPivotZoneStaticColor>0 && ExtPitchforkStatic<4) PivotZone(pitch_time, pitch_cena, ExtPivotZoneStaticColor, "PivotZoneS");
if (ExtLTL)
{
nameObj="LTL" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
if (pitch_cena[1]>pitch_cena[2])
{
ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[2],pitch_cena[2]);
}
else
{
ObjectCreate(nameObj,OBJ_TREND,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1]);
}
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
}
//-------------------------------------------------------
if (ExtISLStatic)
{
n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
ta1=pitch_time[1];
a1=pitch_cena[1];
tangens=(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/n1;
ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, true);
tc1=pitch_time[2];
c1=pitch_cena[2];
nameObj="ISL_S" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tc1,c1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtISLStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtISLWidth);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,6);
if (ExtFiboType==1)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,-0.886);
ObjectSetFiboDescription(nameObj, 0, " I S L 88.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,-0.786);
ObjectSetFiboDescription(nameObj, 1, " I S L 78.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,-0.618);
ObjectSetFiboDescription(nameObj, 2, " I S L 61.8");
}
else
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,-0.854);
ObjectSetFiboDescription(nameObj, 0, " I S L 85.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,-0.764);
ObjectSetFiboDescription(nameObj, 1, " I S L 76.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,-0.618);
ObjectSetFiboDescription(nameObj, 2, " I S L 61.8");
}
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,-0.382);
ObjectSetFiboDescription(nameObj, 3, " I S L 38.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,-0.236);
ObjectSetFiboDescription(nameObj, 4, " I S L 23.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,-0.146);
ObjectSetFiboDescription(nameObj, 5, " I S L 14.6");
}
//-------------------------------------------------------
if (ExtUWL || ExtLWL)
{
n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
ta1=pitch_time[0];
tb1=Time[0];
a1=pitch_cena[0];
tangens=(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/n1;
b1=pitch_cena[0]-tangens*iBarShift(Symbol(),Period(),pitch_time[0]);
ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, false);
if (pitch_cena[1]>pitch_cena[2])
{
if (ExtUWL)
{
ch1=pitch_cena[1];
tch1=pitch_time[1];
}
if (ExtLWL)
{
cl1=pitch_cena[2];
tcl1=pitch_time[2];
}
}
else
{
if (ExtUWL)
{
ch1=pitch_cena[2];
tch1=pitch_time[2];
}
if (ExtLWL)
{
cl1=pitch_cena[1];
tcl1=pitch_time[1];
}
}
// if (fo2) {fo2=false; b1=b1+tangens;}
if (ExtUWL)
{
nameObj="UWL" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tch1,ch1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,12);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,0.146);
ObjectSetFiboDescription(nameObj, 0, "U W L 14.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,0.236);
ObjectSetFiboDescription(nameObj, 1, "U W L 23.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,0.382);
ObjectSetFiboDescription(nameObj, 2, "U W L 38.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,0.5);
ObjectSetFiboDescription(nameObj, 3, "U W L 50.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,0.618);
ObjectSetFiboDescription(nameObj, 4, "U W L 61.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,0.764);
ObjectSetFiboDescription(nameObj, 5, "U W L 76.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+6,0.854);
ObjectSetFiboDescription(nameObj, 6, "U W L 85.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+7,1.0);
ObjectSetFiboDescription(nameObj, 7, "U W L 100.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+8,phi);
ObjectSetFiboDescription(nameObj, 8, "U W L 161.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+9,2.0);
ObjectSetFiboDescription(nameObj, 9, "U W L 200.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+10,2.618);
ObjectSetFiboDescription(nameObj, 10, "U W L 261.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+11,4.0);
ObjectSetFiboDescription(nameObj, 11, "U W L 400.0");
}
if (ExtLWL)
{
nameObj="LWL" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tcl1,cl1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_RAY,ExtLongWL);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,12);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,0.146);
ObjectSetFiboDescription(nameObj, 0, "L W L 14.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,0.236);
ObjectSetFiboDescription(nameObj, 1, "L W L 23.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,0.382);
ObjectSetFiboDescription(nameObj, 2, "L W L 38.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,0.5);
ObjectSetFiboDescription(nameObj, 3, "L W L 50.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,0.618);
ObjectSetFiboDescription(nameObj, 4, "L W L 61.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,0.764);
ObjectSetFiboDescription(nameObj, 5, "L W L 76.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+6,0.854);
ObjectSetFiboDescription(nameObj, 6, "L W L 85.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+7,1.0);
ObjectSetFiboDescription(nameObj, 7, "L W L 100.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+8,phi);
ObjectSetFiboDescription(nameObj, 8, "L W L 161.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+9,2.0);
ObjectSetFiboDescription(nameObj, 9, "L W L 200.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+10,2.618);
ObjectSetFiboDescription(nameObj, 10, "L W L 261.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+11,4.0);
ObjectSetFiboDescription(nameObj, 11, "L W L 400.0");
}
}
//-------------------------------------------------------
if (ExtPitchforkStaticColor>0)
{
n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
TLine=pitch_cena[1]-iBarShift(Symbol(),Period(),pitch_time[1])*(pitch_cena[0]-(pitch_cena[2]+pitch_cena[1])/2)/n1;
nameObj="CL" + ExtComplekt+"_";
/*
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
*/
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_CHANNEL,0,pitch_time[1],pitch_cena[1],Time[0],TLine,pitch_time[2],pitch_cena[2]);
ObjectSet(nameObj, OBJPROP_BACK, true);
ObjectSet(nameObj, OBJPROP_COLOR, ExtPitchforkStaticColor);
}
//-------------------------------------------------------
if (ExtRLine)
{
n=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
nbase1=iBarShift(Symbol(),Period(),mPitchTime[1]);
nbase2=iBarShift(Symbol(),Period(),mPitchTime[2]);
if (nbase1+n<=Bars)
{
mirror1=1;
mirror2=0;
ta1=Time[nbase1+n];
tb1=Time[nbase2+n];
tc1=mPitchTime[1];
a1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[1];
b1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[2];
c1=mPitchCena[1];
}
else
{
mirror1=-1;
mirror2=-1;
ta1=mPitchTime[2];
tb1=mPitchTime[1];
tc1=Time[nbase2+n];
a1=mPitchCena[2];
b1=mPitchCena[1];
c1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[2];
}
nameObj="RLineS" + ExtComplekt+"_";
if (ExtSave)
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tc1,c1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkS);
if (ExtRLineBase)
{
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
}
else
{
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkS);
}
fiboRL(nameObj, mirror1, mirror2);
}
//-------------------------------------------------------
// Âðåìåííûå çîíû Ôèáî â ñîñòàâå ñòàòè÷åñêèõ âèë Ýíäðþñà
fiboTimeX ();
}
//--------------------------------------------------------
// Âûâîä âèë Ýíäðþñà ñòàòè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// ôèáî-Time. Íà÷àëî.
//--------------------------------------------------------
void fiboTimeX ()
{
bool ft1, ft2, ft3;
color ftc1, ftc2, ftc3;
ft1=ExtFiboTime1;
ft2=ExtFiboTime2;
ft3=ExtFiboTime3;
ftc1=ExtFiboTime1C;
ftc2=ExtFiboTime2C;
ftc3=ExtFiboTime3C;
if (ExtFiboTimeNum>2)
{
ft1=ExtFiboTime1x;
ft2=ExtFiboTime2x;
ft3=ExtFiboTime3x;
ftc1=ExtFiboTime1Cx;
ftc2=ExtFiboTime2Cx;
ftc3=ExtFiboTime3Cx;
int mft[]={0,0,0};
string aa=DoubleToStr(ExtFiboTimeNum,0);
double ftmincena;
mft[0]=StrToInteger(StringSubstr(aa,0,1));
mft[1]=StrToInteger(StringSubstr(aa,1,1));
mft[2]=StrToInteger(StringSubstr(aa,2,1));
ArraySort(mft,WHOLE_ARRAY,0,MODE_DESCEND);
if (mft[0]<3) ExtFiboTimeNum=0;
else
{
if (mft[1]==1) mft[1]++;
if (mft[1]==0) {mft[1]=mft[0]-1; mft[2]=mft[1]-1;}
if (mft[2]==0) mft[2]=mft[1]-1;
}
if (afrx[mft[0]]<afrx[mft[1]]) ftmincena=afrx[mft[0]]; else ftmincena=afrx[mft[1]];
if (ftmincena>afrx[mft[2]]) ftmincena=afrx[mft[2]];
}
if (ft1)
{
if (ExtFiboTimeNum>2)
{
nameObj="fiboTime1Free" + ExtComplekt+"_";
}
else
{
nameObj="fiboTime1" + ExtComplekt+"_";
}
if (ExtSave)
{
if (ExtFiboTimeNum>2)
{
nameObj=nameObj + save;
}
else
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
}
ObjectDelete(nameObj);
if (ExtFiboTimeNum>2)
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,afr[mft[0]],ftmincena-5*Point,afr[mft[2]],ftmincena-5*Point);
}
else
{
if (ExtPitchforkCandle)
{
if (!ExtPitchfork_1_HighLow)
{
if (mPitchCena[0]>mPitchCena[2])
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[2]-5*Point,mPitchTime[2],mPitchCena[2]-5*Point);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[0]-5*Point,mPitchTime[2],mPitchCena[0]-5*Point);
}
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[1]-5*Point,mPitchTime[2],mPitchCena[1]-5*Point);
}
}
else
{
if (afrl[mPitch[0]]>0)
{
if (afrl[mPitch[0]]>afrl[mPitch[2]])
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[2]-5*Point,mPitchTime[2],mPitchCena[2]-5*Point);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[0]-5*Point,mPitchTime[2],mPitchCena[0]-5*Point);
}
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[0],mPitchCena[1]-5*Point,mPitchTime[2],afrl[mPitch[1]]-5*Point);
}
}
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ftc1);
if (ExtFiboTimeNum>2)
{
fiboTime (nameObj, afr[mft[0]], afr[mft[2]]-afr[mft[0]], 0, "FT1_ ");
}
else
{
fiboTime (nameObj, mPitchTime[0], mPitchTime[2]-mPitchTime[0], 0, "FT1 ");
}
}
if (ft2)
{
if (ExtFiboTimeNum>2)
{
nameObj="fiboTime2Free" + ExtComplekt+"_";
}
else
{
nameObj="fiboTime2" + ExtComplekt+"_";
}
if (ExtSave)
{
if (ExtFiboTimeNum>2)
{
nameObj=nameObj + save;
}
else
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
}
ObjectDelete(nameObj);
if (ExtFiboTimeNum>2)
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,afr[mft[1]],(afrx[mft[2]]+afrx[mft[1]])/2,afr[mft[2]],(afrx[mft[2]]+afrx[mft[1]])/2);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[1],(mPitchCena[2]+mPitchCena[1])/2,mPitchTime[2],(mPitchCena[2]+mPitchCena[1])/2);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ftc2);
if (ExtFiboTimeNum>2)
{
fiboTime (nameObj, afr[mft[1]], afr[mft[2]]-afr[mft[1]], 1, "FT2_ ");
}
else
{
fiboTime (nameObj, mPitchTime[1], mPitchTime[2]-mPitchTime[1], 1, "FT2 ");
}
}
if (ft3)
{
datetime shiftTime;
if (ExtFiboTimeNum>2)
{
shiftTime=afr[mft[1]]-afr[mft[0]];
nameObj="fiboTime3Free" + ExtComplekt+"_";
}
else
{
shiftTime=mPitchTime[1]-mPitchTime[0];
nameObj="fiboTime3" + ExtComplekt+"_";
}
if (ExtSave)
{
if (ExtFiboTimeNum>2)
{
nameObj=nameObj + save;
}
else
{
if (ExtPitchforkCandle && iBarShift(Symbol(),Period(),ExtDateTimePitchfork_3)>0)
{
nameObj=nameObj + save;
}
else
{
if (mPitch[2]>0)
{
nameObj=nameObj + save;
}
}
}
}
ObjectDelete(nameObj);
if (ExtFiboTimeNum>2)
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,afr[mft[2]]-shiftTime,(afrx[mft[2]]+afrx[mft[1]])/2-8*Point,afr[mft[2]],(afrx[mft[2]]+afrx[mft[1]])/2-8*Point);
}
else
{
ObjectCreate(nameObj,OBJ_FIBOTIMES,0,mPitchTime[2]-shiftTime,(mPitchCena[2]+mPitchCena[1])/2-8*Point,mPitchTime[2],(mPitchCena[2]+mPitchCena[1])/2-8*Point);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ftc3);
if (ExtFiboTimeNum>2)
{
fiboTime (nameObj, afr[mft[2]]-shiftTime, shiftTime, 2, "FT3_ ");
}
else
{
fiboTime (nameObj, mPitchTime[2]-shiftTime, shiftTime, 2, "FT3 ");
}
}
}
//--------------------------------------------------------
// ôèáî-Time. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// ôèáî-Time. Íà÷àëî.
//--------------------------------------------------------
void fiboTime (string nameObj, datetime t1, datetime t2, int number, string ftx)
{
string strFibo;
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==1)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,17);
fiboTimeP (nameObj, t1, t2, number, ftx);
}
else if (ExtFiboType==0)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,17);
fiboTimeS (nameObj, t1, t2, number, ftx);
}
else if (ExtFiboType==2)
{
if (number==0)
{
strFibo=ExtFiboFreeFT1;
}
else if (number==1)
{
strFibo=ExtFiboFreeFT2;
}
else if (number==2)
{
strFibo=ExtFiboFreeFT3;
}
ObjectSet(nameObj,OBJPROP_FIBOLEVELS, quantityFibo(strFibo)+3);
fiboTimeFree (nameObj, t1, t2, number, strFibo, ftx);
}
}
//--------------------------------------------------------
// ôèáî-Time. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû ôèáî-Time ñ ÷èñëàìè Ïåñàâåíòî. Íà÷àëî.
//--------------------------------------------------------
void fiboTimeP (string nameObj, datetime t1, datetime t2, int number, string ftx)
{
int ftvisibleDT;
string ftvisible;
if (ExtFiboTimeNum>2)
{
ftvisibleDT=ExtVisibleDateTimex;
ftvisible=ExtVisibleNumberFiboTimex;
}
else
{
ftvisibleDT=ExtVisibleDateTime;
ftvisible=ExtVisibleNumberFiboTime;
}
double fi_1[]={0.0, 1.0, 1.382, 1.5, phi, 1.707, 1.786, 1.886, 2.0, 2.272, 2.414, 2.618, 3.0, 3.414, 3.618, 4.0};
string fitxt100_1[]={"0", "1.0", ".382", ".5", ".618", ".707", ".786", ".886", "1.0", "1.272", "1.414", "1.618", "2.0", "2.414", "2.618", "3.0"};
for (int i=0; i<=15; i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
if (ftvisibleDT && StringSubstr(ftvisible,number,1)=="1")
{
ObjectSetFiboDescription(nameObj, i, ftx + fitxt100_1[i] + " " + TimeToStr(t1 + t2*fi_1[i],TIME_DATE|TIME_MINUTES));
}
else
{
ObjectSetFiboDescription(nameObj, i, ftx + fitxt100_1[i]);
}
}
}
//--------------------------------------------------------
// Ôèáû ôèáî-Time ñ ÷èñëàìè Ïåñàâåíòî ôèáî-Time. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû ôèáî-Time ñî ñòàíäàðòíûìè ÷èñëàìè. Íà÷àëî.
//--------------------------------------------------------
void fiboTimeS (string nameObj, datetime t1, datetime t2, int number, string ftx)
{
int ftvisibleDT;
string ftvisible;
if (ExtFiboTimeNum>2)
{
ftvisibleDT=ExtVisibleDateTimex;
ftvisible=ExtVisibleNumberFiboTimex;
}
else
{
ftvisibleDT=ExtVisibleDateTime;
ftvisible=ExtVisibleNumberFiboTime;
}
double fi_1[]={0.0, 1.0, 1.146, 1.236, 1.382, 1.5, phi, 1.764, 1.854, 2.0, 2.236, 2.382, 2.618, 3.0, 3.618, 4.0, 5.0};
string fitxt100_1[]={"0", "1.0", ".146", ".236", ".382", ".5", ".618", ".764", ".854", "1.0", "1.236", "1.382", "1.618", "2.0", "2.618", "3.0", "4.0"};
for (int i=0; i<=16; i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
if (ftvisibleDT && StringSubstr(ftvisible,number,1)=="1")
{
ObjectSetFiboDescription(nameObj, i, ftx + fitxt100_1[i] + " " + TimeToStr(t1 + t2*fi_1[i],TIME_DATE|TIME_MINUTES));
}
else
{
ObjectSetFiboDescription(nameObj, i, ftx + fitxt100_1[i]);
}
}
}
//--------------------------------------------------------
// Ôèáû ôèáî-Time ñî ñòàíäàðòíûìè ÷èñëàìè. Êîíåö.
//--------------------------------------------------------
/*
extern string ExtFiboFreeRL = "0.382,0.618,1,1.618,2.618";
extern string ExtFiboFreeISL = "0.25,0.75";
extern string ExtFiboFreeXWL = "0.5,1,2,4";
if (ExtFiboType==2) // Ïîäãîòîâêà ñïèñêà ôèá, çàäàííûõ ïîëüçîâàòåëåì
{
i=-1;
aa2=0;
while (aa2>=0)
{
aa2=StringFind(ExtFiboTypeFree, ",",i+1);
if (aa2>=0)
{i=aa2;Sizefi++;}
else
{
if (StringLen(ExtFiboTypeFree)-i>0)
{
if (StrToDouble(StringSubstr(ExtFiboTypeFree,i+1))>0) Sizefi++;
arrResize(Sizefi);
aa1=ExtFiboTypeFree;
for (i=0;i<Sizefi;i++)
{
aa2=StringFind(aa1, ",", 0);
fitxt[i]=StringTrimLeft(StringTrimRight(StringSubstr(aa1,0,aa2)));
fi[i]=StrToDouble(fitxt[i]);
if (fi[i]<1) fitxt[i]=StringSubstr(fitxt[i],1);
fitxt100[i]=DoubleToStr(100*fi[i],1);
if (aa2>=0) aa1=StringSubstr(aa1,aa2+1);
}
}
}
}
}
*/
//--------------------------------------------------------
// Ôèáû ôèáî-Time ñ ïîëüçîâàòåëüñêèìè ÷èñëàìè. Íà÷àëî.
//--------------------------------------------------------
void fiboTimeFree (string nameObj, datetime t1, datetime t2, int number, string strFibo, string ftx)
{
int ftvisibleDT;
string ftvisible;
if (ExtFiboTimeNum>2)
{
ftvisibleDT=ExtVisibleDateTimex;
ftvisible=ExtVisibleNumberFiboTimex;
}
else
{
ftvisibleDT=ExtVisibleDateTime;
ftvisible=ExtVisibleNumberFiboTime;
}
string str, str1;
double fi;
int j,k;
j=quantityFibo (strFibo);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,1.0);
if (ftvisibleDT && StringSubstr(ftvisible,number,1)=="1")
{
ObjectSetFiboDescription(nameObj, 0, ftx + "0" + " " + TimeToStr(t1,TIME_DATE|TIME_MINUTES));
ObjectSetFiboDescription(nameObj, 1, ftx + "1.0" + " " + TimeToStr(t1 + t2,TIME_DATE|TIME_MINUTES));
}
else
{
ObjectSetFiboDescription(nameObj, 0, ftx + "0");
ObjectSetFiboDescription(nameObj, 1, ftx + "1.0");
}
str=strFibo;
for (int i=0; i<=j; i++)
{
k=StringFind(str, ",", 0);
str1=StringTrimLeft(StringTrimRight(StringSubstr(str,0,k)));
fi=StrToDouble(str1);
if (fi<1) str1=StringSubstr(str1,1);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+(i+2),fi+1);
if (ftvisibleDT && StringSubstr(ftvisible,number,1)=="1")
{
ObjectSetFiboDescription(nameObj, i+2, ftx + str1 + " " + TimeToStr(t1 + t2*(fi+1),TIME_DATE|TIME_MINUTES));
}
else
{
ObjectSetFiboDescription(nameObj, i+2, ftx + str1);
}
if (k>=0) str=StringSubstr(str,k+1);
}
}
//--------------------------------------------------------
// Ôèáû ôèáî-Time ñ ïîëüçîâàòåëüñêèìè ÷èñëàìè. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ñ÷åò÷èê ôèá. Íà÷àëî.
//--------------------------------------------------------
int quantityFibo (string sFibo)
{
int j=0,i,k;
while (true)
{
k=StringFind(sFibo, ",",i+1);
if (k>0) {j++; i=k;}
else return (j);
}
}
//--------------------------------------------------------
// Ñ÷åò÷èê ôèá. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä âèë Ýíäðþñà äèíàìè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenPitchforkD()
{
int i,k1,n,nbase1,nbase2;
double a1,b1,c1,ab1,bc1,ab2,bc2,d,n1,cena,m618=0.618,m382=0.382, tangens;
datetime ta1,tb1,tc1,tab2,tbc2;
bool fo1=false,fo2=false;
int pitch_time[]={0,0,0};
double pitch_cena[]={0,0,0};
int mirror1, mirror2;
mPitchTime[0]=afr[2]; mPitchTime[1]=afr[1]; mPitchTime[2]=afr[0];
mPitchCena[0]=afrx[2]; mPitchCena[1]=afrx[1]; mPitchCena[2]=afrx[0];
cena=afrx[2];
if (afrl[2]>0)
{
if (ExtCM_0_1A_2B_Dinamic==1)
{
cena=mPitchCena[0]+(mPitchCena[1]-mPitchCena[0])*ExtCM_FiboDinamic;
}
else if (ExtCM_0_1A_2B_Dinamic==4)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza4(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
}
else
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
}
}
else if (ExtCM_0_1A_2B_Dinamic==5)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza5(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m618;
}
else
{
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*m382;
}
}
else if (ExtCM_0_1A_2B_Dinamic>1)
{
if (ExtCM_0_1A_2B_Dinamic==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]-(mPitchCena[1]-mPitchCena[2])*ExtCM_FiboDinamic;
}
}
else
{
if (ExtCM_0_1A_2B_Dinamic==1)
{
cena=mPitchCena[0]-(mPitchCena[0]-mPitchCena[1])*ExtCM_FiboDinamic;
}
else if (ExtCM_0_1A_2B_Dinamic==4)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza4(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
}
else
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
}
}
else if (ExtCM_0_1A_2B_Dinamic==5)
{
mPitchTimeSave=mPitchTime[0];
mPitchTime[0]=mPitchTime[1];
if (maxGipotenuza5(mPitchTime,mPitchCena))
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m618;
}
else
{
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*m382;
}
}
else if (ExtCM_0_1A_2B_Dinamic>1)
{
if (ExtCM_0_1A_2B_Dinamic==2) mPitchTime[0]=mPitchTime[1];
cena=mPitchCena[1]+(mPitchCena[2]-mPitchCena[1])*ExtCM_FiboDinamic;
}
}
mPitchCena[0]=cena;
coordinaty_1_2_mediany_AP(mPitchCena[0], mPitchCena[1], mPitchCena[2], mPitchTime[0], mPitchTime[1], mPitchTime[2], tab2, tbc2, ab1, bc1);
pitch_time[0]=tab2;pitch_cena[0]=ab1;
nameObj="pmedianaD" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtPitchforkDinamic==2)
{
ObjectCreate(nameObj,OBJ_TREND,0,tab2,ab1,tbc2,bc1);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkD);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
nameObj="1-2pmedianaD" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_TEXT,0,tab2,ab1+3*Point);
ObjectSetText(nameObj," 1/2 ML",9,"Arial", ExtLinePitchforkD);
}
nameObj="pitchforkD" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtPitchforkDinamic!=4)
{
pitch_time[0]=mPitchTime[0];pitch_cena[0]=mPitchCena[0];
if (ExtPitchforkDinamic==3) pitch_cena[0]=ab1;
}
pitch_time[1]=mPitchTime[1];pitch_cena[1]=mPitchCena[1];
pitch_time[2]=mPitchTime[2];pitch_cena[2]=mPitchCena[2];
ObjectCreate(nameObj,OBJ_PITCHFORK,0,pitch_time[0],pitch_cena[0],pitch_time[1],pitch_cena[1],pitch_time[2],pitch_cena[2]);
ObjectSet(nameObj,OBJPROP_STYLE,ExtPitchforkStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtPitchforkWidth);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkD);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtPivotZoneDinamicColor>0 && ExtPitchforkDinamic<4) PivotZone(pitch_time, pitch_cena, ExtPivotZoneDinamicColor, "PivotZoneD");
if (ExtFiboFanMedianaDinamicColor>0)
{
coordinaty_mediany_AP(pitch_cena[0], pitch_cena[1], pitch_cena[2], pitch_time[0], pitch_time[1], pitch_time[2], tb1, b1);
nameObj="FanMedianaDinamic" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOFAN,0,pitch_time[0],pitch_cena[0],tb1,b1);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanMedianaDinamicColor);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==0)
{
screenFibo_st();
}
else if (ExtFiboType==1)
{
screenFibo_Pesavento();
}
else if (ExtFiboType==2)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
for (i=0;i<Sizefi;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100[i]);
}
}
}
if (ExtISLDinamic)
{
n1=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
ta1=pitch_time[1];
a1=pitch_cena[1];
tangens=(pitch_cena[0]-(pitch_cena[1]+pitch_cena[2])/2.0)/n1;
ML_RL400(tangens, pitch_cena, pitch_time, tb1, b1, true);
tc1=pitch_time[2];
c1=pitch_cena[2];
nameObj="ISL_D" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tc1,c1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkD);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtISLStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtISLWidth);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,6);
if (ExtFiboType==1)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,-0.886);
ObjectSetFiboDescription(nameObj, 0, " I S L 88.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,-0.786);
ObjectSetFiboDescription(nameObj, 1, " I S L 78.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,-0.618);
ObjectSetFiboDescription(nameObj, 2, " I S L 61.8");
}
else
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,-0.854);
ObjectSetFiboDescription(nameObj, 0, " I S L 85.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,-0.764);
ObjectSetFiboDescription(nameObj, 1, " I S L 76.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,-0.618);
ObjectSetFiboDescription(nameObj, 2, " I S L 61.8");
}
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,-0.382);
ObjectSetFiboDescription(nameObj, 3, " I S L 38.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,-0.236);
ObjectSetFiboDescription(nameObj, 4, " I S L 23.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,-0.146);
ObjectSetFiboDescription(nameObj, 5, " I S L 14.6");
}
if (ExtRLine)
{
n=iBarShift(Symbol(),Period(),pitch_time[0])-(iBarShift(Symbol(),Period(),pitch_time[1])+iBarShift(Symbol(),Period(),pitch_time[2]))/2.0;
nbase1=iBarShift(Symbol(),Period(),pitch_time[1]);
nbase2=iBarShift(Symbol(),Period(),pitch_time[2]);
if (nbase1+n<=Bars)
{
mirror1=1;
mirror2=0;
ta1=Time[nbase1+n];
tb1=Time[nbase2+n];
tc1=mPitchTime[1];
a1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[1];
b1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[2];
c1=mPitchCena[1];
}
else
{
mirror1=-1;
mirror2=-1;
ta1=mPitchTime[2];
tb1=mPitchTime[1];
tc1=Time[nbase2+n];
a1=mPitchCena[2];
b1=mPitchCena[1];
c1=(pitch_cena[0]-(mPitchCena[1]+mPitchCena[2])/2)+mPitchCena[2];
}
nameObj="RLineD" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOCHANNEL,0,ta1,a1,tb1,b1,tc1,c1);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtLinePitchforkD);
if (ExtRLineBase)
{
ObjectSet(nameObj,OBJPROP_COLOR,CLR_NONE);
}
else
{
ObjectSet(nameObj,OBJPROP_COLOR,ExtLinePitchforkD);
}
fiboRL(nameObj, mirror1, mirror2);
}
}
//--------------------------------------------------------
// Âûâîä âèë Ýíäðþñà äèíàìè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû äëÿ RLine. Íà÷àëî.
//--------------------------------------------------------
void fiboRL(string nameObj, int mirror1, int mirror2)
{
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==1)
{
if (ExtRL146)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,17);
}
else
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,15);
}
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,mirror2+mirror1*0.382);
ObjectSetFiboDescription(nameObj, 0, " RL 38.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,mirror2+mirror1*0.5);
ObjectSetFiboDescription(nameObj, 1, " RL 50.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,mirror2+mirror1*0.618);
ObjectSetFiboDescription(nameObj, 2, " RL 61.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,mirror2+mirror1*0.707);
ObjectSetFiboDescription(nameObj, 3, " RL 70.7");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,mirror2+mirror1*0.786);
ObjectSetFiboDescription(nameObj, 4, " RL 78.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,mirror2+mirror1*0.886);
ObjectSetFiboDescription(nameObj, 5, " RL 88.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+6,mirror2+mirror1*1.0);
ObjectSetFiboDescription(nameObj, 6, " RL 100.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+7,mirror2+mirror1*1.128);
ObjectSetFiboDescription(nameObj, 7, " RL 112.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+8,mirror2+mirror1*1.272);
ObjectSetFiboDescription(nameObj, 8, " RL 127.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+9,mirror2+mirror1*1.414);
ObjectSetFiboDescription(nameObj, 9, " RL 141.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+10,mirror2+mirror1*phi);
ObjectSetFiboDescription(nameObj, 10, " RL 161.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+11,mirror2+mirror1*2.0);
ObjectSetFiboDescription(nameObj, 11, " RL 200.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+12,mirror2+mirror1*2.414);
ObjectSetFiboDescription(nameObj, 12, " RL 241.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+13,mirror2+mirror1*2.618);
ObjectSetFiboDescription(nameObj, 13, " RL 261.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+14,mirror2+mirror1*4.0);
ObjectSetFiboDescription(nameObj, 14, " RL 400.0");
if (ExtRL146)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+16,mirror2+mirror1*0.146);
ObjectSetFiboDescription(nameObj, 16, " RL 14.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+15,mirror2+mirror1*0.236);
ObjectSetFiboDescription(nameObj, 15, " RL 23.6");
}
}
else if (ExtFiboType==0)
{
if (ExtRL146)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,14);
}
else
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,12);
}
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,mirror2+mirror1*0.236);
ObjectSetFiboDescription(nameObj, 0, " RL 23.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,mirror2+mirror1*0.382);
ObjectSetFiboDescription(nameObj, 1, " RL 38.2");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,mirror2+mirror1*0.5);
ObjectSetFiboDescription(nameObj, 2, " RL 50.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,mirror2+mirror1*0.618);
ObjectSetFiboDescription(nameObj, 3, " RL 61.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,mirror2+mirror1*0.764);
ObjectSetFiboDescription(nameObj, 4, " RL 76.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,mirror2+mirror1*0.854);
ObjectSetFiboDescription(nameObj, 5, " RL 85.4");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+6,mirror2+mirror1*1.0);
ObjectSetFiboDescription(nameObj, 6, " RL 100.0");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+7,mirror2+mirror1*1.236);
ObjectSetFiboDescription(nameObj, 7, " RL 123.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+8,mirror2+mirror1*phi);
ObjectSetFiboDescription(nameObj, 8, " RL 161.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+9,mirror2+mirror1*2.0);
ObjectSetFiboDescription(nameObj, 9, " RL 200");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+10,mirror2+mirror1*2.618);
ObjectSetFiboDescription(nameObj, 10, " RL 261.8");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+11,mirror2+mirror1*4.0);
ObjectSetFiboDescription(nameObj, 11, " RL 400.0");
if (ExtRL146)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+12,mirror2+mirror1*0.146);
ObjectSetFiboDescription(nameObj, 12, " RL 14.6");
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+13,mirror2+mirror1*0.236);
ObjectSetFiboDescription(nameObj, 13, " RL 23.6");
}
}
else if (ExtFiboType==2)
{
string str, str1;
double fi;
int j,k;
j=quantityFibo (ExtFiboFreeRL);
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,j+1);
str=ExtFiboFreeRL;
for (int i=0;i<=j;i++)
{
k=StringFind(str, ",", 0);
str1=StringTrimLeft(StringTrimRight(StringSubstr(str,0,k)));
fi=StrToDouble(str1);
if (fi<1) str1=StringSubstr(str1,1);
str1=DoubleToStr(fi*100,1);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,mirror2+mirror1*fi);
ObjectSetFiboDescription(nameObj, i, " RL "+str1);
if (k>=0) str=StringSubstr(str,k+1);
}
}
}
//--------------------------------------------------------
// Ôèáû äëÿ RLine. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ïîäïðîãðàììà ðàñ÷åòà êîîðäèíàò 1/2 ìåäèàíû âèë Ýíäðþñà. Íà÷àëî.
//--------------------------------------------------------
// Ïåðåäàâàåìûå ïàðàìåòðû öåíà è âðåìÿ òðåõ òî÷åê âèë Ýíäðþñà
// à òàêæå ññûëêà íà ïåðåìåííûå -
// tAB2, tBC2 - âðåìÿ áàðîâ, ÷åðåç êîòîðûå ïðîâîäèòñÿ 1/2 ìåäèàíà
// AB2, BC2 - öåíîâîå çíà÷åíèå òî÷åê, ÷åðåç êîòîðûå ïðîâîäèòñÿ 1/2 ìåäèàíà
//
void coordinaty_1_2_mediany_AP(double A_1, double B_2, double C_3, datetime T_1, datetime T_2, datetime T_3, datetime& tAB2, datetime& tBC2, double& AB2, double& BC2)
{
double tangens;
int n1, n2, n3, nab2, nbc2;
// íîìåðà áàðîâ, îò êîòîðûõ ñòðîÿòñÿ âèëû Ýíäðþñà
n1=iBarShift(Symbol(),Period(),T_1);
n2=iBarShift(Symbol(),Period(),T_2);
n3=iBarShift(Symbol(),Period(),T_3);
// òàíãåíñ óãëà íàêëîíà 1/2 ìåäèàíû âèë Ýíäðþñà
tangens=(C_3 - A_1)/(n1 - n3);
// íîìåðà áàðîâ, ÷åðåç êîòîðûå áóäåò ïîñòðîåíà 1/2 ìåäèàíà
nab2=MathCeil((n1+n2)/2.0);
nbc2=MathCeil((n2+n3)/2.0);
// çíà÷åíèÿ öåíû òî÷åê, ÷åðåç êîòîðûå áóäåò ïîñòðîåíà 1/2 ìåäèàíà
AB2=(A_1 + B_2)/2 - (nab2-(n1+n2)/2.0)*tangens;
BC2=(B_2 + C_3)/2 - (nbc2-(n2+n3)/2.0)*tangens;
// âðåìÿ áàðîâ, ÷åðåç êîòîðûå áóäåò ïîñòðîåíà 1/2 ìåäèàíà
tAB2=Time[nab2];
tBC2=Time[nbc2];
}
//--------------------------------------------------------
// Ïîäïðîãðàììà ðàñ÷åòà êîîðäèíàò 1/2 ìåäèàíû âèë Ýíäðþñà. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ïîäïðîãðàììà ðàñ÷åòà êîîðäèíàòû òî÷êè íà ìåäèàíå âèë Ýíäðþñà. Íà÷àëî.
//--------------------------------------------------------
// Ïåðåäàâàåìûå ïàðàìåòðû öåíà è âðåìÿ òðåõ òî÷åê âèë Ýíäðþñà
// à òàêæå ññûëêà íà ïåðåìåííûå -
// tAB2, tBC2 - âðåìÿ áàðîâ, ÷åðåç êîòîðûå ïðîâîäèòñÿ 1/2 ìåäèàíà
// AB2, BC2 - öåíîâîå çíà÷åíèå òî÷åê, ÷åðåç êîòîðûå ïðîâîäèòñÿ 1/2 ìåäèàíà
//
void coordinaty_mediany_AP(double A_1, double B_2, double C_3, datetime T_1, datetime T_2, datetime T_3, datetime& tB1, double& B1)
{
double tangens;
int n1, n2, n3, nbc2;
// íîìåðà áàðîâ, îò êîòîðûõ ñòðîÿòñÿ âèëû Ýíäðþñà
n1=iBarShift(Symbol(),Period(),T_1);
n2=iBarShift(Symbol(),Period(),T_2);
n3=iBarShift(Symbol(),Period(),T_3);
// òàíãåíñ óãëà íàêëîíà ìåäèàíû âèë Ýíäðþñà
tangens=(A_1-(C_3+B_2)/2)/(n1 - (n3+n2)/2.0);
// íîìåð áàðà, ÷åðåç êîòîðûé ïðîõîäèò ìåäèàíà
nbc2=MathCeil((n2+n3)/2.0);
// çíà÷åíèÿ öåíû òî÷êè, ÷åðåç êîòîðûé ïðîõîäèò ìåäèàíà
B1=(B_2 + C_3)/2 - ((n2+n3)/2.0-nbc2)*tangens;
// âðåìÿ áàðà, ÷åðåç êîòîðûé ïðîõîäèò ìåäèàíà
tB1=Time[nbc2];
}
//--------------------------------------------------------
// Ïîäïðîãðàììà ðàñ÷åòà êîîðäèíàòû òî÷êè íà ìåäèàíå âèë Ýíäðþñà. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ñðàâíåíèå ãèïîòåíóç äëÿ ExtCM_0_1A_2B=4. Íà÷àëî.
//-------------------------------------------------------
bool maxGipotenuza4(datetime pitch_time1[], double pitch_cena1[])
{
double k2,k3;
datetime k4,k5;
/*
k2=MathAbs(pitch_cena1[0]-pitch_cena1[1])/Point;
k3=MathAbs(pitch_cena1[1]-pitch_cena1[2])/Point;
k4=(mPitchTimeSave-pitch_time1[1])/(GrossPeriod*60);
k5=(pitch_time1[1]-pitch_time1[2])/(GrossPeriod*60);
*/
k2=MathAbs(pitch_cena1[0]-pitch_cena1[1])/ASBar;
k3=MathAbs(pitch_cena1[1]-pitch_cena1[2])/ASBar;
k4=iBarShift(NULL,GrossPeriod,mPitchTimeSave)-iBarShift(NULL,GrossPeriod,pitch_time1[1]);
k5=iBarShift(NULL,GrossPeriod,pitch_time1[1])-iBarShift(NULL,GrossPeriod,pitch_time1[2]);
if (k2*k2+k4*k4>k3*k3+k5*k5) return(true); else return(false);
}
//--------------------------------------------------------
// Ñðàâíåíèå ãèïîòåíóç äëÿ ExtCM_0_1A_2B=4. Êîíåö.
//-------------------------------------------------------
//--------------------------------------------------------
// Ñðàâíåíèå ãèïîòåíóç äëÿ ExtCM_0_1A_2B=5. Íà÷àëî.
//-------------------------------------------------------
bool maxGipotenuza5(datetime pitch_time1[], double pitch_cena1[])
{
double k2,k3;
datetime k4,k5;
k2=MathAbs(pitch_cena1[0]-pitch_cena1[1])/Point;
k3=MathAbs(pitch_cena1[1]-pitch_cena1[2])/Point;
k4=iBarShift(NULL,GrossPeriod,mPitchTimeSave)-iBarShift(NULL,GrossPeriod,pitch_time1[1]);
k5=iBarShift(NULL,GrossPeriod,pitch_time1[1])-iBarShift(NULL,GrossPeriod,pitch_time1[2]);
if (k2*k2+k4*k4>k3*k3+k5*k5) return(true); else return(false);
}
//--------------------------------------------------------
// Ñðàâíåíèå ãèïîòåíóç äëÿ ExtCM_0_1A_2B=5. Êîíåö.
//-------------------------------------------------------
//--------------------------------------------------------
// Pivot Zone. Íà÷àëî.
//-------------------------------------------------------
void PivotZone(datetime pitch_time1[], double pitch_cena1[], color PivotZoneColor, string name)
{
datetime ta1, tb1;
double a1, b1, d, n1;
int m, m1, m2;
ta1=pitch_time1[2];
a1=pitch_cena1[2];
m1=iBarShift(Symbol(),Period(),pitch_time1[0])-iBarShift(Symbol(),Period(),pitch_time1[1]);
m2=iBarShift(Symbol(),Period(),pitch_time1[1])-iBarShift(Symbol(),Period(),pitch_time1[2]);
m=iBarShift(Symbol(),Period(),pitch_time1[2]);
n1=iBarShift(Symbol(),Period(),pitch_time1[0])-(iBarShift(Symbol(),Period(),pitch_time1[1])+iBarShift(Symbol(),Period(),pitch_time1[2]))/2.0;
d=(pitch_cena1[0]-(pitch_cena1[1]+pitch_cena1[2])/2.0)/n1;
if (m1>m2)
{
if (m1>m)
{
tb1=Time[0]+(m1-m)*Period()*60;
}
else
{
tb1=Time[iBarShift(Symbol(),Period(),pitch_time1[2])-m1];
}
b1=pitch_cena1[0]-d*(2*m1+m2);
}
else
{
if (m2>m)
{
tb1=Time[0]+(m2-m)*Period()*60;
}
else
{
tb1=Time[iBarShift(Symbol(),Period(),pitch_time1[2])-m2];
}
b1=pitch_cena1[0]-d*(2*m2+m1);
}
nameObj=name + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_RECTANGLE,0,ta1,a1,tb1,b1);
ObjectSetText(nameObj,"PZ "+Period_tf+" "+TimeToStr(tb1,TIME_DATE|TIME_MINUTES));
ObjectSet(nameObj, OBJPROP_BACK, ExtPivotZoneFramework);
ObjectSet(nameObj, OBJPROP_COLOR, PivotZoneColor);
}
//--------------------------------------------------------
// Pivot Zone. Êîíåö.
//-------------------------------------------------------
//--------------------------------------------------------
// Îïðåäåëåíèå òî÷êè ïåðåñå÷åíèÿ RL400 ìåäèàíû. Íà÷àëî.
//-------------------------------------------------------
// flag=true - ðàññ÷èòûâàåòñÿ ISL
// flag=false - ðàññ÷èòûâàåòñÿ UWL/LWL
void ML_RL400(double Tangens, double pitch_cena1[], datetime pitch_time1[], int& tB1, double& B1, bool flag)
{
int m, m1, m2;
m1=iBarShift(Symbol(),Period(),pitch_time1[0]);
m2=MathCeil((iBarShift(Symbol(),Period(),pitch_time1[1])+iBarShift(Symbol(),Period(),pitch_time1[2]))/2.0);
m=(m1-m2)*4;
if (m>m2)
{
tB1=Time[0]+(m-m2)*Period()*60;
if (tB1<0) tB1=2133648000;
if (flag) B1=pitch_cena1[1]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[1])+(tB1-Time[0])/(60*Period()));
else B1=pitch_cena1[0]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[0])+(tB1-Time[0])/(60*Period()));
}
else
{
tB1=Time[m2-m];
if (flag) B1=pitch_cena1[1]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[1])-iBarShift(Symbol(),Period(),tB1));
else B1=pitch_cena1[0]-Tangens*(iBarShift(Symbol(),Period(),pitch_time1[0])-iBarShift(Symbol(),Period(),tB1));
}
}
//--------------------------------------------------------
// Îïðåäåëåíèå òî÷êè ïåðåñå÷åíèÿ RL400 ìåäèàíû. Êîíåö.
//-------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ïðîèçâîëüíûõ ôèáîâååðîâ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboFan()
{
int i;
double a1,b1;
a1=afrx[mFan[0]]; b1=afrx[mFan[1]];
nameObj="FiboFan" + ExtComplekt+"_";
if (mFan[1]>0)
{
if (ExtSave)
{
nameObj=nameObj + save;
}
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOFAN,0,afr[mFan[0]],a1,afr[mFan[1]],b1);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtFanStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtFanWidth);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanColor);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
if (ExtFiboType==0)
{
screenFibo_st();
}
else if (ExtFiboType==1)
{
screenFibo_Pesavento();
}
else if (ExtFiboType==2)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
for (i=0;i<Sizefi;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100[i]);
}
}
}
//--------------------------------------------------------
// Âûâîä ïðîèçâîëüíûõ ôèáîâååðîâ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ñïèñîê ñòàíäàðòíûõ ôèá äëÿ ïðîèçâîëüíûõ âååðîâ. Íà÷àëî.
//--------------------------------------------------------
void screenFibo_st()
{
double fi_1[]={0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, phi, 2.618};
string fitxt100_1[]={"23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "161.8", "2.618"};
int i;
Sizefi_1=9;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]);
}
}
//--------------------------------------------------------
// Ñïèñîê ñòàíäàðòíûõ ôèá äëÿ ïðîèçâîëüíûõ âååðîâ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ñïèñîê ôèá Ïåñàâåíòî äëÿ ïðîèçâîëüíûõ âååðîâ. Íà÷àëî.
//--------------------------------------------------------
void screenFibo_Pesavento()
{
double fi_1[]={0.382, 0.5, 0.618, 0.786, 0.886, 1.0, 1.272, phi, 2.0, 2.618};
string fitxt100_1[]={"38.2", "50.0", "61.8", "78.6", "88.6", "100.0", "127.2", "161.8", "200.0", "2.618"};
int i;
Sizefi_1=10;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]);
}
}
//--------------------------------------------------------
// Ñïèñîê ôèá Ïåñàâåíòî äëÿ ïðîèçâîëüíûõ âååðîâ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ôèá ñòàòè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboS()
{
nameObj="fiboS" + ExtComplekt+"_";
if (mFibo[1]>0)
{
if (ExtSave)
{
nameObj=nameObj + save;
}
}
screenFibo_(ExtFiboS, " ", mFibo[0], mFibo[1]);
}
//--------------------------------------------------------
// Âûâîä ôèá ñòàòè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ôèá äèíàìè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboD()
{
nameObj="fiboD" + ExtComplekt+"_";
screenFibo_(ExtFiboD, "", 1, 0);
}
//--------------------------------------------------------
// Âûâîä ôèá äèíàìè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ñîçäàíèå ôèá. Íà÷àëî.
//--------------------------------------------------------
void screenFibo_(color colorFibo, string otstup, int a1, int a2)
{
double fibo_0, fibo_100, fiboPrice, fiboPrice1;
ObjectDelete(nameObj);
if (!ExtFiboCorrectionExpansion)
{
fibo_0=afrx[a1];fibo_100=afrx[a2];
fiboPrice=afrx[a1]-afrx[a2];fiboPrice1=afrx[a2];
}
else
{
fibo_100=afrx[a1];fibo_0=afrx[a2];
fiboPrice=afrx[a2]-afrx[a1];fiboPrice1=afrx[a1];
}
if (!ExtFiboCorrectionExpansion)
{
ObjectCreate(nameObj,OBJ_FIBO,0,afr[a1],fibo_0,afr[a2],fibo_100);
}
else
{
ObjectCreate(nameObj,OBJ_FIBO,0,afr[a2],fibo_0,afr[a1],fibo_100);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,colorFibo);
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtFiboStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtFiboWidth);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==0)
{
fibo_standart (fiboPrice, fiboPrice1,"-"+Period_tf+otstup);
}
else if (ExtFiboType==1)
{
fibo_patterns(fiboPrice, fiboPrice1,"-"+Period_tf+otstup);
}
else if (ExtFiboType==2)
{
fibo_custom (fiboPrice, fiboPrice1,"-"+Period_tf+otstup);
}
}
//--------------------------------------------------------
// Ñîçäàíèå ôèá. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû ñòàíäàðòíûå. Íà÷àëî.
//--------------------------------------------------------
void fibo_standart(double fiboPrice,double fiboPrice1,string fibo)
{
double fi_1[]={0, 0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, phi, 2.618, 4.236, 6.854};
string fitxt100_1[]={"0.0", "14.6", "23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "123.6", "161.8", "2.618", "423.6", "685.4"};
int i;
Sizefi_1=14;
if (!ExtFiboCorrectionExpansion)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]+" "+DoubleToStr(fiboPrice*fi_1[i]+fiboPrice1, Digits)+fibo);
}
}
else
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1+2);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL,0);
ObjectSetFiboDescription(nameObj, 0, "Fe 1 "+DoubleToStr(fiboPrice+fiboPrice1, Digits)+fibo);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL,1);
ObjectSetFiboDescription(nameObj, 1, "Fe 0 "+DoubleToStr(fiboPrice1, Digits)+fibo);
for (i=0;i<Sizefi_1;i++)
{
if (fi_1[i]>0)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i+2,1+fi_1[i]);
ObjectSetFiboDescription(nameObj, i+2, "Fe "+fitxt100_1[i]+" "+DoubleToStr(fiboPrice*fi_1[i]+fiboPrice1, Digits)+fibo);
}
}
}
}
//--------------------------------------------------------
// Ôèáû ñòàíäàðòíûå. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû ñ ïàòòåðíàìè. Íà÷àëî.
//--------------------------------------------------------
void fibo_patterns(double fiboPrice,double fiboPrice1,string fibo)
{
double fi_1[]={0.0, 0.382, 0.447, 0.5, 0.618, 0.707, 0.786, 0.854, 0.886, 1.0, 1.128, 1.272, 1.414, phi, 2.0, 2.618, 4.0};
string fitxt100_1[]={"0.0", "38.2", "44.7", "50.0", "61.8", "70.7", "78.6", "85.4", "88.6", "100.0", "112.8", "127.2", "141.4", "161.8", "200.0", "261.8", "400.0"};
int i;
Sizefi_1=17;
if (!ExtFiboCorrectionExpansion)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100_1[i]+" "+DoubleToStr(fiboPrice*fi_1[i]+fiboPrice1, Digits)+fibo);
}
}
else
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1+2);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL,0);
ObjectSetFiboDescription(nameObj, 0, "Fe 1 "+DoubleToStr(fiboPrice+fiboPrice1, Digits)+fibo);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL,1);
ObjectSetFiboDescription(nameObj, 1, "Fe 0 "+DoubleToStr(fiboPrice1, Digits)+fibo);
for (i=0;i<Sizefi_1;i++)
{
if (fi_1[i]>0)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i+2,1+fi_1[i]);
ObjectSetFiboDescription(nameObj, i+2, "Fe "+fitxt100_1[i]+" "+DoubleToStr(fiboPrice*fi_1[i]+fiboPrice1, Digits)+fibo);
}
}
}
}
//--------------------------------------------------------
// Ôèáû ñ ïàòòåðíàìè. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû ïîëüçîâàòåëüñêèå. Íà÷àëî.
//--------------------------------------------------------
void fibo_custom(double fiboPrice,double fiboPrice1,string fibo)
{
int i;
if (!ExtFiboCorrectionExpansion)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
for (i=0;i<Sizefi;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
ObjectSetFiboDescription(nameObj, i, fitxt100[i]+" "+DoubleToStr(fiboPrice*fi[i]+fiboPrice1, Digits)+fibo);
}
}
else
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi+2);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL,0);
ObjectSetFiboDescription(nameObj, 0, "Fe 1 "+DoubleToStr(fiboPrice+fiboPrice1, Digits)+fibo);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL,1);
ObjectSetFiboDescription(nameObj, 1, "Fe 0 "+DoubleToStr(fiboPrice1, Digits)+fibo);
for (i=0;i<Sizefi;i++)
{
if (fi[i]>0)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i+2,1+fi[i]);
ObjectSetFiboDescription(nameObj, i+2, "Fe "+fitxt100[i]+" "+DoubleToStr(fiboPrice*fi[i]+fiboPrice1, Digits)+fibo);
}
}
}
}
//--------------------------------------------------------
// Ôèáû ïîëüçîâàòåëüñêèå. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ôèáî-äóã ñòàòè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboArcS()
{
double fibo_0, fibo_100, AutoScale;
fibo_0=afrx[mArcS[0]];fibo_100=afrx[mArcS[1]];
if (ExtArcStaticScale>0)
{
AutoScale=ExtArcStaticScale;
}
else
{
AutoScale=(MathAbs(fibo_0-fibo_100)/Point)/MathAbs(iBarShift(Symbol(),Period(),afr[mArcS[1]])-iBarShift(Symbol(),Period(),afr[mArcS[0]]));
}
nameObj="FiboArcS" + ExtComplekt+"_";
if (ExtSave)
{
nameObj=nameObj + save;
}
ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_FIBOARC,0,afr[mArcS[0]],fibo_0,afr[mArcS[1]],fibo_100);
fiboArc(AutoScale, ExtArcStaticColor);
}
//--------------------------------------------------------
// Âûâîä ôèáî-äóã ñòàòè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ôèáî-äóã äèíàìè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboArcD()
{
double fibo_0, fibo_100, AutoScale;
fibo_0=afrx[mArcD[0]];fibo_100=afrx[mArcD[1]];
if (ExtArcDinamicScale>0)
{
AutoScale=ExtArcDinamicScale;
}
else
{
AutoScale=(MathAbs(fibo_0-fibo_100)/Point)/MathAbs(iBarShift(Symbol(),Period(),afr[mArcD[1]])-iBarShift(Symbol(),Period(),afr[mArcD[0]]));
}
nameObj="FiboArcD" + ExtComplekt+"_";
ObjectDelete(nameObj);
ObjectCreate(nameObj, OBJ_FIBOARC,0,afr[mArcD[0]],fibo_0,afr[mArcD[1]],fibo_100);
fiboArc(AutoScale, ExtArcDinamicColor);
}
//--------------------------------------------------------
// Âûâîä ôèáî-äóã äèíàìè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû äëÿ ôèáî-äóã. Íà÷àëî.
//--------------------------------------------------------
void fiboArc(double AutoScale, color ArcColor)
{
ObjectSet(nameObj,OBJPROP_SCALE,AutoScale);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(nameObj,OBJPROP_ELLIPSE,true);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ArcColor);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtArcStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtArcWidth);
if (ExtFiboType==0)
{
fiboArc_st();
}
else if (ExtFiboType==1)
{
fiboArc_Pesavento();
}
else if (ExtFiboType==2)
{
fiboArc_custom();
}
}
//--------------------------------------------------------
// Ôèáû äëÿ ôèáî-äóã. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû äëÿ ñòàíäàðòíûõ ôèáî-äóã. Íà÷àëî.
//--------------------------------------------------------
void fiboArc_st()
{
double fi_1[]={0.0, 0.146, 0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, phi, 2.0, 2.618, 3.0, 4.236, 4.618};
string fitxt100_1[]={"0.0", "14.6", "23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "123.6", "161.8", "200.0", "261.8", "300.0", "423.6", "461.8"};
int i;
Sizefi_1=16;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj,i,fitxt100_1[i]);
}
}
//--------------------------------------------------------
// Ôèáû äëÿ ñòàíäàðòíûõ ôèáî-äóã. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû äëÿ ôèáî-äóã ñ ÷èñëàìè Ïåñàâåíòî. Íà÷àëî.
//--------------------------------------------------------
void fiboArc_Pesavento()
{
double fi_1[]={0.0, 0.146, 0.236, 0.382, 0.5, 0.618, 0.786, 0.886, 1.0, 1.272, phi, 2.0, 2.618, 3.0, 4.236, 4.618};
string fitxt100_1[]={"0.0", "14.6", "23.6", "38.2", "50.0", "61.8", "78.6", "88.6", "100.0", "127.2", "161.8", "200.0", "261.8", "300.0", "423.6", "461.8"};
int i;
Sizefi_1=16;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj,i,fitxt100_1[i]);
}
}
//--------------------------------------------------------
// Ôèáû äëÿ ôèáî-äóã ñ ÷èñëàìè Ïåñàâåíòî. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôèáû äëÿ ïîëüçîâàòåëüñêèõ ôèáî-äóã. Íà÷àëî.
//--------------------------------------------------------
void fiboArc_custom()
{
int i;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
for (i=0;i<Sizefi;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
ObjectSetFiboDescription(nameObj,i,fitxt100[i]);
}
}
//--------------------------------------------------------
// Ôèáû äëÿ ïîëüçîâàòåëüñêèõ ôèáî-äóã. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ôóíêöèè äëÿ ðèñîâàíèÿ çîëîòîé ñïèðàëè. Íà÷àëî.
//--------------------------------------------------------
void GoldenSpiral(datetime t2,double p2,datetime t4,double p4)
{
// In polar coordinates the basic spiral equation is:
// r = a * e ^ (Theta * cot Alpah)
// for golden spiral: cot Alpha = 2/pi * ln(phi)
double startAngle; // óãîë â ðàäèàíàõ(in radians)
startAngle=MathArctan(((p4-p2)/Point)/((iBarShift(NULL,0,t4,false)-iBarShift(NULL,0,t2,false))*Scale()));
//----
double cotAlpha = (1/(2 * goldenSpiralCycle *pi)) * MathLog(phi);
double r0 = (iBarShift(NULL,0,t4,false)-iBarShift(NULL,0,t2,false))/MathCos(startAngle);
double r1=1.0/MathExp(startAngle * cotAlpha);
double a = 0;
double x1 = 0;
double y1 = 0;
//----
for(int i = 0; i < NumberOfLines; i++)
{
double Theta =startAngle + a * pi / 4;
double r = r0*r1 * MathExp(Theta * cotAlpha);
//----
if (clockWiseSpiral == false){Theta = startAngle - a * pi / 4;}
//----
double x2 = r * MathCos(Theta);
double y2 = r * MathSin(Theta);
a += accurity;
//----
string label = "Spiral_"+"_"+ExtComplekt+"_"+i;
DrawLine(x1, y1, x2, y2,t2,p2,t4,p4,label);
//----
x1 = x2;
y1 = y2;
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void DrawLine(double x1, double y1, double x2, double y2,datetime t2,double p2,datetime t4,double p4, string label)
{
int Shift_1 = iBarShift(NULL, 0, t4, false);
int Shift_2 = iBarShift(NULL, 0, t2, false);
//----
int timeShift1 = Shift_2 + MathRound(x1);
int timeShift2 = Shift_2 + MathRound(x2);
//----
double price1 = p2 + NormalizeDouble(y1* Scale() * Point, Digits);
double price2 = p2 + NormalizeDouble(y2* Scale() * Point, Digits);
//----
if((x2 >= 0 && y2 >= 0) || (x2 <= 0 && y2 <= 0))
color lineColor = spiralColor1;
else
lineColor = spiralColor2;
ObjectDelete(label);
ObjectCreate(label, OBJ_TREND, 0, GetTime(timeShift1), price1, GetTime(timeShift2), price2, 0, 0);
ObjectSet(label, OBJPROP_RAY, 0);
ObjectSet(label, OBJPROP_COLOR, lineColor);
ObjectSet(label, OBJPROP_STYLE, ExtSpiralStyle);
ObjectSet(label, OBJPROP_WIDTH, ExtSpiralWidth);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
datetime GetTime(int timeShift)
{
if(timeShift >= 0)
return(Time[timeShift]);
datetime time = Time[0] - Period()*timeShift*60;
return(time);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Scale()
{
double priceRange = WindowPriceMax(0) - WindowPriceMin(0);
double barsCount = WindowBarsPerChart();
double chartScale = (priceRange / Point) / barsCount;
return(chartScale*GPixels/VPixels);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--------------------------------------------------------
// Ôóíêöèè äëÿ ðèñîâàíèÿ çîëîòîé ñïèðàëè. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ôèáî-âååðîâ ñòàòè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboFanS()
{
double fiboPrice1, fiboPrice2;
nameObj="fiboFanS" + ExtComplekt+"_";
ObjectDelete(nameObj);
if (ExtPitchforkCandle)
{
if (ExtPitchfork_1_HighLow)
{
fiboPrice1=mPitchCena[1];fiboPrice2=mPitchCena[2];
}
else
{
fiboPrice1=mPitchCena[1];fiboPrice2=mPitchCena[2];
}
ObjectCreate(nameObj,OBJ_FIBOFAN,0,mPitchTime[1],fiboPrice1,mPitchTime[2],fiboPrice2);
}
else
{
if (afrl[mPitch[1]]>0)
{
fiboPrice1=afrl[mPitch[1]];fiboPrice2=afrh[mPitch[2]];
}
else
{
fiboPrice1=afrh[mPitch[1]];fiboPrice2=afrl[mPitch[2]];
}
ObjectCreate(nameObj,OBJ_FIBOFAN,0,afr[mPitch[1]],fiboPrice1,afr[mPitch[2]],fiboPrice2);
}
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanS);
FiboFanLevel();
}
//--------------------------------------------------------
// Âûâîä ôèáî-âååðîâ ñòàòè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ôèáî-âååðîâ äèíàìè÷åñêèõ. Íà÷àëî.
//--------------------------------------------------------
void screenFiboFanD()
{
double fiboPrice1, fiboPrice2;
nameObj="fiboFanD" + ExtComplekt+"_";
ObjectDelete(nameObj);
fiboPrice1=afrx[1];fiboPrice2=afrx[0];
ObjectCreate(nameObj,OBJ_FIBOFAN,0,afr[1],fiboPrice1,afr[0],fiboPrice2);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboFanD);
FiboFanLevel();
}
//--------------------------------------------------------
// Âûâîä ôèáî-âååðîâ äèíàìè÷åñêèõ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Óðîâíè ôèáî-âååðîâ. Êîíåö.
//--------------------------------------------------------
void FiboFanLevel()
{
if(ExtFiboFanExp) ObjectSet(nameObj,OBJPROP_FIBOLEVELS,6); else ObjectSet(nameObj,OBJPROP_FIBOLEVELS,4);
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,STYLE_DASH);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+0,0.236);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+1,0.382);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+2,0.5);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+3,0.618);
if (ExtFiboFanHidden)
{
ObjectSetFiboDescription(nameObj, 0, "23.6");
ObjectSetFiboDescription(nameObj, 1, "38.2");
ObjectSetFiboDescription(nameObj, 2, "50.0");
ObjectSetFiboDescription(nameObj, 3, "61.8");
}
if(ExtFiboFanExp)
{
if (ExtFiboType==0)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,0.764);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,0.854);
if (ExtFiboFanHidden)
{
ObjectSetFiboDescription(nameObj, 4, "76.4");
ObjectSetFiboDescription(nameObj, 5, "85.4");
}
}
else
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+4,0.786);
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+5,0.886);
if (ExtFiboFanHidden)
{
ObjectSetFiboDescription(nameObj, 4, "78.6");
ObjectSetFiboDescription(nameObj, 5, "88.6");
}
}
}
}
//--------------------------------------------------------
// Óðîâíè ôèáî-âååðîâ. Íà÷àëî.
//--------------------------------------------------------
//--------------------------------------------------------
// Âûâîä ðàñøèðåíèé Ôèáîíà÷÷è. Íà÷àëî.
//--------------------------------------------------------
void FiboExpansion()
{
if (ExtFiboExpansion>1)
{
int i;
double znach1,znach2,fi_1[];
nameObj="fiboExpansion" + ExtComplekt+"_";
if (mExpansion[2]>0)
{
if (ExtSave)
{
nameObj=nameObj + save;
}
}
ObjectDelete(nameObj);
if (afrl[mExpansion[0]]>0)
{
ObjectCreate(nameObj,OBJ_EXPANSION,0,afr[mExpansion[0]],afrl[mExpansion[0]],afr[mExpansion[1]],afrh[mExpansion[1]],afr[mExpansion[2]],afrl[mExpansion[2]]);
znach1=afrh[mExpansion[1]]-afrl[mExpansion[0]];
znach2=afrl[mExpansion[2]];
}
else
{
ObjectCreate(nameObj,OBJ_EXPANSION,0,afr[mExpansion[0]],afrh[mExpansion[0]],afr[mExpansion[1]],afrl[mExpansion[1]],afr[mExpansion[2]],afrh[mExpansion[2]]);
znach1=-(afrh[mExpansion[0]]-afrl[mExpansion[1]]);
znach2=afrh[mExpansion[2]];
}
ObjectSet(nameObj,OBJPROP_COLOR,ExtObjectColor);
ObjectSet(nameObj,OBJPROP_STYLE,ExtObjectStyle);
ObjectSet(nameObj,OBJPROP_WIDTH,ExtObjectWidth);
ObjectSet(nameObj,OBJPROP_LEVELCOLOR,ExtFiboExpansionColor);
ObjectSet(nameObj,OBJPROP_LEVELSTYLE,ExtExpansionStyle);
ObjectSet(nameObj,OBJPROP_LEVELWIDTH,ExtExpansionWidth);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
if (ExtFiboType==0)
{
FiboExpansion_st(znach1, znach2);
}
else if (ExtFiboType==1)
{
FiboExpansion_Pesavento(znach1, znach2);
}
else if (ExtFiboType==2)
{
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi);
for (i=0;i<Sizefi;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi[i]);
ObjectSetFiboDescription(nameObj, i, "FE "+fitxt100[i]+" "+DoubleToStr(znach1*fi[i]+znach2, Digits)+"-"+Period_tf);
}
}
}
}
//--------------------------------------------------------
// Âûâîä ðàñøèðåíèé Ôèáîíà÷÷è. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Çíà÷åíèÿ ñòàíäàðòíûõ ôèá äëÿ ðàñøèðåíèé Ôèáîíà÷÷è. Íà÷àëî.
//--------------------------------------------------------
void FiboExpansion_st(double znach1, double znach2)
{
int i;
double fi_1[]={0.236, 0.382, 0.5, 0.618, 0.764, 0.854, 1.0, 1.236, phi, 2.0, 2.618};
string tf="-"+Period_tf, fitxt100_1[]={"23.6", "38.2", "50.0", "61.8", "76.4", "85.4", "100.0", "123.6", "161.8", "200.0", "261.8"};
Sizefi_1=11;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, "FE "+fitxt100_1[i]+" "+DoubleToStr(znach1*fi_1[i]+znach2, Digits)+tf);
}
}
//--------------------------------------------------------
// Çíà÷åíèÿ ñòàíäàðòíûõ ôèá äëÿ ðàñøèðåíèé Ôèáîíà÷÷è. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Çíà÷åíèÿ ôèá Ïåñàâåíòî äëÿ ðàñøèðåíèé Ôèáîíà÷÷è. Íà÷àëî.
//--------------------------------------------------------
void FiboExpansion_Pesavento(double znach1, double znach2)
{
int i;
double fi_1[]={0.382, 0.5, 0.618, 0.707, 0.786, 0.886, 1.0, 1.272, 1.414, phi, 2.0, 2.618, 3.0, 4.236, 4.618};
string tf="-"+Period_tf, fitxt100_1[]={"38.2", "50.0", "61.8", "70.7", "78.6", "88.6", "100.0", "127.2", "141.4", "161.8", "200.0", "261.8", "300.0", "423.6", "461.8"};
Sizefi_1=15;
ObjectSet(nameObj,OBJPROP_FIBOLEVELS,Sizefi_1);
for (i=0;i<Sizefi_1;i++)
{
ObjectSet(nameObj,OBJPROP_FIRSTLEVEL+i,fi_1[i]);
ObjectSetFiboDescription(nameObj, i, "FE "+fitxt100_1[i]+" "+DoubleToStr(znach1*fi_1[i]+znach2, Digits)+tf);
}
}
//--------------------------------------------------------
// Çíà÷åíèÿ ôèá Ïåñàâåíòî äëÿ ðàñøèðåíèé Ôèáîíà÷÷è. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Íà÷àëî.
// Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë.
//--------------------------------------------------------
void delete_objects1()
{
int i;
string txt;
for (i=ObjectsTotal(); i>=0; i--)
{
txt=ObjectName(i);
if (StringFind(txt,"_" + ExtComplekt + "pl")>-1) ObjectDelete (txt);
if (StringFind(txt,"_" + ExtComplekt + "ph")>-1) ObjectDelete (txt);
}
}
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Êîíåö.
// Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Íà÷àëî.
// Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë.
//--------------------------------------------------------
void delete_objects2(string txt1)
{
int i;
string txt;
for (i=ObjectsTotal(); i>=0; i--)
{
txt=ObjectName(i);
if (StringFind(txt,txt1)>-1)ObjectDelete (txt);
}
}
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Êîíåö.
// Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Íà÷àëî.
// Óäàëåíèå òðåóãîëüãèêîâ è ðàìêè äëÿ òî÷êè D ïàòòåðíà.
//--------------------------------------------------------
void delete_objects3()
{
int i;
string txt;
for (i=ObjectsTotal(); i>=0; i--)
{
txt=ObjectName(i);
if (StringFind(txt,"_"+ExtComplekt+"Triangle")>-1)ObjectDelete (txt);
if (RangeForPointD>0)
{
txt=ObjectName(i);
if (StringFind(txt,"_"+ExtComplekt+"PointD")>-1)ObjectDelete (txt);
}
ArrayInitialize(PeakCenaX,0);
ArrayInitialize(PeakCenaA,0);
ArrayInitialize(PeakCenaB,0);
ArrayInitialize(PeakCenaC,0);
ArrayInitialize(PeakCenaD,0);
ArrayInitialize(PeakTimeX,0);
ArrayInitialize(PeakTimeA,0);
ArrayInitialize(PeakTimeB,0);
ArrayInitialize(PeakTimeC,0);
ArrayInitialize(PeakTimeD,0);
}
if (RangeForPointD>0)
{
FlagForD=true;
}
}
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Êîíåö.
// Óäàëåíèå òðåóãîëüãèêîâ è ðàìêè äëÿ òî÷êè D ïàòòåðíà.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Íà÷àëî.
// Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë.
//--------------------------------------------------------
void delete_objects4()
{
int i;
string txt;
for (i=ObjectsTotal(); i>=0; i--)
{
txt=ObjectName(i);
if (StringFind(txt,"_" + ExtComplekt + "pg")>-1) ObjectDelete (txt);
}
}
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Êîíåö.
// Óäàëåíèå ñîåäèíèòåëüíûõ ëèíèé è ÷èñåë.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Íà÷àëî.
// Óäàëåíèå ñïèðàëè.
//--------------------------------------------------------
void delete_objects_spiral()
{
int i;
for(i=0;i<NumberOfLines;i++)
{
ObjectDelete("Spiral_"+"_"+ExtComplekt+"_"+i);
}
}
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Êîíåö.
// Óäàëåíèå ñïèðàëè.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Íà÷àëî.
// Óäàëåíèå íîìåðîâ ïåðåëîìîâ çèãçàãà.
//--------------------------------------------------------
void delete_objects_number()
{
int i;
string txt;
for (i=ObjectsTotal(); i>=0; i--)
{
txt=ObjectName(i);
if (StringFind(txt,"NumberPeak" + "_" + ExtComplekt + "_")>-1) ObjectDelete (txt);
}
}
//--------------------------------------------------------
// Óäàëåíèå îáúåêòîâ. Êîíåö.
// Óäàëåíèå íîìåðîâ ïåðåëîìîâ çèãçàãà.
//--------------------------------------------------------
//--------------------------------------------------------
// Óäàëåíèå äèíàìè÷åñêèõ îáúåêòîâ. Íà÷àëî.
//--------------------------------------------------------
void delete_objects_dinamic()
{
int i;
ObjectDelete("fiboD" + ExtComplekt+"_");
ObjectDelete("fiboFanD" + ExtComplekt+"_");
ObjectDelete("RLineD" + ExtComplekt+"_");
ObjectDelete("pitchforkD" + ExtComplekt+"_");
ObjectDelete("ISL_D" + ExtComplekt+"_");
ObjectDelete("pmedianaD" + ExtComplekt+"_");
ObjectDelete("1-2pmedianaD" + ExtComplekt+"_");
ObjectDelete("fiboExpansion" + ExtComplekt+"_");
ObjectDelete("PivotZoneD" + ExtComplekt+"_");
ObjectDelete("FanMedianaDinamic" + ExtComplekt+"_");
ObjectDelete("FiboArcD" + ExtComplekt+"_");
if (ExtPivotZZ1Num==1) ObjectDelete("LinePivotZZ" + "1" + ExtComplekt+"_");
if (ExtPivotZZ2Num==1) ObjectDelete("LinePivotZZ" + "2" + ExtComplekt+"_");
for (i=0; i<7; i++)
{
nameObj="VLD"+i+" " + ExtComplekt+"_";
ObjectDelete(nameObj);
}
}
//--------------------------------------------------------
// Óäàëåíèå äèíàìè÷åñêèõ îáúåêòîâ. Êîíåö.
//--------------------------------------------------------
//----------------------------------------------------
// ZigZag (èç ÌÒ4 íåìíîãî èçìåíåííûé). Íà÷àëî.
//----------------------------------------------------
void ZigZag_()
{
// ZigZag èç ÌÒ. Íà÷àëî.
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
int vDepth = 0;
int Depth;
bool endCyklDirection=true;
if (ExtIndicator==11)
{
bool endCykl=false;
Depth = minDepth;
// countGartley = 0; // Ñ÷åò÷èê ïàòòåðíîâ
countColor = 0;
if (flagExtGartleyTypeSearch2==false) {delete_objects3(); countGartley = 0; vPatOnOff = 0;}
if (ExtGartleyTypeSearch>0 && ExtHiddenPP==2 && flagExtGartleyTypeSearch2==false) delete_objects4();
}
else
{
Depth = minBars;
minDepth = minBars;
maxDepth = minBars;
}
if (DirectionOfSearchMaxMin) vDepth = maxDepth; else vDepth = minDepth;
while (endCyklDirection)
{
if (ExtIndicator==11)
{
// for (shift=Bars-1;shift>=0; shift--) // îáíóëÿåì èíäèêàòîðíûå áóôåðû
{
// zz[shift]=0; zzL[shift]=0; zzH[shift]=0;
if (ExtLabel>0)
{
ArrayInitialize(la,0.0);
ArrayInitialize(ha,0.0);
}
ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0);
}
if (DirectionOfSearchMaxMin)
{
if (vDepth < minDepth)
{
if (ExtGartleyTypeSearch>0 && ExtIndicator==11) vDepth=minBarsToNumberPattern;
else vDepth=minBars;
endCykl=true;
}
}
else
{
if (vDepth > maxDepth)
{
if (ExtGartleyTypeSearch>0 && ExtIndicator==11) vDepth=minBarsToNumberPattern;
else vDepth=minBars;
endCykl=true;
}
}
Depth = vDepth;
if (DirectionOfSearchMaxMin)
{
vDepth--;
}
else
{
vDepth++;
}
if (flagExtGartleyTypeSearch2 && ExtGartleyTypeSearch==2 && vPatOnOff==1) {endCykl=true; Depth=minBarsToNumberPattern;}
}
else
{
endCyklDirection=false;
}
minBarsX=Depth;
// ïåðâûé áîëüøîé öèêë
for(shift=Bars-Depth; shift>=0; shift--)
{
val=Low[iLowest(NULL,0,MODE_LOW,Depth,shift)];
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=zzL[shift+back];
if((res!=0)&&(res>val)) zzL[shift+back]=0.0;
}
}
}
if (Low[shift]==val)
{
zzL[shift]=val;
if (ExtLabel>0) la[shift]=val;
}
val=High[iHighest(NULL,0,MODE_HIGH,Depth,shift)];
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=zzH[shift+back];
if((res!=0)&&(res<val)) zzH[shift+back]=0.0;
}
}
}
if (High[shift]==val)
{
zzH[shift]=val;
if (ExtLabel>0) ha[shift]=val;
}
}
// âòîðîé áîëüøîé öèêë
lasthigh=-1; lasthighpos=-1;
lastlow=-1; lastlowpos=-1;
for(shift=Bars-Depth; shift>=0; shift--)
{
curlow=zzL[shift];
curhigh=zzH[shift];
if((curlow==0)&&(curhigh==0)) continue;
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) zzH[lasthighpos]=0;
else zzH[shift]=0;
}
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=-1;
}
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) zzL[lastlowpos]=0;
else zzL[shift]=0;
}
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
}
lasthigh=-1;
}
}
// òðåòèé áîëüøîé öèêë
for(shift=Bars-1; shift>=0; shift--)
{
zz[shift]=zzL[shift];
if(shift>=Bars-Depth) {zzH[shift]=0.0; zzL[shift]=0.0; zz[shift]=0.0;}
else
{
res=zzH[shift];
if(res!=0.0)
{
zz[shift]=res;
}
}
}
NoGorb(Depth); // óäàëÿåì ãîðáû çèãçàãà
if (ExtIndicator!=11 && ExtLabel>0) // ðàññòàâëÿåì ìåòêè íà áàðàõ, ãäå ïîÿâèëñÿ íîâûé ëó÷ è íà ïåðåëîìàõ çèãçàãà
{
Metka();
}
// ïîèñê ïàòòåðíîâ
if (ExtIndicator==11)
{
if (endCykl)
{
if (ExtLabel>0) // ðàññòàâëÿåì ìåòêè íà áàðàõ, ãäå ïîÿâèëñÿ íîâûé ëó÷ è íà ïåðåëîìàõ çèãçàãà
{
Metka();
}
return(0);
}
strDepth = Depth;
_Gartley("ExtIndic-r11_" + Depth+"/"+ExtDeviation+"/"+ExtBackstep, Depth);
if (ExtGartleyTypeSearch==0 && vPatOnOff==1)
{
if (ExtLabel>0) // ðàññòàâëÿåì ìåòêè íà áàðàõ, ãäå ïîÿâèëñÿ íîâûé ëó÷ è íà ïåðåëîìàõ çèãçàãà
{
Metka();
}
return(0);
}
} // ïîèñê ïàòòåðíîâ êîíåö
}
}
//--------------------------------------------------------
// ZigZag èç ÌÒ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Èñïðàâëåíèå âîçíèêàþùèõ ãîðáîâ çèãçàãà. Íà÷àëî.
//--------------------------------------------------------
void NoGorb(int Depth)
{
double vel1, vel2, vel3, vel4;
int bar1, bar2, bar3, bar4;
int count;
for(int bar=Bars-Depth; bar>=0; bar--)
{
if (zz[bar]!=0)
{
count++;
vel4=vel3;bar4=bar3;
vel3=vel2;bar3=bar2;
vel2=vel1;bar2=bar1;
vel1=zz[bar];bar1=bar;
if (count<3) continue;
if ((vel3<vel2)&&(vel2<vel1)) {zz[bar2]=0;zzL[bar2]=0;zzH[bar2]=0;bar=bar3+1;}
if ((vel3>vel2)&&(vel2>vel1)) {zz[bar2]=0;zzL[bar2]=0;zzH[bar2]=0;bar=bar3+1;}
if ((vel2==vel1)&&(vel1!=0 )) {zz[bar1]=0;zzL[bar1]=0;zzH[bar1]=0;bar=bar3+1;}
}
}
}
//--------------------------------------------------------
// Èñïðàâëåíèå âîçíèêàþùèõ ãîðáîâ çèãçàãà. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ðàññòàíîâêà ìåòîê. Íà÷àëî.
//--------------------------------------------------------
void Metka()
{
int metka=0; // =0 - äî ïåðâîãî ïåðåëîìà ZZ. =1 - èùåì ìåòêè ìàêñèìóìîâ. =2 - èùåì ìåòêè ìèíèìóìîâ.
for(shift=Bars-1; shift>=0; shift--)
{
if (zz[shift]>0)
{
if (zzH[shift]>0)
{
// metka=2; shift--;
metka=2; la[shift]=0; shift--;
}
else
{
// metka=1; shift--;
metka=1; ha[shift]=0; shift--;
}
}
if (metka==0)
{
ha[shift]=0; la[shift]=0;
}
else if (metka==1)
{
if (ha[shift]>0) metka=0;
la[shift]=0;
}
else if (metka==2)
{
if (la[shift]>0) metka=0;
ha[shift]=0;
}
}
}
//--------------------------------------------------------
// Ðàññòàíîâêà ìåòîê. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ïîèñê ïàòòåðíîâ Gartley. Íà÷àëî.
//--------------------------------------------------------
void _Gartley(string _Depth, int Depth)
{
int j, k, m;
double min_DeltaGartley = (1 - ExtDeltaGartley);
double max_DeltaGartley = (1 + ExtDeltaGartley);
double vl0382 = min_DeltaGartley * 0.382;
double vl05 = min_DeltaGartley * 0.5;
double vh05 = max_DeltaGartley * 0.5;
double vl0577 = min_DeltaGartley * 0.577;
double vl0618 = min_DeltaGartley * 0.618;
double vh0618 = max_DeltaGartley * 0.618;
double vl0707 = min_DeltaGartley * 0.707;
double vl0786 = min_DeltaGartley * 0.786;
double vh0786 = max_DeltaGartley * 0.786;
double vl0886 = min_DeltaGartley * 0.886;
double vh0886 = max_DeltaGartley * 0.886;
double vl1128 = min_DeltaGartley * 1.128;
double vl1272 = min_DeltaGartley * 1.272;
double vl1618 = min_DeltaGartley * phi;
double vh1618 = max_DeltaGartley * phi;
double vh1732 = max_DeltaGartley * 1.732;
double vl2236 = min_DeltaGartley * 2.236;
double vh2236 = max_DeltaGartley * 2.236;
double vh2618 = max_DeltaGartley * 2.618;
double vh3618 = max_DeltaGartley * 3.618;
int aXABCD[6]; // íîìåðà áàðîâ ñ òî÷êàìè XABCD ïàòòåðíîâ
double retXD;
double retXB;
double retBD;
double retAC;
double XA, BC;
double vDelta0 = 0.000001;
int vNull = 0;
int X=1,A=2,B=3,C=4,D=5;
string nameObj1, nameObj2;
string vBull = "BULLISH";
string vBear = "BEARISH";
string vGartley = "GARTLEY";
string vBat = "BAT";
string vButterfly = "BUTTERFLY";
// string vCrab = "CRAB";
string vclGartley = "CLASSIC GARTLEY";
string vclBat = "CLASSIC BAT";
string vclButterfly = "CLASSIC BUTTERFLY";
string vclCrab = "CLASSIC CRAB";
string v5sub0 = "5-0 PATTERN";
string vAB_CD = "AB=CD";
int aNumBarPeak[];
color colorPattern;
if (ExtIndicator!=11) delete_objects3();
if ((ExtGartleyTypeSearch==0 && ExtIndicator==11) || ExtIndicator!=11) vPatOnOff = 0;
vBullBear = "";
vNamePattern = "";
vNamePatternToNumberPattern = "";
maxPeak = 0;
for(shift=Bars-1; shift>=0; shift--)
{
if (zz[shift]>0) maxPeak++;
}
ArrayResize(aNumBarPeak, maxPeak);
shift = 0;
j = 0;
while ((shift < Bars) && (j < maxPeak))
{
if (zz[shift] != 0)
{
aNumBarPeak[j] = shift;
j++;
}
shift++;
}
if (j<maxPeak) aNumBarPeak[j]=-1; else aNumBarPeak[maxPeak]=-1;
aXABCD[D] = aNumBarPeak[0];
k = 0;
while ((k < j) && (k < maxPeak) && (aNumBarPeak[k] > -1) && (aXABCD[D] < maxBarToD+2))
{
aXABCD[X] = aNumBarPeak[k + 4];
aXABCD[A] = aNumBarPeak[k + 3];
aXABCD[B] = aNumBarPeak[k + 2];
aXABCD[C] = aNumBarPeak[k + 1];
aXABCD[D] = aNumBarPeak[k];
strD = aXABCD[D];
if ((zz[aXABCD[A]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[X]]) && (zz[aXABCD[X]] > zz[aXABCD[D]]) && ((zz[aXABCD[C]] - zzL[aXABCD[D]]) >= (zz[aXABCD[A]] - zz[aXABCD[B]]) * ExtCD))
{
vBullBear = vBull;
}
else if ((zz[aXABCD[A]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[D]]) && (zz[aXABCD[D]] > zz[aXABCD[X]]) && ((zz[aXABCD[C]] - zz[aXABCD[D]]) >= (zz[aXABCD[A]] - zz[aXABCD[B]]) * ExtCD))
{
vBullBear = vBull;
}
else if ((zz[aXABCD[X]] > zz[aXABCD[D]]) && (zz[aXABCD[D]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[A]]) && ((zz[aXABCD[D]] - zz[aXABCD[C]]) >= (zz[aXABCD[B]] - zz[aXABCD[A]]) * ExtCD))
{
vBullBear = vBear;
}
else if ((zz[aXABCD[D]] > zz[aXABCD[X]]) && (zz[aXABCD[X]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[A]]) && ((zz[aXABCD[D]] - zz[aXABCD[C]]) >= (zz[aXABCD[B]] - zz[aXABCD[A]]) * ExtCD))
{
vBullBear = vBear;
}
else if ((zz[aXABCD[C]] > zz[aXABCD[A]]) && (zz[aXABCD[A]] > zz[aXABCD[X]]) && (zz[aXABCD[D]] > zz[aXABCD[B]]) && (zz[aXABCD[C]] > zz[aXABCD[B]]))
{
vBullBear = vBull;
}
else if ((zz[aXABCD[A]] > zz[aXABCD[C]]) && (zz[aXABCD[X]] > zz[aXABCD[A]]) && (zz[aXABCD[B]] > zz[aXABCD[D]]) && (zz[aXABCD[B]] > zz[aXABCD[C]]))
{
vBullBear = vBear;
}
else if ((zz[aXABCD[A]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[D]]) && ((zz[aXABCD[C]] - zz[aXABCD[D]]) >= (zz[aXABCD[A]] - zz[aXABCD[B]]) * ExtCD))
{
vBullBear = vBull;
}
else if ((zz[aXABCD[D]] > zz[aXABCD[B]]) && (zz[aXABCD[B]] > zz[aXABCD[C]]) && (zz[aXABCD[C]] > zz[aXABCD[A]]) && ((zz[aXABCD[D]] - zz[aXABCD[C]]) >= (zz[aXABCD[B]] - zz[aXABCD[A]]) * ExtCD))
{
vBullBear = vBear;
}
if (vBullBear!="")
{
if (vBullBear == vBull)
{
retXB = (zz[aXABCD[A]] - zz[aXABCD[B]]) / (zz[aXABCD[A]] - zz[aXABCD[X]] + vDelta0);
retXD = (zz[aXABCD[A]] - zz[aXABCD[D]]) / (zz[aXABCD[A]] - zz[aXABCD[X]] + vDelta0);
retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD[B]] + vDelta0);
retAC = (zz[aXABCD[C]] - zz[aXABCD[B]]) / (zz[aXABCD[A]] - zz[aXABCD[B]] + vDelta0);
if (RangeForPointD>0 && FlagForD)
{
XA=zz[aXABCD[A]] - zz[aXABCD[X]];
BC=zz[aXABCD[C]] - zz[aXABCD[B]];
}
}
else if (vBullBear == vBear)
{
retXB = (zz[aXABCD[B]] - zz[aXABCD[A]]) / (zz[aXABCD[X]] - zz[aXABCD[A]] + vDelta0);
retXD = (zz[aXABCD[D]] - zz[aXABCD[A]]) / (zz[aXABCD[X]] - zz[aXABCD[A]] + vDelta0);
retBD = (zz[aXABCD[D]] - zz[aXABCD[C]]) / (zz[aXABCD[B]] - zz[aXABCD[C]] + vDelta0);
retAC = (zz[aXABCD[B]] - zz[aXABCD[C]]) / (zz[aXABCD[B]] - zz[aXABCD[A]] + vDelta0);
if (RangeForPointD>0 && FlagForD)
{
XA=zz[aXABCD[X]] - zz[aXABCD[A]];
BC=zz[aXABCD[B]] - zz[aXABCD[C]];
}
}
if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl0707) && (retXD <= vh0786) && (retBD >= vl1272) && (retBD <= vh1618) && (retXB >= vl0577) && (retXB <= vh0618))
{
vNamePattern=vclGartley; // Classic Gartley
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh0786,zz[aXABCD[C]]-BC*vh2236);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl0618,zz[aXABCD[C]]-BC*vl1128);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl0618,zz[aXABCD[C]]+BC*vl1128);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh0786,zz[aXABCD[C]]+BC*vh2236);
}
}
}
else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl1272) && (retXD <= vh1618) && (retBD >= vl1618) && (retBD <= vh2618) && (retXB >= vl0707) && (retXB <= vh0886))
{
vNamePattern=vclButterfly; // Classic Butterfly
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh1618,zz[aXABCD[C]]-BC*vh2618);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl1272,zz[aXABCD[C]]-BC*vl1272);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl1272,zz[aXABCD[C]]+BC*vl1272);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh1618,zz[aXABCD[C]]+BC*vh2618);
}
}
}
else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl0886) && (retXD <= vh0886) && (retBD >= vl1618) && (retBD <= vh2618) && (retXB >= vl0382) && (retXB <= vh05))
{
vNamePattern=vclBat; // Classic Bat
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh0886,zz[aXABCD[C]]-BC*vh2618);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl0886,zz[aXABCD[C]]-BC*vl1272);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl0886,zz[aXABCD[C]]+BC*vl1272);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh0886,zz[aXABCD[C]]+BC*vh2618);
}
}
}
else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl0618) && (retXD <= vh0786) && (retBD >= vl1128) && (retBD <= vh2236) && (retXB >= vl0382) && (retXB <= vh0618))
{
vNamePattern=vGartley; // Gartley
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh0786,zz[aXABCD[C]]-BC*vh2236);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl0618,zz[aXABCD[C]]-BC*vl1128);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl0618,zz[aXABCD[C]]+BC*vl1128);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh0786,zz[aXABCD[C]]+BC*vh2236);
}
}
}
else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl1272) && (retXD <= vh1618) && (retBD >= vl1272) && (retBD <= vh2618) && (retXB >= vl0618) && (retXB <= vh0886))
{
vNamePattern=vButterfly; // Butterfly
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh1618,zz[aXABCD[C]]-BC*vh2618);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl1272,zz[aXABCD[C]]-BC*vl1272);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl1272,zz[aXABCD[C]]+BC*vl1272);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh1618,zz[aXABCD[C]]+BC*vh2618);
}
}
}
else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl1618) && (retXD <= vh1618) && (retBD >= vl2236) && (retBD <= vh3618) && (retXB >= vl0382) && (retXB <= vh0618))
{
vNamePattern=vclCrab; // Classic Crab
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh1618,zz[aXABCD[C]]-BC*vh3618);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl1618,zz[aXABCD[C]]-BC*vl2236);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl1618,zz[aXABCD[C]]+BC*vl2236);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh1618,zz[aXABCD[C]]+BC*vh3618);
}
}
}
else if ((retAC >= vl0382) && (retAC <= vh0886) && (retXD >= vl0886) && (retXD <= vh0886) && (retBD >= vl1272) && (retBD <= vh2618) && (retXB >= vl0382) && (retXB <= vh0618))
{
vNamePattern=vBat; // Bat
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = MathMax(zz[aXABCD[A]]-XA*vh0886,zz[aXABCD[C]]-BC*vh2618);
LevelForDmax = MathMin(zz[aXABCD[A]]-XA*vl0886,zz[aXABCD[C]]-BC*vl1272);
}
else if (vBullBear == vBear)
{
LevelForDmin = MathMax(zz[aXABCD[A]]+XA*vl0886,zz[aXABCD[C]]+BC*vl1272);
LevelForDmax = MathMin(zz[aXABCD[A]]+XA*vh0886,zz[aXABCD[C]]+BC*vh2618);
}
}
}
else if ((retAC >= vl1618) && (retAC <= vh2236) && (retBD >= vl05) && (retBD <= vh05) && (retXB >= vl1128) && (retXB <= vh1618))
{
vNamePattern=v5sub0; // 5-0
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = zz[aXABCD[C]]-BC*vh0618;
LevelForDmax = zz[aXABCD[C]]-BC*vl0382;
}
else if (vBullBear == vBear)
{
LevelForDmin = zz[aXABCD[C]]+BC*vl0382;
LevelForDmax = zz[aXABCD[C]]+BC*vh0618;
}
}
}
else if ((retAC >= vl0618) && (retAC <= vh0786) && (retBD >= vl1272) && (retBD <= vh1618))
{
vNamePattern=vAB_CD; // AB=CD
if (RangeForPointD>0 && FlagForD)
{
if (vBullBear == vBull)
{
LevelForDmin = zz[aXABCD[C]]-BC*vh1732;
LevelForDmax = zz[aXABCD[C]]-BC*vl1128;
}
else if (vBullBear == vBear)
{
LevelForDmin = zz[aXABCD[C]]+BC*vl1128;
LevelForDmax = zz[aXABCD[C]]+BC*vh1732;
}
}
}
}
if ((vNamePattern != "") && (aXABCD[D] < maxBarToD+2))
{
if (ExtGartleyTypeSearch>0 && ExtIndicator==11)
{
for (m=0;m<=countGartley;m++)
{
if (PeakCenaX[m]==zz[aXABCD[X]] && PeakCenaA[m]==zz[aXABCD[A]] && PeakCenaB[m]==zz[aXABCD[B]] && PeakCenaC[m]==zz[aXABCD[C]] && PeakCenaD[m]==zz[aXABCD[D]])
{
if (PeakTimeX[m]==Time[aXABCD[X]] && PeakTimeA[m]==Time[aXABCD[A]] && PeakTimeB[m]==Time[aXABCD[B]] && PeakTimeC[m]==Time[aXABCD[C]] && PeakTimeD[m]==Time[aXABCD[D]]) {k++; break;}
}
}
if (m<=countGartley)
{
vBullBear = "";
vNamePattern = "";
continue;
}
if (ArraySize(PeakCenaX)<countGartley+1)
{
ArrayResize(PeakCenaX,countGartley+1);
ArrayResize(PeakCenaA,countGartley+1);
ArrayResize(PeakCenaB,countGartley+1);
ArrayResize(PeakCenaC,countGartley+1);
ArrayResize(PeakCenaD,countGartley+1);
ArrayResize(PeakTimeX,countGartley+1);
ArrayResize(PeakTimeA,countGartley+1);
ArrayResize(PeakTimeB,countGartley+1);
ArrayResize(PeakTimeC,countGartley+1);
ArrayResize(PeakTimeD,countGartley+1);
}
PeakCenaX[countGartley]=zz[aXABCD[X]];
PeakCenaA[countGartley]=zz[aXABCD[A]];
PeakCenaB[countGartley]=zz[aXABCD[B]];
PeakCenaC[countGartley]=zz[aXABCD[C]];
PeakCenaD[countGartley]=zz[aXABCD[D]];
PeakTimeX[countGartley]=Time[aXABCD[X]];
PeakTimeA[countGartley]=Time[aXABCD[A]];
PeakTimeB[countGartley]=Time[aXABCD[B]];
PeakTimeC[countGartley]=Time[aXABCD[C]];
PeakTimeD[countGartley]=Time[aXABCD[D]];
if (NumberPattern-1==countGartley)
{
minBarsToNumberPattern=Depth;
LevelForDminToNumberPattern=LevelForDmin;
LevelForDmaxToNumberPattern=LevelForDmax;
vBullBearToNumberPattern = vBullBear;
vNamePatternToNumberPattern = vNamePattern;
}
if (countColor==ColorSize) countColor=0; // "ïåðåçàðÿæàåì" ñ÷åò÷èê öâåòîâ
colorPattern=ColorList[countColor];
countColor++;
countGartley++;
}
else
{
colorPattern=ExtColorPatterns;
LevelForDminToNumberPattern=LevelForDmin;
LevelForDmaxToNumberPattern=LevelForDmax;
vBullBearToNumberPattern = vBullBear;
vNamePatternToNumberPattern = vNamePattern;
}
nameObj1="_"+ExtComplekt+"Triangle1_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern;
// ObjectDelete(nameObj1);
nameObj2="_"+ExtComplekt+"Triangle2_" + countGartley + "_" + _Depth + "_" + aXABCD[D] + "_" +vBullBear + " " + vNamePattern;
// ObjectDelete(nameObj2);
vPatOnOff = 1;
if (vBullBear == vBull)
{
if (vNamePattern != vAB_CD)
{
ObjectCreate(nameObj1,OBJ_TRIANGLE,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[A]],zz[aXABCD[A]]);
ObjectSet(nameObj1,OBJPROP_COLOR,colorPattern);
}
ObjectCreate(nameObj2,OBJ_TRIANGLE,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]],Time[aXABCD[C]],zz[aXABCD[C]]);
ObjectSet(nameObj2,OBJPROP_COLOR,colorPattern);
}
else
{
if (vNamePattern != vAB_CD)
{
ObjectCreate(nameObj1,OBJ_TRIANGLE,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[A]],zz[aXABCD[A]]);
ObjectSet(nameObj1,OBJPROP_COLOR,colorPattern);
}
ObjectCreate(nameObj2,OBJ_TRIANGLE,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]],Time[aXABCD[C]],zz[aXABCD[C]]);
ObjectSet(nameObj2,OBJPROP_COLOR,colorPattern);
}
if (RangeForPointD>0) // && vNamePattern != v5sub0 && vNamePattern != vAB_CD) // Âûâîä ïðÿìîóãîëüíèêà äëÿ çîíû òî÷êè D
{
if (FlagForD)
{
// FlagForD=false;
for (j=aXABCD[D];j<aXABCD[C]-1;j++)
{
if (vBullBear == vBull)
{
if (LevelForDmax>=Low[j]) TimeForDmax = Time[j];
}
else if (vBullBear == vBear)
{
if (LevelForDmin<=High[j]) TimeForDmin = Time[j];
}
}
if (vBullBear == vBull)
{
TimeForDmin = TimeForDmax+((LevelForDmax-LevelForDmin)/((zz[aXABCD[C]]-zz[aXABCD[D]])/(aXABCD[C]-aXABCD[D]+1)))*Period()*60;
}
else if (vBullBear == vBear)
{
TimeForDmax = TimeForDmin+((LevelForDmax-LevelForDmin)/((zz[aXABCD[D]]-zz[aXABCD[C]])/(aXABCD[C]-aXABCD[D]+1)))*Period()*60;
}
/*
//?? if ((NumberPattern-1==countGartley-1 && ExtGartleyTypeSearch>0) || ExtGartleyTypeSearch==0)
{
TimeForDmaxToNumberPattern = TimeForDmax;
TimeForDminToNumberPattern = TimeForDmin;
}
*/
nameObj="_"+ExtComplekt+"PointD_" + countGartley + "";
// ObjectDelete(nameObj);
ObjectCreate(nameObj,OBJ_RECTANGLE,0,TimeForDmin,LevelForDmin,TimeForDmax,LevelForDmax);
ObjectSet(nameObj, OBJPROP_BACK, false);
ObjectSet(nameObj, OBJPROP_COLOR, ExtColorRangeForPointD);
if (ExtGartleyTypeSearch>0 && ExtIndicator==11 && ExtHiddenPP==2)
{
k1=MathCeil((aXABCD[X]+aXABCD[B])/2);
nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[B]] + "_" + Time[aXABCD[X]];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[B]]+zz[aXABCD[X]])/2);
ObjectSetText(nameObj,DoubleToStr(retXB,3),ExtSizeTxt,"Arial", ExtNotFibo);
nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[B]] + "_" + Time[aXABCD[X]];
ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[B]],zz[aXABCD[B]]);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
k1=MathCeil((aXABCD[X]+aXABCD[D])/2);
nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[D]] + "_" + Time[aXABCD[X]];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[D]]+zz[aXABCD[X]])/2);
ObjectSetText(nameObj,DoubleToStr(retXD,3),ExtSizeTxt,"Arial", ExtNotFibo);
nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[D]] + "_" + Time[aXABCD[X]];
ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[X]],zz[aXABCD[X]],Time[aXABCD[D]],zz[aXABCD[D]]);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
k1=MathCeil((aXABCD[B]+aXABCD[D])/2);
nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[D]] + "_" + Time[aXABCD[B]];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[D]]+zz[aXABCD[B]])/2);
ObjectSetText(nameObj,DoubleToStr(retBD,3),ExtSizeTxt,"Arial", ExtNotFibo);
nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[D]] + "_" + Time[aXABCD[B]];
ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[B]],zz[aXABCD[B]],Time[aXABCD[D]],zz[aXABCD[D]]);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
k1=MathCeil((aXABCD[A]+aXABCD[C])/2);
nameObj="_" + ExtComplekt + "pgtxt" + Time[aXABCD[C]] + "_" + Time[aXABCD[A]];
ObjectCreate(nameObj,OBJ_TEXT,0,Time[k1],(zz[aXABCD[C]]+zz[aXABCD[A]])/2);
ObjectSetText(nameObj,DoubleToStr(retAC,3),ExtSizeTxt,"Arial", ExtNotFibo);
nameObj="_" + ExtComplekt + "pg" + Time[aXABCD[C]] + "_" + Time[aXABCD[A]];
ObjectCreate(nameObj,OBJ_TREND,0,Time[aXABCD[A]],zz[aXABCD[A]],Time[aXABCD[C]],zz[aXABCD[C]]);
ObjectSet(nameObj,OBJPROP_RAY,false);
ObjectSet(nameObj,OBJPROP_STYLE,STYLE_DOT);
ObjectSet(nameObj,OBJPROP_COLOR,ExtLine);
ObjectSet(nameObj,OBJPROP_BACK,ExtBack);
}
}
}
// vBullBear = "";
// vNamePattern = "";
return(0);
}
else
{
vBullBear = "";
vNamePattern = "";
}
k++;
}
}
//--------------------------------------------------------
// Ïîèñê ïàòòåðíîâ Gartley. Êîíåö.
//--------------------------------------------------------
//----------------------------------------------------
// ZigZag Àëåêñà íåìíîãî èçìåíåííûé. Íà÷àëî.
//----------------------------------------------------
void ang_AZZ_()
{
int i,n;
// cbi=Bars-IndicatorCounted()-1;
//---------------------------------
for (i=cbi; i>=0; i--)
{
//-------------------------------------------------
// çàïîìèíàåì çíà÷åíèå íàïðàâëåíèÿ òðåíäà fs è ñðåäíåé öåíû si íà ïðåäûäóùåì áàðå
if (ti<Time[i]) {fsp=fs; sip=si;} ti=Time[i];
// Âû÷èñëÿåì çíà÷åíèå öåíîâîãî ôèëüòðà îò ïðîöåíòà îòêëîíåíèÿ
if (minSize==0 && minPercent!=0) di=minPercent*Close[i]/2/100;
//-------------------------------------------------
// Êîððåêòèðîâêà ñðåäíåé öåíû
if (High[i]>si+di && Low[i]<si-di) // Âíåøíèé áàð ïî îòíîøåíèþ ê öåíîâîìó ôèëüòðó di
{
// if (High[i]-si>si-Low[i]) si=High[i]-di; // Îòêëîíåíèå õàÿ îò ñðåäíåé öåíû áîëüøå îòêëîíåíèÿ ëîâà
// else if (High[i]-si<si-Low[i]) si=Low[i]+di; // ñîîòâåòñòâåííî, ìåíüøå
if (fs==1) si=High[i]-di; //
if (fs==2) si=Low[i]+di; //
}
else // Íå âíåøíèé áàð
{
if (fs==1)
{
if (High[i]>=si+di) si=High[i]-di; //
else if (Low[i]<si-di) si=Low[i]+di; //
}
if (fs==2)
{
if (Low[i]<=si-di) si=Low[i]+di; //
else if (High[i]>si+di) si=High[i]-di; //
}
}
// Âû÷èñëåíèå íà÷àëüíîãî çíà÷åíèÿ ñðåäíåé öåíû
if (i>Bars-2) {si=(High[i]+Low[i])/2;}
// Îïðåäåëÿåì íàïðàâëåíèå òðåíäà äëÿ ðàñ÷åòíîãî áàðà
if (si>sip) fs=1; // Òðåíä âîñõîäÿùèé
if (si<sip) fs=2; // Òðåíä íèñõîäÿùèé
//-------------------------------------------------
if (fs==1 && fsp==2) // Òðåäí ñìåíèëñÿ ñ íèñõîäÿùåãî íà âîñõîäÿùèé
{
hm=High[i];
bi=iBarShift(Symbol(),Period(),tbi);
zz[bi]=Low[bi];
zzL[bi]=Low[bi];
tai=Time[i];
fsp=fs;
si=High[i]-di;
sip=si;
if (ExtLabel>0)
{
ha[i]=High[i]; la[bi]=Low[bi]; la[i]=0;
tmh=Time[i]; ha[i]=High[i]; la[i]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å
}
}
if (fs==2 && fsp==1) // Òðåäí ñìåíèëñÿ ñ âîñõîäÿùåãî íà íèñõîäÿùèé
{
lm=Low[i];
ai=iBarShift(Symbol(),Period(),tai);
zz[ai]=High[ai];
zzH[ai]=High[ai];
tbi=Time[i];
si=Low[i]+di;
fsp=fs;
sip=si;
if (ExtLabel>0)
{
ha[ai]=High[ai]; ha[i]=0; la[i]=Low[i];
tml=Time[i]; ha[i]=0; la[i]=Low[i]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å
}
}
// Ïðîäîëæåíèå tðåíäà. Îòñëåæèâàíèå òðåíäà.
if (fs==1 && High[i]>hm)
{hm=High[i]; tai=Time[i]; si=High[i]-di;}
if (fs==2 && Low[i]<lm)
{lm=Low[i]; tbi=Time[i]; si=Low[i]+di;}
// Çàïîëíÿåì áóôåðû äëÿ óðîâíåé ïîäòâåðæäåíèÿ
if (chHL && chHL_PeakDet_or_vts && ExtLabel==0) {ha[i]=si+di; la[i]=si-di;}
//===================================================================================================
// Íóëåâîé áàð. Ðàñ÷åò ïåðâîãî ëó÷à ZigZag-a
if (i==0)
{
ai0=iBarShift(Symbol(),Period(),tai);
bi0=iBarShift(Symbol(),Period(),tbi);
if (fs==1)
{
for (n=bi0-1; n>=0; n--) {zzH[n]=0; zz[n]=0; if (ExtLabel>0) ha[n]=0;}
zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; zzL[ai0]=0; if (ExtLabel>0) ha[ai0]=High[ai0];
}
if (fs==2)
{
for (n=ai0-1; n>=0; n--) {zzL[n]=0; zz[n]=0; if (ExtLabel>0) la[n]=0;}
zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; zzH[bi0]=0; if (ExtLabel>0) la[bi0]=Low[bi0];
}
if (ExtLabel>0)
{
if (fs==1) {aim=iBarShift(Symbol(),0,tmh); if (aim<bi0) ha[aim]=High[aim];}
else if (fs==2) {bim=iBarShift(Symbol(),0,tml); if (bim<ai0) la[bim]=Low[bim];}
}
}
//====================================================================================================
}
//--------------------------------------------
}
//--------------------------------------------------------
// ZigZag Àëåêñà. Êîíåö.
//--------------------------------------------------------
//----------------------------------------------------
// Èíäèêàòîð ïîäîáíûé âñòðîåííîìó â Ensign. Íà÷àëî.
//----------------------------------------------------
void Ensign_ZZ()
{
int i,n;
// cbi=Bars-IndicatorCounted()-1;
//---------------------------------
for (i=cbi; i>=0; i--)
{
//-------------------------------------------------
// Óñòàíàâëèâàåì íà÷àëüíûå çíà÷åíèÿ ìèíèìóìà è ìàêñèìóìà áàðà
if (lLast==0) {lLast=Low[i];hLast=High[i]; if (ExtIndicator==3) di=hLast-lLast;}
// Îïðåäåëÿåì íàïðàâëåíèå òðåíäà äî ïåðâîé òî÷êè ñìåíû òðåíäà.
// Èëè äî òî÷êè íà÷àëà ïåðâîãî ëó÷à çà ëåâûì êðàåì.
if (fs==0)
{
if (lLast<Low[i] && hLast<High[i]) {fs=1; hLast=High[i]; si=High[i]; ai=i; tai=Time[i]; if (ExtIndicator==3) di=High[i]-Low[i];} // òðåíä âîñõîäÿùèé
if (lLast>Low[i] && hLast>High[i]) {fs=2; lLast=Low[i]; si=Low[i]; bi=i; tbi=Time[i]; if (ExtIndicator==3) di=High[i]-Low[i];} // òðåíä íèñõîäÿùèé
}
if (ti<Time[i])
{
// çàïîìèíàåì çíà÷åíèå íàïðàâëåíèÿ òðåíäà fs íà ïðåäûäóùåì áàðå
ti=Time[i];
ai0=iBarShift(Symbol(),Period(),tai);
bi0=iBarShift(Symbol(),Period(),tbi);
fcount0=false;
if ((fh || fl) && countBar>0) {countBar--; if (i==0 && countBar==0) fcount0=true;}
// Îñòàíîâêà. Îïðåäåëåíèå äàëüíåéøåãî íàïðàâëåíèÿ òðåíäà.
if (fs==1)
{
if (hLast>High[i] && !fh) fh=true;
if (i==0)
{
if (Close[i+1]<lLast && fh) {fs=2; countBar=minBars; fh=false;}
if (countBar==0 && si-di>Low[i+1] && High[i+1]<hLast && ai0>i+1 && fh && !fcount0) {fs=2; countBar=minBars; fh=false;}
if (fs==2) // Òðåäí ñìåíèëñÿ ñ âîñõîäÿùåãî íà íèñõîäÿùèé íà ïðåäûäóùåì áàðå
{
zz[ai0]=High[ai0];
zzH[ai0]=High[ai0];
lLast=Low[i+1];
if (ExtIndicator==3) di=High[i+1]-Low[i+1];
si=Low[i+1];
bi=i+1;
tbi=Time[i+1];
if (ExtLabel>0)
{
ha[ai0]=High[ai0];
tml=Time[i+1]; ha[i+1]=0; la[i+1]=Low[i+1]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å
}
else if (chHL && chHL_PeakDet_or_vts) {ha[i+1]=si+di; la[i+1]=si;}
}
}
else
{
if (Close[i]<lLast && fh) {fs=2; countBar=minBars; fh=false;}
if (countBar==0 && si-di>Low[i] && High[i]<hLast && fh) {fs=2; countBar=minBars; fh=false;}
if (fs==2) // Òðåäí ñìåíèëñÿ ñ âîñõîäÿùåãî íà íèñõîäÿùèé
{
zz[ai]=High[ai];
zzH[ai]=High[ai];
lLast=Low[i];
if (ExtIndicator==3) di=High[i]-Low[i];
si=Low[i];
bi=i;
tbi=Time[i];
if (ExtLabel>0)
{
ha[ai]=High[ai];
tml=Time[i]; ha[i]=0; la[i]=Low[i]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å
}
else if (chHL && chHL_PeakDet_or_vts) {ha[i]=si+di; la[i]=si;}
}
}
}
else // fs==2
{
if (lLast<Low[i] && !fl) fl=true;
if (i==0)
{
if (Close[i+1]>hLast && fl) {fs=1; countBar=minBars; fl=false;}
if (countBar==0 && si+di<High[i+1] && Low[i+1]>lLast && bi0>i+1 && fl && !fcount0) {fs=1; countBar=minBars; fl=false;}
if (fs==1) // Òðåäí ñìåíèëñÿ ñ íèñõîäÿùåãî íà âîñõîäÿùèé íà ïðåäûäóùåì áàðå
{
zz[bi0]=Low[bi0];
zzL[bi0]=Low[bi0];
hLast=High[i+1];
if (ExtIndicator==3) di=High[i+1]-Low[i+1];
si=High[i+1];
ai=i+1;
tai=Time[i+1];
if (ExtLabel>0)
{
la[bi0]=Low[bi0];
tmh=Time[i+1]; ha[i+1]=High[i+1]; la[i+1]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å
}
else if (chHL && chHL_PeakDet_or_vts) {ha[i+1]=si; la[i+1]=si-di;}
}
}
else
{
if (Close[i]>hLast && fl) {fs=1; countBar=minBars; fl=false;}
if (countBar==0 && si+di<High[i] && Low[i]>lLast && fl) {fs=1; countBar=minBars; fl=false;}
if (fs==1) // Òðåäí ñìåíèëñÿ ñ íèñõîäÿùåãî íà âîñõîäÿùèé
{
zz[bi]=Low[bi];
zzL[bi]=Low[bi];
hLast=High[i];
if (ExtIndicator==3) di=High[i]-Low[i];
si=High[i];
ai=i;
tai=Time[i];
if (ExtLabel>0)
{
la[bi]=Low[bi];
tmh=Time[i]; ha[i]=High[i]; la[i]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å
}
else if (chHL && chHL_PeakDet_or_vts==1) {ha[i]=si; la[i]=si-di;}
}
}
}
}
// Ïðîäîëæåíèå òðåíäà
if (fs==1 && High[i]>si) {ai=i; tai=Time[i]; hLast=High[i]; si=High[i]; countBar=minBars; fh=false; if (ExtIndicator==3) di=High[i]-Low[i];}
if (fs==2 && Low[i]<si) {bi=i; tbi=Time[i]; lLast=Low[i]; si=Low[i]; countBar=minBars; fl=false; if (ExtIndicator==3) di=High[i]-Low[i];}
// Çàïîëíÿåì áóôåðû äëÿ óðîâíåé ïîäòâåðæäåíèÿ
if (chHL && chHL_PeakDet_or_vts && ExtLabel==0)
{
if (fs==1) {ha[i]=si; la[i]=si-di;}
if (fs==2) {ha[i]=si+di; la[i]=si;}
}
//===================================================================================================
// Íóëåâîé áàð. Ðàñ÷åò ïåðâîãî ëó÷à ZigZag-a
if (i==0)
{
ai0=iBarShift(Symbol(),Period(),tai);
bi0=iBarShift(Symbol(),Period(),tbi);
if (fs==1)
{
for (n=bi0-1; n>=0; n--) {zzH[n]=0; zz[n]=0; if (ExtLabel>0) ha[n]=0;}
zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; zzL[ai0]=0; if (ExtLabel>0) ha[ai0]=High[ai0];
}
if (fs==2)
{
for (n=ai0-1; n>=0; n--) {zzL[n]=0; zz[n]=0; if (ExtLabel>0) la[n]=0;}
zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; zzH[bi0]=0; if (ExtLabel>0) la[bi0]=Low[bi0];
}
if (ExtLabel>0)
{
if (fs==1) {aim=iBarShift(Symbol(),0,tmh); if (aim<bi0) ha[aim]=High[aim];}
else if (fs==2) {bim=iBarShift(Symbol(),0,tml); if (bim<ai0) la[bim]=Low[bim];}
}
}
//====================================================================================================
}
//--------------------------------------------
}
//--------------------------------------------------------
// Èíäèêàòîð ïîäîáíûé âñòðîåííîìó â Ensign. Êîíåö.
//--------------------------------------------------------
//----------------------------------------------------
// ZigZag tauber. Íà÷àëî.
//----------------------------------------------------
void ZigZag_tauber()
{
// ZigZag èç ÌÒ. Íà÷àëî.
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
int metka=0; // =0 - äî ïåðâîãî ïåðåëîìà ZZ. =1 - èùåì ìåòêè ìàêñèìóìîâ. =2 - èùåì ìåòêè ìèíèìóìîâ.
double peak, wrpeak;
ArrayInitialize(zz,0.0);
ArrayInitialize(zzL,0.0);
ArrayInitialize(zzH,0.0);
if (ExtLabel>0)
{
ArrayInitialize(la,0.0);
ArrayInitialize(ha,0.0);
}
GetHigh(0,Bars,0.0,0);
// final cutting
lasthigh=-1; lasthighpos=-1;
lastlow=-1; lastlowpos=-1;
for(shift=Bars; shift>=0; shift--)
{
curlow=zzL[shift];
curhigh=zzH[shift];
if((curlow==0)&&(curhigh==0)) continue;
//---
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) zzH[lasthighpos]=0;
else zzH[shift]=0;
}
//---
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=-1;
}
//----
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) zzL[lastlowpos]=0;
else zzL[shift]=0;
}
//---
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
}
lasthigh=-1;
}
}
for(shift=Bars-1; shift>=0; shift--)
{
zz[shift]=zzL[shift];
res=zzH[shift];
if(res!=0.0) zz[shift]=res;
}
if (ExtLabel>0) // ðàññòàâëÿåì ìåòêè
{
for(shift=Bars-1; shift>=0; shift--)
{
if (zz[shift]>0)
{
if (zzH[shift]>0)
{
peak=High[shift]; wrpeak=Low[shift];
ha[shift]=High[shift]; la[shift]=0;
metka=2; shift--;
}
else
{
peak=Low[shift]; wrpeak=High[shift];
la[shift]=Low[shift]; ha[shift]=0;
metka=1; shift--;
}
}
if (metka==1)
{
if (wrpeak<High[shift])
{
if (High[shift]-peak>minSize*Point) {metka=0; ha[shift]=High[shift];}
}
else
{
wrpeak=High[shift];
}
}
else if (metka==2)
{
if (wrpeak>Low[shift])
{
if (peak-Low[shift]>minSize*Point) {metka=0; la[shift]=Low[shift];}
}
else
{
wrpeak=Low[shift];
}
}
}
}
}
void GetHigh(int start, int end, double price, int step)
{
int count=end-start;
if (count<=0) return;
int i=iHighest(NULL,0,MODE_HIGH,count+1,start);
double val=High[i];
if ((val-price)>(minSize*Point))
{
zzH[i]=val;
if (i==start) {GetLow(start+step,end-step,val,1-step); if (zzL[start-1]>0) zzL[start]=0; return;}
if (i==end) {GetLow(start+step,end-step,val,1-step); if (zzL[end+1]>0) zzL[end]=0; return;}
GetLow(start,i-1,val,0);
GetLow(i+1,end,val,0);
}
}
void GetLow(int start, int end, double price, int step)
{
int count=end-start;
if (count<=0) return;
int i=iLowest(NULL,0,MODE_LOW,count+1,start);
double val=Low[i];
if ((price-val)>(minSize*Point))
{
zzL[i]=val;
if (i==start) {GetHigh(start+step,end-step,val,1-step); if (zzH[start-1]>0) zzH[start]=0; return;}
if (i==end) {GetHigh(start+step,end-step,val,1-step); if (zzH[end+1]>0) zzH[end]=0; return;}
GetHigh(start,i-1,val,0);
GetHigh(i+1,end,val,0);
}
}
//--------------------------------------------------------
// ZigZag tauber. Êîíåö.
//--------------------------------------------------------
//----------------------------------------------------
// Ñâèíãè Ãàííà. Íà÷àëî.
//----------------------------------------------------
void GannSwing()
{
int i,n;
// Ïåðåìåííûå äëÿ Ñâèíãîâ Ãàííà
double lLast_m=0, hLast_m=0;
int countBarExt=0; // ñ÷åò÷èê âíåøíèõ áàðîâ
int countBarl=0,countBarh=0;
fs=0; ti=0;
// lLast, hLast - ìèíèìóì è ìàêñèìóì àêòèâíîãî áàðà
// lLast_m, hLast_m - ìèíèìóì è ìàêñèìóì "ïðîìåæóòî÷íûõ" áàðîâ
ArrayInitialize(zz,0.0);
ArrayInitialize(zzL,0.0);
ArrayInitialize(zzH,0.0);
if (ExtLabel>0)
{
ArrayInitialize(la,0.0);
ArrayInitialize(ha,0.0);
}
// cbi=Bars-IndicatorCounted()-1;
//---------------------------------
cbi=Bars-1;
for (i=cbi; i>=0; i--)
{
//-------------------------------------------------
// Óñòàíàâëèâàåì íà÷àëüíûå çíà÷åíèÿ ìèíèìóìà è ìàêñèìóìà áàðà
if (lLast==0) {lLast=Low[i]; hLast=High[i]; ai=i; bi=i;}
if (ti!=Time[i])
{
ti=Time[i];
if (lLast_m==0 && hLast_m==0)
{
if (lLast>Low[i] && hLast<High[i]) // Âíåøíèé áàð
{
lLast=Low[i];hLast=High[i];lLast_m=Low[i];hLast_m=High[i];countBarExt++;
if (fs==1) {countBarl=countBarExt; ai=i; tai=Time[i];}
else if (fs==2) {countBarh=countBarExt; bi=i; tbi=Time[i];}
else {countBarl++;countBarh++;}
}
else if (lLast<=Low[i] && hLast<High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå âîñõîäÿùàÿ
{
lLast_m=0;hLast_m=High[i];countBarl=0;countBarExt=0;
if (fs!=1) countBarh++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; ai=i; tai=Time[i];}
}
else if (lLast>Low[i] && hLast>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ
{
lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0;
if (fs!=2) countBarl++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];}
}
}
else if (lLast_m>0 && hLast_m>0) // Âíåøíèé áàð (ïðåäûäóùèé)
{
if (lLast_m>Low[i] && hLast_m<High[i]) // Âíåøíèé áàð
{
lLast=Low[i];hLast=High[i];lLast_m=Low[i];hLast_m=High[i];countBarExt++;
if (fs==1) {countBarl=countBarExt; ai=i; tai=Time[i];}
else if (fs==2) {countBarh=countBarExt; bi=i; tbi=Time[i];}
else {countBarl++;countBarh++;}
}
else if (lLast_m<=Low[i] && hLast_m<High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå âîñõîäÿùàÿ
{
lLast_m=0;hLast_m=High[i];countBarl=0;countBarExt=0;
if (fs!=1) countBarh++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; ai=i; tai=Time[i];}
}
else if (lLast_m>Low[i] && hLast_m>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ
{
lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0;
if (fs!=2) countBarl++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];}
}
}
else if (lLast_m>0)
{
if (lLast_m>Low[i] && hLast<High[i]) // Âíåøíèé áàð
{
lLast=Low[i];hLast=High[i];lLast_m=Low[i];hLast_m=High[i];countBarExt++;
if (fs==1) {countBarl=countBarExt; ai=i; tai=Time[i];}
else if (fs==2) {countBarh=countBarExt; bi=i; tbi=Time[i];}
else {countBarl++;countBarh++;}
}
else if (lLast_m<=Low[i] && hLast<High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå âîñõîäÿùàÿ
{
lLast_m=0;hLast_m=High[i];countBarl=0;countBarExt=0;
if (fs!=1) countBarh++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; ai=i; tai=Time[i];}
}
else if (lLast_m>Low[i] && hLast>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ
{
lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0;
if (fs!=2) countBarl++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];}
}
}
else if (hLast_m>0)
{
if (lLast>Low[i] && hLast_m<High[i]) // Âíåøíèé áàð
{
lLast=Low[i];hLast=High[i];lLast_m=Low[i];hLast_m=High[i];countBarExt++;
if (fs==1) {countBarl=countBarExt; ai=i; tai=Time[i];}
else if (fs==2) {countBarh=countBarExt; bi=i; tbi=Time[i];}
else {countBarl++;countBarh++;}
}
else if (lLast<=Low[i] && hLast_m<High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå âîñõîäÿùàÿ
{
lLast_m=0;hLast_m=High[i];countBarl=0;countBarExt=0;
if (fs!=1) countBarh++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; ai=i; tai=Time[i];}
}
else if (lLast>Low[i] && hLast_m>=High[i]) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ
{
lLast_m=Low[i];hLast_m=0;countBarh=0;countBarExt=0;
if (fs!=2) countBarl++;
else {lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0; bi=i; tbi=Time[i];}
}
}
// Îïðåäåëÿåì íàïðàâëåíèå òðåíäà.
if (fs==0)
{
if (lLast<lLast_m && hLast>hLast_m) // âíóòðåííèé áàð
{
lLast=Low[i]; hLast=High[i]; ai=i; bi=i; countBarl=0;countBarh=0;countBarExt=0;
}
if (countBarh>countBarl && countBarh>countBarExt && countBarh>minBars)
{
lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0;
fs=1;countBarh=0;countBarl=0;countBarExt=0;
zz[bi]=Low[bi];
zzL[bi]=Low[bi];
zzH[bi]=0;
ai=i;
tai=Time[i];
}
else if (countBarl>countBarh && countBarl>countBarExt && countBarl>minBars)
{
lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0;
fs=2;countBarl=0;countBarh=0;countBarExt=0;
zz[ai]=High[ai];
zzH[ai]=High[ai];
zzL[ai]=0;
bi=i;
tbi=Time[i];
}
}
else
{
if (lLast_m==0 && hLast_m==0)
{
countBarl=0;countBarh=0;countBarExt=0;
}
// Òåíäåíöèÿ âîñõîäÿùàÿ
if (fs==1)
{
if (countBarl>countBarh && countBarl>countBarExt && countBarl>minBars) // Îïðåäåëÿåì òî÷êó ñìåíû òåíäåíöèè.
{
// çàïîìèíàåì çíà÷åíèå íàïðàâëåíèÿ òðåíäà fs íà ïðåäûäóùåì áàðå
ai=iBarShift(Symbol(),Period(),tai);
fs=2;
countBarl=0;
zz[ai]=High[ai];
zzH[ai]=High[ai];
zzL[ai]=0;
bi=i;
if (ExtLabel>0)
{
ha[ai]=High[ai]; la[ai]=0; // ïðîñòàíîâêà ìåòîê íà ìàêñèìóìàõ
tml=Time[i]; ha[i]=0; la[i]=Low[i]; // ïðîñòàíîâêà ìåòêè íà íèñõîäÿùåì ëó÷å
}
tbi=Time[i];
lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0;
for (n=0;countBarExt<minBars;n++)
{
if (lLast<Low[i+n+1] && hLast>High[i+n+1]) {countBarExt++; countBarh++; lLast=Low[i+n+1]; hLast=High[i+n+1]; hLast_m=High[i];}
else break;
}
lLast=Low[i]; hLast=High[i];
}
}
// Òåíäåíöèÿ íèñõîäÿùàÿ
if (fs==2)
{
if (countBarh>countBarl && countBarh>countBarExt && countBarh>minBars) // Îïðåäåëÿåì òî÷êó ñìåíû òåíäåíöèè.
{
// çàïîìèíàåì çíà÷åíèå íàïðàâëåíèÿ òðåíäà fs íà ïðåäûäóùåì áàðå
bi=iBarShift(Symbol(),Period(),tbi);
fs=1;
countBarh=0;
zz[bi]=Low[bi];
zzL[bi]=Low[bi];
zzH[bi]=0;
ai=i;
if (ExtLabel>0)
{
ha[bi]=0; la[bi]=Low[bi]; // ïðîñòàíîâêà ìåòîê íà ìèíèìóìàõ
tmh=Time[i]; ha[i]=High[i]; la[i]=0; // ïðîñòàíîâêà ìåòêè íà âîñõîäÿùåì ëó÷å
}
tai=Time[i];
lLast=Low[i]; hLast=High[i]; lLast_m=0; hLast_m=0;
for (n=0;countBarExt<minBars;n++)
{
if (lLast<Low[i+n+1] && hLast>High[i+n+1]) {countBarExt++; countBarl++; lLast=Low[i+n+1]; hLast=High[i+n+1]; lLast_m=Low[i];}
else break;
}
lLast=Low[i]; hLast=High[i];
}
}
}
}
if (i==0)
{
if (hLast<High[i] && fs==1) // Òåíäåíöèÿ íà òåêóùåì áàðå âîñõîäÿùàÿ
{
ai=i; tai=Time[i]; zz[ai]=High[ai]; zzH[ai]=High[ai]; zzL[ai]=0;
if (ExtLabel>0) {ha[ai]=High[ai]; la[ai]=0;} // ãóëÿþùàÿ ìåòêà
}
else if (lLast>Low[i] && fs==2) // Òåíäåíöèÿ íà òåêóùåì áàðå íèñõîäÿùàÿ
{
bi=i; tbi=Time[i]; zz[bi]=Low[bi]; zzL[bi]=Low[bi]; zzH[bi]=0;
if (ExtLabel>0) {la[bi]=Low[bi]; ha[bi]=0;} // ãóëÿþùàÿ ìåòêà
}
//===================================================================================================
// Íóëåâîé áàð. Ðàñ÷åò ïåðâîãî ëó÷à ZigZag-a
ai0=iBarShift(Symbol(),Period(),tai);
bi0=iBarShift(Symbol(),Period(),tbi);
if (bi0>1) if (fs==1)
{
for (n=bi0-1; n>=0; n--) {zzH[n]=0.0; zz[n]=0.0; if (ExtLabel>0) ha[n]=0;}
zz[ai0]=High[ai0]; zzH[ai0]=High[ai0]; zzL[ai0]=0.0; if (ExtLabel>0) ha[ai0]=High[ai0];
}
if (ai0>1) if (fs==2)
{
for (n=ai0-1; n>=0; n--) {zzL[n]=0.0; zz[n]=0.0; if (ExtLabel>0) la[n]=0;}
zz[bi0]=Low[bi0]; zzL[bi0]=Low[bi0]; zzH[bi0]=0.0; if (ExtLabel>0) la[bi0]=Low[bi0];
}
if (ExtLabel>0)
{
if (fs==1) {aim=iBarShift(Symbol(),0,tmh); if (aim<bi0) ha[aim]=High[aim];}
else if (fs==2) {bim=iBarShift(Symbol(),0,tml); if (bim<ai0) la[bim]=Low[bim];}
}
if (ti<Time[1]) i=2;
}
//====================================================================================================
}
//--------------------------------------------
}
//--------------------------------------------------------
// Ñâèíãè Ãàííà. Êîíåö.
//--------------------------------------------------------
//----------------------------------------------------
// nen-ZigZag. Ðåæèì DT. Íà÷àëî.
//----------------------------------------------------
void nenZigZag()
{
if (cbi>0)
{
datetime nen_time=iTime(NULL,GrossPeriod,0);
int i=0, j=0; // j - íîìåð áàðà ñ ìàêñèìàëüíûì ìàêñèìóìîì (ìèíèìàëüíûì ìèíèìóìîì) â ïîëîñêå nen-ZigZag
double nen_dt=0, last_j=0, last_nen=0; //last_j - çíà÷åíèå ìàêñèìàëüíîãî ìàêñèìóìà (ìèíèìàëüíîãî ìèíèìóìà) â ïîëîñêå nen_ZigZag
int limit, big_limit, bigshift=0;
int i_metka=-1, i_metka_m=-1, k, m, jm;
bool fl_metka=false;
double last_jm=0, last_nen_m=0;
// if (ExtLabel>0) metka=1; else metka=0;
if (init_zz)
{
limit=Bars-1;
big_limit=iBars(NULL,GrossPeriod)-1;
}
else
{
limit=iBarShift(NULL,0,afr[2]);
big_limit=iBarShift(NULL,GrossPeriod,afr[2]);
}
while (bigshift<big_limit && i<limit) // íà÷àëüíîå çàïîëíåíèå áóôåðà nen-ZigZag ("ïîëîñêè")
{
if (Time[i]>=nen_time)
{
if (ExtIndicator==6)
{
if (ExtLabel>0)
{
ha[i]=iCustom(NULL,GrossPeriod,"ZigZag_new_nen4",minBars,ExtDeviation,ExtBackstep,1,1,bigshift);
la[i]=iCustom(NULL,GrossPeriod,"ZigZag_new_nen4",minBars,ExtDeviation,ExtBackstep,1,2,bigshift);
}
nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"ZigZag_new_nen4",minBars,ExtDeviation,ExtBackstep,0,0,bigshift);
}
else if (ExtIndicator==7)
{
if (ExtLabel>0)
{
ha[i]=iCustom(NULL,GrossPeriod,"DT_ZZ_nen",minBars,1,1,bigshift);
la[i]=iCustom(NULL,GrossPeriod,"DT_ZZ_nen",minBars,1,2,bigshift);
}
nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"DT_ZZ_nen",minBars,0,0,bigshift);
}
else if (ExtIndicator==8) nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"CZigZag",minBars,ExtDeviation,0,bigshift);
else if (ExtIndicator==10)
{
if (ExtLabel>0)
{
ha[i]=iCustom(NULL,GrossPeriod,"Swing_ZZ_1",minBars,1,1,bigshift);
la[i]=iCustom(NULL,GrossPeriod,"Swing_ZZ_1",minBars,1,2,bigshift);
}
nen_ZigZag[i]=iCustom(NULL,GrossPeriod,"Swing_ZZ_1",minBars,1,0,bigshift);
}
i++;
}
else {bigshift++;nen_time=iTime(NULL,GrossPeriod,bigshift);}
}
if (init_zz) // îáðàáîòêà èñòîðèè
{
double i1=0, i2=0;
init_zz=false;
for (i=limit;i>0;i--) // îïðåäåëåíèå íàïðàâëåíèÿ ïåðâîãî ëó÷à
{
if (nen_ZigZag[i]>0)
{
if (i1==0) i1=nen_ZigZag[i];
else if (i1>0 && i1!=nen_ZigZag[i]) i2=nen_ZigZag[i];
if (i2>0)
{
if (i1>i2) hi_nen=true;
else hi_nen=false;
break;
}
}
}
}
else // ðåæèì ðåàëüíîãî âðåìåíè
{
if (afrl[2]>0) hi_nen=false; else hi_nen=true;
}
for (i=limit;i>=0;i--)
{
// if (i<limit)
{zz[i]=0; zzH[i]=0; zzL[i]=0;}
if (nen_ZigZag[i]>0)
{
if (ExtLabel==2)
{
if (i_metka_m>=0 && !fl_metka)
{
m=i_metka_m-GrossPeriod/Period();
for (k=i_metka_m; k>m; k--)
{
ha[k]=0; la[k]=0;
}
if (hi_nen) ha[jm]=last_nen_m;
else la[jm]=last_nen_m;
jm=0; last_nen_m=0; last_jm=0; i_metka_m=-1;
}
if (i_metka<0) i_metka=i;
}
fl_metka=true;
if (nen_dt>0 && nen_dt!=nen_ZigZag[i])
{
if (i_metka>=0 && fl_metka)
{
m=i_metka-GrossPeriod/Period();
for (k=i_metka; k>m; k--)
{
ha[k]=0; la[k]=0;
}
if (hi_nen) ha[j]=last_nen;
else la[j]=last_nen;
i_metka=i;
}
if (hi_nen) {hi_nen=false;zzH[j]=last_nen;}
else {hi_nen=true;zzL[j]=last_nen;}
last_j=0;nen_dt=0;zz[j]=last_nen;
}
if (hi_nen)
{
nen_dt=nen_ZigZag[i];
if (last_j<High[i]) {j=i;last_j=High[i];last_nen=nen_ZigZag[i];}
}
else
{
nen_dt=nen_ZigZag[i];
if (last_j==0) {j=i;last_j=Low[i];last_nen=nen_ZigZag[i];}
if (last_j>Low[i]) {j=i;last_j=Low[i];last_nen=nen_ZigZag[i];}
}
if (nen_dt>0 && i==0) // îïðåäåëåíèå ïåðåëîìà íà íóëåâîì áàðå GrossPeriod
{
if (i_metka>=0 && fl_metka)
{
m=i_metka-GrossPeriod/Period();
for (k=i_metka; k>m; k--)
{
ha[k]=0; la[k]=0;
}
if (hi_nen) ha[j]=last_nen;
else la[j]=last_nen;
fl_metka=false;
}
zz[j]=last_nen;
if (hi_nen) zzH[j]=last_nen; else zzL[j]=last_nen;
}
}
else
{
if (last_j>0 && fl_metka)
{
if (i_metka>=0 && fl_metka)
{
m=i_metka-GrossPeriod/Period();
for (k=i_metka; k>m; k--)
{
ha[k]=0; la[k]=0;
}
if (hi_nen) ha[j]=last_nen;
else la[j]=last_nen;
}
fl_metka=false;
if (hi_nen) {hi_nen=false;zzH[j]=last_nen;}
else {hi_nen=true;zzL[j]=last_nen;}
last_j=0;nen_dt=0;zz[j]=last_nen;
i_metka=-1;
}
if (ExtLabel==2)
{
if ((ha[i]>0 || la[i]>0) && !fl_metka)
{
if (i_metka_m<0)
{
i_metka_m=i; jm=i;
if (hi_nen)
{
last_jm=High[i];last_nen_m=ha[i];
}
else
{
last_jm=Low[i];last_nen_m=la[i];
}
}
if (hi_nen)
{
if (last_nen_m>last_jm) {jm=i;last_jm=High[i];}
}
else
{
if (last_nen_m<last_jm) {jm=i;last_jm=Low[i];}
}
}
}
}
}
}
}
//--------------------------------------------------------
// nen-ZigZag. Ðåæèì DT. Êîíåö.
//--------------------------------------------------------
/*------------------------------------------------------------------+
| ZigZag_Talex, èùåò òî÷êè ïåðåëîìà íà ãðàôèêå. Êîëè÷åñòâî òî÷åê |
| çàäàåòñÿ âíåøíèì ïàðàìåòðîì ExtPoint. |
+------------------------------------------------------------------*/
void ZZTalex(int n)
{
/*ïåðåìåííûå*/
int i,j,k,zzbarlow,zzbarhigh,curbar,curbar1,curbar2,EP,Mbar[];
double curpr,Mprice[];
bool flag,fd;
/*íà÷àëî*/
// for(i=0;i<=Bars-1;i++)
// {zz[i]=0.0;zzL[i]=0.0;zzH[i]=0.0;}
ArrayInitialize(zz,0);ArrayInitialize(zzL,0);ArrayInitialize(zzH,0);
EP=ExtPoint;
zzbarlow=iLowest(NULL,0,MODE_LOW,n,0);
zzbarhigh=iHighest(NULL,0,MODE_HIGH,n,0);
if(zzbarlow<zzbarhigh) {curbar=zzbarlow; curpr=Low[zzbarlow];}
if(zzbarlow>zzbarhigh) {curbar=zzbarhigh; curpr=High[zzbarhigh];}
if(zzbarlow==zzbarhigh){curbar=zzbarlow;curpr=funk1(zzbarlow, n);}
ArrayResize(Mbar,ExtPoint);
ArrayResize(Mprice,ExtPoint);
j=0;
endpr=curpr;
endbar=curbar;
Mbar[j]=curbar;
Mprice[j]=curpr;
EP--;
if(curpr==Low[curbar]) flag=true;
else flag=false;
fl=flag;
i=curbar+1;
while(EP>0)
{
if(flag)
{
while(i<=Bars-1)
{
curbar1=iHighest(NULL,0,MODE_HIGH,n,i);
curbar2=iHighest(NULL,0,MODE_HIGH,n,curbar1);
if(curbar1==curbar2){curbar=curbar1;curpr=High[curbar];flag=false;i=curbar+1;j++;break;}
else i=curbar2;
}
Mbar[j]=curbar;
Mprice[j]=curpr;
EP--;
}
if(EP==0) break;
if(!flag)
{
while(i<=Bars-1)
{
curbar1=iLowest(NULL,0,MODE_LOW,n,i);
curbar2=iLowest(NULL,0,MODE_LOW,n,curbar1);
if(curbar1==curbar2){curbar=curbar1;curpr=Low[curbar];flag=true;i=curbar+1;j++;break;}
else i=curbar2;
}
Mbar[j]=curbar;
Mprice[j]=curpr;
EP--;
}
}
/* èñïðàâëåíèå âåðøèí */
if(Mprice[0]==Low[Mbar[0]])fd=true; else fd=false;
for(k=0;k<=ExtPoint-1;k++)
{
if(k==0)
{
if(fd==true)
{
Mbar[k]=iLowest(NULL,0,MODE_LOW,Mbar[k+1]-Mbar[k],Mbar[k]);Mprice[k]=Low[Mbar[k]];endbar=minBars;
}
if(fd==false)
{
Mbar[k]=iHighest(NULL,0,MODE_HIGH,Mbar[k+1]-Mbar[k],Mbar[k]);Mprice[k]=High[Mbar[k]];endbar=minBars;
}
}
if(k<ExtPoint-2)
{
if(fd==true)
{
Mbar[k+1]=iHighest(NULL,0,MODE_HIGH,Mbar[k+2]-Mbar[k]-1,Mbar[k]+1);Mprice[k+1]=High[Mbar[k+1]];
}
if(fd==false)
{
Mbar[k+1]=iLowest(NULL,0,MODE_LOW,Mbar[k+2]-Mbar[k]-1,Mbar[k]+1);Mprice[k+1]=Low[Mbar[k+1]];
}
}
if(fd==true)fd=false;else fd=true;
/* ïîñòðîéêà ZigZag'a */
zz[Mbar[k]]=Mprice[k];
//Print("zz_"+k,"=",zz[Mbar[k]]);
if (k==0)
{
if (Mprice[k]>Mprice[k+1])
{
zzH[Mbar[k]]=Mprice[k];
}
else
{
zzL[Mbar[k]]=Mprice[k];
}
}
else
{
if (Mprice[k]>Mprice[k-1])
{
zzH[Mbar[k]]=Mprice[k];
}
else
{
zzL[Mbar[k]]=Mprice[k];
}
}
}
}
//------------------------------------------------------------------
// ZigZag_Talex êîíåö
//------------------------------------------------------------------
/*-------------------------------------------------------------------+
/ Ôóíöèÿ äëÿ ïîèñêà ó ïåðâîãî áàðà (åñëè îí âíåøíèé) êàêîé ýêñòðåìóì |
/ áóäåì èñïîëüçîâàòü â êà÷åñòâå âåðøèíû. Äëÿ ZigZag_Talex. |
/-------------------------------------------------------------------*/
double funk1(int zzbarlow, int ExtDepth)
{
double pr;
int fbarlow,fbarhigh;
fbarlow=iLowest(NULL,0,MODE_LOW,ExtDepth,zzbarlow);
fbarhigh=iHighest(NULL,0,MODE_HIGH,ExtDepth,zzbarlow);
if(fbarlow>fbarhigh) pr=High[zzbarlow];
if(fbarlow<fbarhigh) pr=Low[zzbarlow];
if(fbarlow==fbarhigh)
{
fbarlow=iLowest(NULL,0,MODE_LOW,2*ExtDepth,zzbarlow);
fbarhigh=iHighest(NULL,0,MODE_HIGH,2*ExtDepth,zzbarlow);
if(fbarlow>fbarhigh) pr=High[zzbarlow];
if(fbarlow<fbarhigh) pr=Low[zzbarlow];
if(fbarlow==fbarhigh)
{
fbarlow=iLowest(NULL,0,MODE_LOW,3*ExtDepth,zzbarlow);
fbarhigh=iHighest(NULL,0,MODE_HIGH,3*ExtDepth,zzbarlow);
if(fbarlow>fbarhigh) pr=High[zzbarlow];
if(fbarlow<fbarhigh) pr=Low[zzbarlow];
}
}
return(pr);
}
//--------------------------------------------------------
// Êîíåö. Äëÿ ZigZag_Talex.
//--------------------------------------------------------
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
// SQZZ by tovaroved.lv. Íà÷àëî. °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
double div(double a, double b){if(MathAbs(b)*10000>MathAbs(a)) return(a*1.0/b); else return(0);}
//=============================================================================================
double ray_value(double B1, double P1, double B2, double P2, double AAA){return(P1+( AAA -B1)*div(P2-P1,B2-B1));}
//=============================================================================================
datetime bar2time(int b){int t,TFsec=Period()*60; if(b<0) t=Time[0]-(b)*TFsec; else if(b>(Bars-1)) t=Time[Bars-1]-(b-Bars+1)*TFsec; else t=Time[b]; return(t);}
//=============================================================================================
int time2bar(datetime t){int b,t0=Time[0],TFsec=Period()*60; if(t>t0) b=(t0-t)/TFsec; else if(t<Time[Bars-2]) b=(Bars-2)+(Time[Bars-2]-t)/TFsec; else b=iBarShift(0,0,t); return(b);}
//=============================================================================================
void ZigZag_SQZZ(bool zzFill=true){ static int act_time=0, H1=10000,L1=10000,H2=10000,H3=10000,H4=10000,L2=10000,L3=10000,L4=10000;
static double H1p=-1,H2p=-1,H3p=-1, H4p=-1, L1p=10000,L2p=10000,L3p=10000,L4p=10000;
int mnm=1,tb,sH,sL,sX, i, a, barz, b,c, ii, H,L; double val,x,Lp,Hp,k=0.; if(Bars<100) return; if(1==2)bar2time(0);
barz=Bars-4;int bb=barz;
if(minBars==0)minBars=minSize; if(minSize==0)minSize=minBars*3; tb=MathSqrt(minSize*minBars);
mnm=tb;
a=time2bar(act_time); b=barz;// Print(a," ",b," ",tb," ",barz," ",0);
if(a>=0 && a<tb)
{
ii=a; a--; L1+=a; H1+=a;
L2+=a; H2+=a; L3+=a; H3+=a;
if(!zzFill){
for(i=barz; i>=a; i--) {zzH[i]=zzH[i-a]; zzL[i]=zzL[i-a];}
for(;i>=0;i--) {zzH[i]=0; zzL[i]=0;}
}
}
else
{
ii=barz;
H1=ii+1; L1=ii;
H2=ii+3; L2=ii+2;
L2p=Low[L2];H2p=High[H2];
L1p=Low[L1];H1p=High[H1];
H3=H2; H3p=H2p;
L3=L2; L3p=L2p;
}
act_time=Time[1];
for(c=0; ii>=0; c++, ii--)
{
// if(c>tb) if(zzFill) zz[ii+mnm]=MathMax(zzL[ii+mnm],zzH[ii+mnm]);
// if(c>tb) if(zzFill) zz[ii]=MathMax(zzL[ii],zzH[ii]);
H=ii; L=ii; Hp= High[H]; Lp= Low[L];
//-------------------------------------------------------------------------------------
if(H2<L2)
{// õàé óæå åñòü ãîòîâûé
if( Hp>=H1p )
{
H1=H; H1p=Hp;
if( H1p>H2p )
{
zzH[H2]=0;
H1=H; H1p=Hp;
H2=H1; H2p=H1p;
L1=H1; L1p=H1p;
zzH[H2]=H2p;
}
}
else if( Lp<=L1p )
{
L1=L; L1p=Lp;
x=ray_value(L2,L2p,H2+(L2-H3)*0.5,H2p+(L2p-H3p)*0.5,L1);
if( L1p<=L2p//òàêæå ðàáîòàåò L1p<=L2p*0.75+H2p*0.25 èëè ëþáûå äðóãèå óñëîâèÿ
|| tb*tb*Point<(H2p-L1p)*(H2-L1))
{ //ñäâèãàåì âñå Low
L4=L3; L4p=L3p;
L3=L2; L3p=L2p;
L2=L1; L2p=L1p;
H1=L1; H1p=L1p;
zzL[L2]=L2p;
}
}
}
//--------------------------------------------------------------
if(L2<H2) {// ëîó óæå åñòü ãîòîâûé
if( Lp<=L1p )
{L1=L; L1p=Lp;
if( L1p<=L2p )
{
zzL[L2]=0;
L1=L; L1p=Lp;
L2=L1; L2p=L1p;
H1=L1; H1p=L1p;
zzL[L2]=L2p;
}
}
else if( Hp>=H1p )
{
H1=H; H1p=Hp;
x=ray_value(H2,H2p,L2+0.5*(H2-L3),L2p+0.5*(H2p-L3p),H1);
if( H1p>=H2p//ìîæíî è òàê: H1p>=H2p*0.75+L2p*0.25
|| tb*tb*Point<(H1p-L2p)*(L2-H1))
{ //ñäâèãàåì âñå High
H4=H3; H4p=H3p;
H3=H2; H3p=H2p;
H2=H1; H2p=H1p;
L1=H1; L1p=H1p;
zzH[H2]=H2p;
}
}
}//--------------------------------------------------------------------------------
}//for
for(ii=bb-1; ii>=0; ii--) zz[ii]=MathMax(zzL[ii],zzH[ii]);
}//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
// SQZZ by tovaroved.lv. Êîíåö.
//--------------------------------------------------------=======================================================================
//--------------------------------------------------------
// ZZ_2L_nen . Íà÷àëî.
//#property copyright "Copyright © 2007, wellx. ver 0.07 alpha"
//#property link "aveliks@gmail.com"
//--------------------------------------------------------
void ZZ_2L_nen()
{
int count = IndicatorCounted();
int k, i,shift,cnt, pos,curhighpos,curlowpos;
if (Bars-count-1>2)
{
count=0; NewBarTime=0; countbars=0; realcnt=0;
ArrayInitialize(zz,0); ArrayInitialize(zzL,0); ArrayInitialize(zzH,0);
}
for (k=(Bars-count-1);k>=0;k--)
{
// Print("Prev-Bars :",Bars);
if(( NewBarTime==Time[0]) || (realcnt==Bars))
first=false;
else first=true;
//--------------------------------------------------------------------
//Íàõîäèì ïåðâóþ òî÷êó èíäèêàòîðà
//--------------------------------------------------------------------
if (first)
{
lastlowpos=Bars-1;
lasthighpos=Bars-1;
zzL[Bars-1]=0.0;
zzH[Bars-1]=0.0;
zz[Bars-1]=0.0;
realcnt=2;
for(shift=(Bars-2); shift>=0; shift--)
{
if ((High[shift]>High[shift+1]) && (Low[shift]>=Low[shift+1]))
{
zzL[shift]=0.0;
zzH[shift]=High[shift];
zz[shift]=High[shift];
lasthighpos=shift;
lasthigh=High[shift];
lastlow=Low[Bars-1];
pos=shift;
first=false;
//Print("First ", Bars ," ",shift," ",zz[shift]," ",zzH[shift]," ",zzL[shift]);
break;
}
if ((High[shift]<=High[shift+1]) && (Low[shift]<Low[shift+1]))
{
zzL[shift]=Low[shift];
zzH[shift]=0.0;
zz[shift]=Low[shift];
lasthigh=High[Bars-1];
lastlowpos=shift;
lastlow=Low[shift];
pos=shift;
first=false;
//Print("First ", Bars ," ",shift," ",zz[shift]," ",zzH[shift]," ",zzL[shift]);
break;
}
if ((High[shift]>High[shift+1]) && (Low[shift]<Low[shift+1]))
{
if ((High[shift]-High[shift+1])>(Low[shift+1]-Low[shift]))
{
zzL[shift]=0.0;
zzH[shift]=High[shift];
zz[shift]=High[shift];
zzL[shift]=0.0;
lasthighpos=shift;
lasthigh=High[shift];
lastlow=Low[Bars-1];
pos=shift;
first=false;
//Print("First ", Bars ," ",shift," ",zz[shift]," ",zzH[shift]," ",zzL[shift]);
break;
}
if ((High[shift]-High[shift+1])<(Low[shift+1]-Low[shift]))
{
zzL[shift]=Low[shift];
zzH[shift]=0.0;
zz[shift]=Low[shift];
lasthighpos=shift;
lasthigh=High[shift];
lastlow=Low[Bars-1];
pos=shift;
first=false;
//Print("First ", Bars ," ",shift," ",zz[shift]," ",zzH[shift]," ",zzL[shift]);
break;
}
if ((High[shift]-High[shift+1])==(Low[shift+1]-Low[shift]))
{
zzL[shift]=0.0;
zzH[shift]=0.0;
zz[shift]=0.0;
}
}
if ((High[shift]<High[shift+1]) && (Low[shift]>Low[shift+1]))
{
zzL[shift]=0.0;
zzH[shift]=0.0;
zz[shift]=0.0;
}
pos=shift;
realcnt=realcnt+1;
}
// Print("Start-Bars :",Bars," Realcnt ", realcnt, " Point " , Point);
//-------------------------------------------------------------------------
// çäåñü íà÷èíàåòñÿ îòðàáîòêà îñíîâíîãî öèêëà ÇÇ
//-------------------------------------------------------------------------
for(shift=pos-1; shift>=0; shift--)
{
if ((High[shift]>High[shift+1]) && (Low[shift]>=Low[shift+1]))
{
if (lasthighpos<lastlowpos)
{
if (High[shift]>High[lasthighpos])
{
zzL[shift]=0.0;
zzH[shift]=High[shift];
zz[shift]=High[shift];
zz[lasthighpos]=0.0;
if (shift!=0)
lasthighpos=shift;
lasthigh=High[shift];
if (lastlowpos!=Bars)
{
// Íàäî ðàññ÷èòàòü ïîçäíåå äëèíû ëó÷åé
}
}
}
if (lasthighpos>lastlowpos)
{
if ((((High[shift]-Low[lastlowpos])>(StLevel*Point)) && ((lastlowpos-shift)>=minBars)) ||
((High[shift]-Low[lastlowpos])>=(BigLevel*Point)))
{
zzL[shift]=0.0;
zzH[shift]=High[shift];
zz[shift]=High[shift];
//zz[lasthighpos]=0.0;
if (shift!=0)
lasthighpos=shift;
lasthigh=High[shift];
}
}
}
if ((High[shift]<=High[shift+1]) && (Low[shift]<Low[shift+1]))
{
if (lastlowpos<lasthighpos)
{
if (Low[shift]<Low[lastlowpos])
{
zzL[shift]=Low[shift];
zzH[shift]=0.0;
zz[shift]=Low[shift];
zz[lastlowpos]=0.0;
if (shift!=0)
lastlowpos=shift;
lastlow=Low[shift];
}
}
if (lastlowpos>lasthighpos)
{
if ((((High[lasthighpos]-Low[shift])>(StLevel*Point)) && ((lasthighpos-shift)>=minBars)) ||
((High[lasthighpos]-Low[shift])>=(BigLevel*Point)))
{
zzL[shift]=Low[shift];
zzH[shift]=0.0;
zz[shift]=Low[shift];
//zz[lastlowpos]=0.0;
if (shift!=0)
lastlowpos=shift;
lastlow=Low[shift];
}
}
}
if ((High[shift]>High[shift+1]) && (Low[shift]<Low[shift+1]))
{
if (lastlowpos<lasthighpos)
{
if (Low[shift]<Low[lastlowpos])
{
zzL[shift]=Low[shift];
zzH[shift]=0.0;
zz[shift]=Low[shift];
zz[lastlowpos]=0.0;
if (shift!=0)
lastlowpos=shift;
lastlow=Low[shift];
}
}
if (lasthighpos<lastlowpos)
{
if (High[shift]>High[lasthighpos])
{
zzL[shift]=0.0;
zzH[shift]=High[shift];
zz[shift]=High[shift];
zz[lasthighpos]=0.0;
if (shift!=0)
lasthighpos=shift;
lasthigh=High[shift];
}
}
}
realcnt=realcnt+1;
// if (shift<=0)
//Print("Main ",shift," LastHighPos ",lasthighpos," LastHigh ",lasthigh," LastLowPos ", lastlowpos," LastLow ", lastlow , " ",zz[shift]," ",zzH[shift]," ",zzL[shift]);
}
first=false;
countbars=Bars;
NewBarTime=Time[0];
}
//****************************************************************************************************
//
// Îáðàáîòêà íóëåâîãî áàðà
//
//****************************************************************************************************
else
//if (!first)
{
if (realcnt!=Bars)
{
first=True;
return(0);
}
if (Close[0]>=lasthigh)
{
if (lastlowpos<lasthighpos)
{
if (Low[0]>lastlow)
{
if ((((High[0]-Low[lastlowpos])>(StLevel*Point)) && ((lastlowpos)>=minBars)) ||
((High[0]-Low[lastlowpos])>(BigLevel*Point)))
{
zzL[0]=0.0;
zzH[0]=High[0];
zz[0]=High[0];
lasthigh=High[0];
// lasthighpos=0;
//Print("H2 ");
}
}
}
if (lastlowpos>lasthighpos)
{
if (High[0]>=lasthigh)
{
zz[lasthighpos]=0.0;
zz[0]=High[0];
zzL[0]=0.0;
zzH[0]=High[0];
lasthighpos=0;
lasthigh=High[0];
//Print("H3 ");
}
}
//lasthigh=High[0];
}
if (Close[0]<=lastlow)
{
if (lastlowpos<lasthighpos)
{
zz[lastlowpos]=0.0;
zz[0]=Low[0];
zzL[0]=Low[0];
zzH[0]=0.0;
lastlow=Low[0];
lastlowpos=0;
//Print("L2 ");
// }
}
if (lastlowpos>lasthighpos)
{
if (High[0]<lasthigh)
{
if ((((High[lasthighpos]-Low[shift])>(StLevel*Point)) && ((lasthighpos-shift)>=minBars)) ||
((High[lasthighpos]-Low[shift])>(BigLevel*Point)))
{
zz[0]=Low[0];
zzL[0]=Low[0];
zzH[0]=0.0;
lastlow=Low[0];
// lastlowpos=0;
//Print("L3 ");
}
}
}
//lastlow=Low[0];
}
//Print( Bars," ", Open[0], " ", Low[0]," ",High[0]," ",Close[0]);
//Print("Zero ",0," LastHighPos ",lasthighpos," LastHigh ",lasthigh," LastLowPos ", lastlowpos," LastLow ", lastlow , " ",zz[0]," ",zzH[0]," ",zzL[0]);
//Print("Bars :",Bars);
// Print("Zero - Bars :",Bars," Realcnt ", realcnt);
}
return(0);
}
}
//--------------------------------------------------------
// ZZ_2L_nen . Êîíåö.
//#property copyright "Copyright © 2007, wellx. ver 0.07 alpha"
//#property link "aveliks@gmail.com"
//--------------------------------------------------------
//--------------------------------------------------------
// Èíäèêàòîð i-vts . Íà÷àëî.
//--------------------------------------------------------
//+------------------------------------------------------------------+
//| i-VTS.mq4 |
//| Òàõèð & KimIV |
//| http://www.kimiv.ru |
//| |
//| 06.12.2005 Èíäèêàòîð VTS |
//+------------------------------------------------------------------+
//
// Ýòîò èíäèêàòîð Èãîðü Êèì ïåðåâåë ñ MQL íà MQ4
//
void i_vts() //
{
int LoopBegin, sh;
if (NumberOfBars==0) LoopBegin=Bars-1;
else LoopBegin=NumberOfBars-1;
LoopBegin=MathMin(Bars-25, LoopBegin);
for (sh=LoopBegin; sh>=0; sh--)
{
GetValueVTS("", 0, NumberOfVTS, sh);
ha[sh]=ms[0];
la[sh]=ms[1];
}
}
void i_vts1() //
{
int LoopBegin, sh;
if (NumberOfBars==0) LoopBegin=Bars-1;
else LoopBegin=NumberOfBars-1;
LoopBegin=MathMin(Bars-25, LoopBegin);
for (sh=LoopBegin; sh>=0; sh--)
{
GetValueVTS("", 0, NumberOfVTS1, sh);
ham[sh]=ms[0];
lam[sh]=ms[1];
}
}
//+------------------------------------------------------------------+
//------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé ---------------------------------
//+------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sym - íàèìåíîâàíèå èíñòðóìåíòà |
//| tf - òàéìôðåéì (êîëè÷åñòâî ìèíóò) |
//| ng - íîìåð ãðóïïû |
//| nb - íîìåð áàðà |
//| ms - ìàññèâ ñèãíàëîâ |
//+------------------------------------------------------------------+
void GetValueVTS(string sym, int tf, int ng, int nb)
{
if (sym=="") sym=Symbol();
double f1, f2, s1, s2;
f1=iClose(sym, tf, nb)-3*iATR(sym, tf, 10, nb);
f2=iClose(sym, tf, nb)+3*iATR(sym, tf, 10, nb);
for (int i=1; i<=ng; i++)
{
s1=iClose(sym, tf, nb+i)-3*iATR(sym, tf, 10, nb+i);
s2=iClose(sym, tf, nb+i)+3*iATR(sym, tf, 10, nb+i);
if (f1<s1) f1=s1;
if (f2>s2) f2=s2;
}
ms[0]=f2; // âåðõíÿÿ ëèíèÿ
ms[1]=f1; // íèæíÿÿ ëèíèÿ
}
//+------------------------------------------------------------------+
//--------------------------------------------------------
// Èíäèêàòîð i-vts . Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ïàðàìåòðû ðàçíûõ òàéìôðåéìîâ. Íà÷àëî.
//--------------------------------------------------------
void info_TF()
{
string info, info1, info2, txt, regim, perc;
int i;
double pips;
openTF[0]=iOpen(NULL,PERIOD_MN1,0);
closeTF[0]=iClose(NULL,PERIOD_MN1,0);
lowTF[0]=iLow(NULL,PERIOD_MN1,0);
highTF[0]=iHigh(NULL,PERIOD_MN1,0);
openTF[1]=iOpen(NULL,PERIOD_W1,0);
closeTF[1]=iClose(NULL,PERIOD_W1,0);
lowTF[1]=iLow(NULL,PERIOD_W1,0);
highTF[1]=iHigh(NULL,PERIOD_W1,0);
openTF[2]=iOpen(NULL,PERIOD_D1,0);
closeTF[2]=iClose(NULL,PERIOD_D1,0);
lowTF[2]=iLow(NULL,PERIOD_D1,0);
highTF[2]=iHigh(NULL,PERIOD_D1,0);
openTF[3]=iOpen(NULL,PERIOD_H4,0);
closeTF[3]=iClose(NULL,PERIOD_H4,0);
lowTF[3]=iLow(NULL,PERIOD_H4,0);
highTF[3]=iHigh(NULL,PERIOD_H4,0);
openTF[4]=iOpen(NULL,PERIOD_H1,0);
closeTF[4]=iClose(NULL,PERIOD_H1,0);
lowTF[4]=iLow(NULL,PERIOD_H1,0);
highTF[4]=iHigh(NULL,PERIOD_H1,0);
if (StringSubstr(info_comment,2,1)=="1")
{
if (minPercent>0) perc=DoubleToStr(MathAbs(minPercent),1); else perc="0.0";
switch (ExtIndicator)
{
case 0 : {regim=" | "+ ExtIndicator + " / " + minBars + " / " + ExtDeviation + " / " + ExtBackstep; break;}
case 1 : {regim=" | "+ ExtIndicator + " / " + minSize + " / " + perc+" %"; break;}
case 2 : {regim=" | "+ ExtIndicator + " / " + minBars + "/" + minSize; break;}
case 3 : {regim=" | "+ ExtIndicator + " / " + minBars; break;}
case 4 : {regim=" | "+ ExtIndicator + " / " + minSize; break;}
case 5 : {regim=" | "+ ExtIndicator + " / " + minBars; break;}
case 6 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars + " / " + ExtDeviation + " / " + ExtBackstep; break;}
case 7 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars; break;}
case 8 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars + " / " + ExtDeviation; break;}
case 10 : {regim=" | "+ ExtIndicator + " / " + GrossPeriod + " / " + minBars; break;}
case 11 : {regim=" | "+ ExtIndicator; break;}
case 12 : {regim=" | "+ ExtIndicator + " / " + minSize; break;}
case 13 : {regim=" | "+ ExtIndicator + " / " + minBars + " / " + minSize; break;}
case 14 : {regim=" | "+ ExtIndicator + " / " + minBars; break;}
}
}
info="";
if (StringSubstr(info_comment,0,1)=="1")
{
for (i=0;i<5;i++)
{
pips=(highTF[i]-lowTF[i])/Point;
if (pips>0)
{
if (openTF[i]==closeTF[i]) {txt=" = ";}
else if (openTF[i]!=closeTF[i] && MathAbs((highTF[i]-lowTF[i])/(openTF[i]-closeTF[i]))>=6.6) {txt=" -|- ";}
else if (openTF[i]>closeTF[i]) {txt=" \/ ";}
else if (openTF[i]<closeTF[i]) {txt=" /\ ";}
info=info + TF[i] + txt + DoubleToStr(pips,0) + " " + DoubleToStr((closeTF[i]-lowTF[i])/(pips*Point),3) + " | ";
}
else if (pips==0)
{
txt=" -|- ";
info=info + TF[i] + txt + DoubleToStr(pips,0) + " | ";
}
}
info1=info;
}
if (StringSubstr(info_comment,1,1)=="1")
{
if (afrl[0]>0)
{
info1=info1+Period_tf+" "+DoubleToStr(100*MathAbs(afrh[1]-afrl[0])/afrh[1],2)+" %";
}
else
{
info1=info1+Period_tf+" "+DoubleToStr(100*MathAbs(afrh[0]-afrl[1])/afrl[1],2)+" %";
}
}
info1=info1+regim;
if (StringSubstr(info_comment,3,1)=="1")
{
if (ExtGartleyTypeSearch==0) countGartley++;
if (RangeForPointD>0 && vNamePatternToNumberPattern != "")
{
info2=" It is found " + countGartley + " patterns - for pattern N " + NumberPattern + " - " + vBullBearToNumberPattern + " " + vNamePatternToNumberPattern + " - " + DoubleToStr(LevelForDminToNumberPattern,Digits) + " < D < " + DoubleToStr(LevelForDmaxToNumberPattern,Digits) + " | " + strDepth + " | " + strD+ "";
}
else info2="";
}
Comment(info1,"\n",info2);
close_TF=Close[0];
}
//--------------------------------------------------------
// Ïàðàìåòðû ðàçíûõ òàéìôðåéìîâ. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Èçìåíåíèå ðàçìåðà ìàññèâîâ. Íà÷àëî.
//--------------------------------------------------------
void arrResize(int size)
{
ArrayResize(fi,size);
ArrayResize(fitxt,size);
ArrayResize(fitxt100,size);
}
//--------------------------------------------------------
// Èçìåíåíèå ðàçìåðà ìàññèâîâ. Íà÷àëî.
//--------------------------------------------------------
//--------------------------------------------------------
// Ñîçäàåì ìàññèâû ñ ÷èñëàìè. Íà÷àëî.
//--------------------------------------------------------
void array_()
{
for (int i=0; i<65; i++)
{
numberFibo [i]=0;
numberPesavento [i]=0;
numberGartley [i]=0;
numberGilmorQuality [i]=0;
numberGilmorGeometric [i]=0;
numberGilmorHarmonic [i]=0;
numberGilmorArithmetic[i]=0;
numberGilmorGoldenMean[i]=0;
numberSquare [i]=0;
numberCube [i]=0;
numberRectangle [i]=0;
numberExt [i]=0;
}
number [0]=0.111;
numbertxt [0]=".111";
numberCube [0]=1;
number [1]=0.125;
numbertxt [1]=".125";
numberMix [1]=1;
numberGilmorHarmonic [1]=1;
number [2]=0.146;
numbertxt [2]=".146";
numberFibo [2]=1;
numberGilmorGeometric [2]=1;
number [3]=0.167;
numbertxt [3]=".167";
numberGilmorArithmetic[3]=1;
number [4]=0.177;
numbertxt [4]=".177";
numberGilmorHarmonic [4]=1;
numberSquare [4]=1;
number [5]=0.186;
numbertxt [5]=".186";
numberGilmorGeometric [5]=1;
number [6]=0.192;
numbertxt [6]=".192";
numberCube [6]=1;
number [7]=0.2;
numbertxt [7]=".2";
numberRectangle [7]=1;
number [8]=0.236;
numbertxt [8]=".236";
numberFibo [8]=1;
numberMix [8]=1;
numberGilmorGeometric [8]=1;
numberGilmorGoldenMean[8]=1;
number [9]=0.25;
numbertxt [9]=".25";
numberPesavento [9]=1;
numberGilmorQuality [9]=1;
numberGilmorHarmonic [9]=1;
numberSquare [9]=1;
number [10]=0.3;
numbertxt [10]=".3";
numberGilmorGeometric [10]=1;
numberGilmorGoldenMean[10]=1;
number [11]=0.333;
numbertxt [11]=".333";
numberGilmorArithmetic[11]=1;
numberCube [11]=1;
number [12]=0.354;
numbertxt [12]=".354";
numberGilmorHarmonic [12]=1;
numberSquare [12]=1;
number [13]=0.382;
numbertxt [13]=".382";
numberFibo [13]=1;
numberPesavento [13]=1;
numberGartley [13]=1;
numberGilmorQuality [13]=1;
numberGilmorGeometric [13]=1;
number [14]=0.447;
numbertxt [14]=".447";
numberGartley [14]=1;
numberRectangle [14]=1;
number [15]=0.486;
numbertxt [15]=".486";
numberGilmorGeometric [15]=1;
numberGilmorGoldenMean[15]=1;
number [16]=0.5;
numbertxt [16]=".5";
numberFibo [16]=1;
numberPesavento [16]=1;
numberGartley [16]=1;
numberGilmorQuality [16]=1;
numberGilmorHarmonic [16]=1;
numberSquare [16]=1;
number [17]=0.526;
numbertxt [17]=".526";
numberGilmorGeometric [17]=1;
number [18]=0.577;
numbertxt [18]=".577";
numberGilmorArithmetic[18]=1;
numberCube [18]=1;
number [19]=0.618;
numbertxt [19]=".618";
numberFibo [19]=1;
numberPesavento [19]=1;
numberGartley [19]=1;
numberGilmorQuality [19]=1;
numberGilmorGeometric [19]=1;
numberGilmorGoldenMean[19]=1;
number [20]=0.667;
numbertxt [20]=".667";
numberGilmorQuality [20]=1;
numberGilmorArithmetic[20]=1;
number [21]=0.707;
numbertxt [21]=".707";
numberPesavento [21]=1;
numberGartley [21]=1;
numberGilmorHarmonic [21]=1;
numberSquare [21]=1;
number [22]=0.764;
numbertxt [22]=".764";
numberFibo [22]=1;
number [23]=0.786;
numbertxt [23]=".786";
numberPesavento [23]=1;
numberGartley [23]=1;
numberGilmorQuality [23]=1;
numberGilmorGeometric [23]=1;
numberGilmorGoldenMean[23]=1;
number [24]=0.809;
numbertxt [24]=".809";
numberExt [24]=1;
number [25]=0.841;
numbertxt [25]=".841";
numberPesavento [25]=1;
number [26]=0.854;
numbertxt [26]=".854";
numberFibo [26]=1;
numberMix [26]=1;
number [27]=0.874;
numbertxt [27]=".874";
numberExt [27]=1;
number [28]=0.886;
numbertxt [28]=".886";
numberGartley [28]=1;
number [29]=1.0;
numbertxt [29]="1.";
numberFibo [29]=1;
numberPesavento [29]=1;
numberGartley [29]=1;
numberGilmorQuality [29]=1;
numberGilmorGeometric [29]=1;
number [30]=1.128;
numbertxt [30]="1.128";
numberPesavento [30]=1;
numberGartley [30]=1;
number [31]=1.236;
numbertxt [31]="1.236";
numberFibo [31]=1;
number [32]=1.272;
numbertxt [32]="1.272";
numberPesavento [32]=1;
numberGartley [32]=1;
numberGilmorQuality [32]=1;
numberGilmorGeometric [32]=1;
numberGilmorGoldenMean[32]=1;
number [33]=1.309;
numbertxt [33]="1.309";
numberExt [33]=1;
number [34]=1.414;
numbertxt [34]="1.414";
numberPesavento [34]=1;
numberGartley [34]=1;
numberGilmorHarmonic [34]=1;
numberSquare [34]=1;
number [35]=1.5;
numbertxt [35]="1.5";
// numberPesavento [35]=1;
numberGilmorArithmetic[35]=1;
number [36]=phi;
numbertxt [36]="1.618";
numberFibo [36]=1;
numberPesavento [36]=1;
numberGartley [36]=1;
numberGilmorQuality [36]=1;
numberGilmorGeometric [36]=1;
numberGilmorGoldenMean[36]=1;
number [37]=1.732;
numbertxt [37]="1.732";
numberMix [37]=1;
numberGilmorQuality [37]=1;
numberGilmorArithmetic[37]=1;
numberCube [37]=1;
number [38]=1.75;
numbertxt [38]="1.75";
numberGilmorQuality [38]=1;
number [39]=1.902;
numbertxt [39]="1.902";
numberMix [39]=1;
numberGilmorGeometric [39]=1;
number [40]=2.0;
numbertxt [40]="2.";
numberPesavento [40]=1;
numberGartley [40]=1;
numberGilmorQuality [40]=1;
numberGilmorHarmonic [40]=1;
numberSquare [40]=1;
number [41]=2.058;
numbertxt [41]="2.058";
numberGilmorGeometric [41]=1;
numberGilmorGoldenMean[41]=1;
number [42]=2.236;
numbertxt [42]="2.236";
numberGartley [42]=1;
numberGilmorQuality [42]=1;
numberRectangle [42]=1;
number [43]=2.288;
numbertxt [43]="2.288";
numberExt [43]=1;
number [44]=2.5;
numbertxt [44]="2.5";
numberGilmorQuality [44]=1;
number [45]=2.618;
numbertxt [45]="2.618";
numberPesavento [45]=1;
numberGartley [45]=1;
numberGilmorQuality [45]=1;
numberGilmorGeometric [45]=1;
numberGilmorGoldenMean[45]=1;
number [46]=2.828;
numbertxt [46]="2.828";
numberGilmorHarmonic [46]=1;
numberSquare [46]=1;
number [47]=3.0;
numbertxt [47]="3.0";
numberGilmorQuality [47]=1;
numberGilmorArithmetic[47]=1;
numberCube [47]=1;
number [48]=3.142;
numbertxt [48]="3.142";
numberGartley [48]=1;
number [49]=3.236;
numbertxt [49]="3.236";
numberExt [49]=1;
number [50]=3.33;
numbertxt [50]="3.33";
numberGilmorQuality [50]=1;
numberGilmorGeometric [50]=1;
numberGilmorGoldenMean[50]=1;
numberExt [50]=1;
number [51]=3.464;
numbertxt [51]="3.464";
numberExt [51]=1;
number [52]=3.618;
numbertxt [52]="3.618";
numberGartley [52]=1;
number [53]=4.0;
numbertxt [53]="4.";
numberPesavento [53]=1;
numberGilmorHarmonic [53]=1;
numberSquare [53]=1;
number [54]=4.236;
numbertxt [54]="4.236";
numberFibo [54]=1;
numberGilmorQuality [54]=1;
numberGilmorGeometric [54]=1;
numberExt [54]=1;
number [55]=4.472;
numbertxt [55]="4.472";
numberExt [55]=1;
number [56]=5.0;
numbertxt [56]="5.";
numberRectangle [56]=1;
number [57]=5.2;
numbertxt [57]="5.2";
numberCube [57]=1;
number [58]=5.388;
numbertxt [58]="5.388";
numberGilmorGeometric [58]=1;
number [59]=5.657;
numbertxt [59]="5.657";
numberGilmorHarmonic [59]=1;
numberSquare [59]=1;
number [60]=6.0;
numbertxt [60]="6.";
numberGilmorArithmetic[60]=1;
number [61]=6.854;
numbertxt [61]="6.854";
numberGilmorQuality [61]=1;
numberGilmorGeometric [61]=1;
number [62]=8.0;
numbertxt [62]="8.";
numberGilmorHarmonic [62]=1;
number [63]=9.0;
numbertxt [63]="9.";
numberCube [63]=1;
/*
number []=;
numbertxt []=;
// ExtFiboType=0
numberFibo []=;
// 0
numberPesavento []=;
// 1
numberGartley []=;
// 2
numberMix []=;
// 3
numberGilmorQuality []=;
// 4
numberGilmorGeometric []=;
// 5
numberGilmorHarmonic []=;
// 6
numberGilmorArithmetic[]=;
// 7
numberGilmorGoldenMean[]=;
// 8
numberSquare []=;
// 9
numberCube []=;
// 10
numberRectangle []=;
// 11
numberExt []=;
*/
}
//--------------------------------------------------------
// Ñîçäàåì ìàññèâû ñ ÷èñëàìè. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Îïðåäåëåíèå çíà÷åíèé è öâåòà ÷èñåë äëÿ ïàòòåðíîâ Ïåñàâåíòî. Íà÷àëî.
//--------------------------------------------------------
void Pesavento_patterns()
{
if (ExtFiboType==1)
{
switch (ExtFiboChoice)
{
case 0 : {search_number(numberPesavento, ExtPesavento) ;break;}
case 1 : {search_number(numberGartley, ExtGartley886) ;break;}
case 2 : {search_number(numberGartley, ExtGartley886) ;break;}
case 3 : {search_number(numberGilmorQuality, ExtPesavento) ;break;}
case 4 : {search_number(numberGilmorGeometric, ExtPesavento) ;break;}
case 5 : {search_number(numberGilmorHarmonic, ExtPesavento) ;break;}
case 6 : {search_number(numberGilmorArithmetic, ExtPesavento) ;break;}
case 7 : {search_number(numberGilmorGoldenMean, ExtPesavento) ;break;}
case 8 : {search_number(numberSquare, ExtPesavento) ;break;}
case 9 : {search_number(numberCube, ExtPesavento) ;break;}
case 10 : {search_number(numberRectangle, ExtPesavento) ;break;}
case 11 : {search_number(numberExt, ExtPesavento) ;break;}
}
}
else
{
search_number(numberFibo, ExtPesavento);
}
}
//--------------------------------------------------------
// Îïðåäåëåíèå çíà÷åíèé è öâåòà ÷èñåë äëÿ ïàòòåðíîâ Ïåñàâåíòî. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ïîèñê ÷èñëà äëÿ ïàòòåðíîâ Ïåñàâåíòî. Íà÷àëî.
//--------------------------------------------------------
void search_number(int arr[], color cPattern)
{
int ki;
colorPPattern=ExtNotFibo;
if (ExtFiboChoice!=2)
{
if (ExtDeltaType==2) for (ki=kiPRZ;ki<=63;ki++)
{
if (arr[ki]>0)
{
if (MathAbs((number[ki]-kj)/number[ki])<=ExtDelta)
{kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;}
}
}
if (ExtDeltaType==1) for (ki=kiPRZ;ki<=63;ki++)
{
if (arr[ki]>0)
{
if (MathAbs(number[ki]-kj)<=ExtDelta)
{kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;}
}
}
}
else
{
if (ExtDeltaType==2) for (ki=kiPRZ;ki<=63;ki++)
{
if (arr[ki]>0)
{
if (MathAbs((number[ki]-kj)/number[ki])<=ExtDelta)
{kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;}
}
else if (numberMix[ki]>0)
if (MathAbs((number[ki]-kj)/number[ki])<=ExtDelta)
{kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=ExtPesavento; break;}
}
if (ExtDeltaType==1) for (ki=kiPRZ;ki<=63;ki++)
{
if (arr[ki]>0)
{
if (MathAbs(number[ki]-kj)<=ExtDelta)
{kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=cPattern; break;}
}
else if (numberMix[ki]>0)
if (MathAbs(number[ki]-kj)<=ExtDelta)
{kk=number[ki]; txtkk=numbertxt[ki]; k2=-1; colorPPattern=ExtPesavento; break;}
}
}
}
//--------------------------------------------------------
// Ïîèñê ÷èñëà äëÿ ïàòòåðíîâ Ïåñàâåíòî. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Îòïðàâêà ñîîáùåíèÿ íà ýëåêòðîííóþ ïî÷òó. Íà÷àëî.
//--------------------------------------------------------
void _SendMail(string subject, string some_text)
{
SendMail(subject, some_text);
}
//--------------------------------------------------------
// Îòïðàâêà ñîîáùåíèÿ íà ýëåêòðîííóþ ïî÷òó. Êîíåö.
//--------------------------------------------------------
//--------------------------------------------------------
// Ïðåîáðàçîâàíèå ñòðîêè â öâåò. Íà÷àëî.
// Ôóíêöèþ íàïèñàë Integer. http://forum.mql4.com/ru/7134
//--------------------------------------------------------
color fStrToColor(string aName){
color tColor[]={ Black, DarkGreen, DarkSlateGray, Olive, Green, Teal, Navy, Purple,
Maroon, Indigo, MidnightBlue, DarkBlue, DarkOliveGreen, SaddleBrown,
ForestGreen, OliveDrab, SeaGreen, DarkGoldenrod, DarkSlateBlue,
Sienna, MediumBlue, Brown, DarkTurquoise, DimGray, LightSeaGreen,
DarkViolet, FireBrick, MediumVioletRed, MediumSeaGreen, Chocolate,
Crimson, SteelBlue, Goldenrod, MediumSpringGreen, LawnGreen,
CadetBlue, DarkOrchid, YellowGreen, LimeGreen, OrangeRed, DarkOrange,
Orange, Gold, Yellow, Chartreuse, Lime, SpringGreen, Aqua, DeepSkyBlue,
Blue, Magenta, Red, Gray, SlateGray, Peru, BlueViolet, LightSlateGray,
DeepPink, MediumTurquoise, DodgerBlue, Turquoise, RoyalBlue, SlateBlue,
DarkKhaki, IndianRed, MediumOrchid, GreenYellow, MediumAquamarine,
DarkSeaGreen, Tomato, RosyBrown, Orchid, MediumPurple, PaleVioletRed,
Coral, CornflowerBlue, DarkGray, SandyBrown, MediumSlateBlue, Tan,
DarkSalmon, BurlyWood, HotPink, Salmon, Violet, LightCoral, SkyBlue,
LightSalmon, Plum, Khaki, LightGreen, Aquamarine, Silver, LightSkyBlue,
LightSteelBlue, LightBlue, PaleGreen, Thistle, PowderBlue, PaleGoldenrod,
PaleTurquoise, LightGray, Wheat, NavajoWhite, Moccasin, LightPink,
Gainsboro, PeachPuff, Pink, Bisque, LightGoldenrod, BlanchedAlmond,
LemonChiffon, Beige, AntiqueWhite, PapayaWhip, Cornsilk, LightYellow,
LightCyan, Linen, Lavender, MistyRose, OldLace, WhiteSmoke, Seashell,
Ivory, Honeydew, AliceBlue, LavenderBlush, MintCream, Snow, White
};
string tName[]={ "Black", "DarkGreen", "DarkSlateGray", "Olive", "Green", "Teal", "Navy", "Purple",
"Maroon", "Indigo", "MidnightBlue", "DarkBlue", "DarkOliveGreen", "SaddleBrown",
"ForestGreen", "OliveDrab", "SeaGreen", "DarkGoldenrod", "DarkSlateBlue",
"Sienna", "MediumBlue", "Brown", "DarkTurquoise", "DimGray", "LightSeaGreen",
"DarkViolet", "FireBrick", "MediumVioletRed", "MediumSeaGreen", "Chocolate",
"Crimson", "SteelBlue", "Goldenrod", "MediumSpringGreen", "LawnGreen",
"CadetBlue", "DarkOrchid", "YellowGreen", "LimeGreen", "OrangeRed", "DarkOrange",
"Orange", "Gold", "Yellow", "Chartreuse", "Lime", "SpringGreen", "Aqua", "DeepSkyBlue",
"Blue", "Magenta", "Red", "Gray", "SlateGray", "Peru", "BlueViolet", "LightSlateGray",
"DeepPink", "MediumTurquoise", "DodgerBlue", "Turquoise", "RoyalBlue", "SlateBlue",
"DarkKhaki", "IndianRed", "MediumOrchid", "GreenYellow", "MediumAquamarine",
"DarkSeaGreen", "Tomato", "RosyBrown", "Orchid", "MediumPurple", "PaleVioletRed",
"Coral", "CornflowerBlue", "DarkGray", "SandyBrown", "MediumSlateBlue", "Tan",
"DarkSalmon", "BurlyWood", "HotPink", "Salmon", "Violet", "LightCoral", "SkyBlue",
"LightSalmon", "Plum", "Khaki", "LightGreen", "Aquamarine", "Silver", "LightSkyBlue",
"LightSteelBlue", "LightBlue", "PaleGreen", "Thistle", "PowderBlue", "PaleGoldenrod",
"PaleTurquoise", "LightGray", "Wheat", "NavajoWhite", "Moccasin", "LightPink",
"Gainsboro", "PeachPuff", "Pink", "Bisque", "LightGoldenrod", "BlanchedAlmond",
"LemonChiffon", "Beige", "AntiqueWhite", "PapayaWhip", "Cornsilk", "LightYellow",
"LightCyan", "Linen", "Lavender", "MistyRose", "OldLace", "WhiteSmoke", "Seashell",
"Ivory", "Honeydew", "AliceBlue", "LavenderBlush", "MintCream", "Snow", "White"
};
aName=StringTrimLeft(StringTrimRight(aName));
for(int i=0;i<ArraySize(tName);i++){
if(aName==tName[i])return(tColor[i]);
}
return(Red);
}
//--------------------------------------------------------
// Ïðåîáðàçîâàíèå ñòðîêè â öâåò. Êîíåö.
// Ôóíêöèþ íàïèñàë Integer. http://forum.mql4.com/ru/7134
//--------------------------------------------------------
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---