Miscellaneous
0
Views
0
Downloads
0
Favorites
ZUP_beta4
//+----------------------------------------------------------------------+
//|ZigZag ñ ÷èëàìè Ïåñàâåíòî |
//|----------------------------------------------------------------------+ |
//|ExtHidden - 0 - âñå ëèíèè ñêðûòû. Îáû÷íûé ZigZag. |
//| 1 - ïîêàçûâàåò âñå ëèíèè ìåæäó ôðàêòàëàìè, ó êîòîðûõ |
//| ïðîöåíò âîññòàíîâëåíèÿ >0.21 è <5. |
//| 2 - ïîêàçûâàåò òîëüêî òå ëèíèè, ãäå ïðîöåíò âîññòàíî- |
//| âëåíèÿ ðàâåí ÷èñëàì Ïåñàâåíòî (è 0.866 äëÿ ïîñòðî- |
//| åíèÿ ïàòòåðíîâ Gartley) |
//| 3 - ïîêàçûâàåò ÷èñëà, ïåðå÷èñëåííûå â ïóíêòå 2 |
//| è ñîîòâåòñòâóþùèå ëèíèè |
//| 4 - ïîêàçûâàåò ÷èñëà íå Ïåñàâåíòî è ñîîòâåòñòâóþùèå ëèíèè |
//| |
//| |
//|ExtFractal - êîëè÷åñòâî ôðàêòàëîâ (ìàêñèìóìîâ, ìèíèìóìîâ), |
//| îò êîòîðûõ èäóò ëèíèè ê äðóãèì ôðàêòàëàì |
//| |
//|ExtFractalEnd - êîëè÷åñòâî ôðàêòàëîâ, ê êîòîðûì èäóò ëèíèè |
//| äàëüøå ýòîãî ôðàêòàëà ñîåäèíÿþùèõ ëèíèé íå áóäåò |
//| Åñëè ExtFractalEnd=0 òî ïîñëåäíèé ôðàêòàë ðàâåí |
//| ìàêñèìàëüíîìó ÷èñëó ôðàêòàëîâ. |
//| Ìèíèìàëüíîå çíà÷åíèå ExtFractalEnd=5 |
//| |
//|ExtDeltaType - 0 - âûâîäÿòñÿ ïðîöåíòû âîññòàíîâëåíèÿ "êàê åñòü" |
//| 1 - ðàñ÷åò äîïóñêà (%-÷èñëî Ïåñàâåíòî)<ExtDelta |
//| 2 - ((%-÷èñëî Ïåñàâåíòî)/÷èñëî Ïåñàâåíòî)<ExtDelta |
//| |
//| |
//|ExtDelta - (äîïóñê) îòêëîíåíèå â ðàñ÷åòå. Çàäàåò âåëè÷èíó |
//| ïîòåíöèàëüíîé ðàçâîðîòíîé çîíû. |
//| äîëæíî áûòü 0<ExtDelta<1 |
//| |
//|ExtFibo - true - âûâîäÿòñÿ óðîâíè Ôèáîíà÷÷è |
//| false - íå âûâîäÿòñÿ óðîâíè Ôèáîíà÷÷è (îòíîñèòåëüíî |
//| ïðåäïîñëåäíåãî êîëåíà ZigZag-a) |
//| |
//+----------------------------------------------------------------------+
#property copyright "nen@.....ru"
#property link "http://onix-trade.net/forum/index.php?act=post&do=reply_post&f=9&t=118"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int ExtDepth=12;
extern int ExtHidden=1;
extern int ExtFractal=10;
extern int ExtFractalEnd=10;
extern double ExtDelta=0.04;
extern int ExtDeltaType=1;
extern bool ExtFibo=false;
extern color ExtLine=DarkBlue;
extern color ExtPesavento=Yellow;
extern color ExtGartley866=GreenYellow;
extern color ExtNotFibo=SlateGray;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
//---- indicator buffers
// Ìàññèâ äëÿ îòðèñîâêè ZigZag
double zz[];
// Ìàññèâ ìèíèìóìîâ ÷åðíîâîé
double ExtMapBuffer[];
// Ìàññèâ ìàêñèìóìîâ ÷åðíîâîé
double ExtMapBuffer2[];
// Ìàññèâ ÷èñåë Ïåñàâåíòî (Ôèáû è ìîäèôèöèðîâàííûå Ôèáû)
double fi[]={0.382, 0.5, 0.618, 0.707, 0.786, 0.841, 0.886, 1.0, 1.128, 1.272, 1.414, 1.5, 1.618, 2.0, 2.414, 2.618, 4.0};
string fitxt[]={ ".382", "0.5", ".618", ".707", ".786", ".841", ".886", "1.0", "1.128", "1.272", "1.414", "1.5", "1.618", "2.0", "2.414", "2.618", "4.0" };
// Ìàòðèöà äëÿ ïîèñêà èñ÷åçíóâøèõ áàðîâ afr - ìàññèâ çíà÷åíèé âðåìåíè ïÿòè ïîñëåäíèõ ôðàêòàëîâ + îäíà ÿ÷åéêà - ïðèçíàê èíèöèàëèçàöèè
// afrl - ìèíèìóìû, afrh - ìàêñèìóìû
int afr[]={0.0,0.0,0.0,0.0,0.0,0.0};
double afrl[]={0.0,0.0,0.0,0.0,0.0}, afrh[]={0.0,0.0,0.0,0.0,0.0};
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,countLow1,countHigh1,shift,shift1;
// Âðåìÿ ñâå÷è ñ ïåðâûì îò íóëåâîãî áàðà ôðàêòàëîì
int timeFr1,timeFr1new,timeFr2Low,timeFr2High;
// Êîëè÷åñòâî ëèíèé, èäóùèõ îò ïåðâîãî îò íóëåâîãî áàðà ôðàêòàëà ê ñîñåäíèì ôðàêòàëàì
int countLineFr1;
// Ñ÷åò÷èê ôðàêòàëîâ
int countFr;
// Áàð, äî êîòîðîãî íàäî ðèñîâàòü ñîåäèíèòåëüíûå ëèíèè îò íóëåâîãî áàðà
int countBarEnd=0;
// Áàð, äî êîòîðîãî íàäî ïåðåñ÷èòûâàòü îò íóëåâîãî áàðà
int numBar=0;
// Íîìåð îáúåêòà
int numOb;
//Màêñèìóì èëè ìèíèìóì áàðà ïåðâîãî ôðàêòàëà (è ïðåäûäóùåãî ôðàêòàëà)
double hFr1, lFr1, hFr2, lFr2;
// Ôëàãè
// flagFrNew=true - îáðàçîâàëñÿ íîâûé ôðàêòàë èëè ïåðâûé ôðàêòàë ñìåñòèëñÿ íà äðóãîé áàð. =false - ïî óìîë÷àíèþ.
// flagFr=true - ïîñëåäíèé ôðàêòàë ìàêñèìóì. false - ïîñëåäíèé ôðàêòàë ìèíèìóì.
bool flagLow,flagHigh,flagFr,flagFrNew=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(5);
//---- drawing settings
SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
SetIndexBuffer(0,zz);
SetIndexBuffer(1,ExtMapBuffer);
SetIndexBuffer(2,ExtMapBuffer2);
SetIndexEmptyValue(0,0.0);
ArraySetAsSeries(zz,true);
ArraySetAsSeries(ExtMapBuffer,true);
ArraySetAsSeries(ExtMapBuffer2,true);
//---- indicator short name
IndicatorShortName("ZZ("+ExtDepth+")");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Äåèíèöèàëèçàöèÿ. Óäàëåíèå âñåõ òðåíäîâûõ ëèíèé è òåêñòîâûõ îáúåêòîâ
//+------------------------------------------------------------------+
int deinit(){ ObjectsDeleteAll(0,2); ObjectsDeleteAll(0,21); ObjectDelete("Fibo"); return(0);}
//********************************************************
int start()
{
int counted_bars=IndicatorCounted();
if( counted_bars<0 )
{
Alert("Ñáîé ðàñ÷åòà èíäèêàòîðà");
return(-1);
}
// ZigZag èç ÌÒ. Íà÷àëî.
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,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=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
}
}
}
ExtMapBuffer[shift]=val;
//--- high
val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,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=ExtMapBuffer2[shift+back];
if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;
}
}
}
ExtMapBuffer2[shift]=val;
}
// final cutting
lasthigh=-1; lasthighpos=-1;
lastlow=-1; lastlowpos=-1;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
curlow=ExtMapBuffer[shift];
curhigh=ExtMapBuffer2[shift];
if((curlow==0)&&(curhigh==0)) continue;
//---
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
else ExtMapBuffer2[shift]=0;
}
//---
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=-1;
}
//----
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
else ExtMapBuffer[shift]=0;
}
//---
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
}
lasthigh=-1;
}
}
countLow1=0;
countHigh1=0;
for(shift=Bars-1; shift>=0; shift--)
{
zz[shift]=ExtMapBuffer[shift];
if(shift>=Bars-ExtDepth) {ExtMapBuffer2[shift]=0.0;ExtMapBuffer[shift]=0.0; zz[shift]=0.0;}
else
{
res=ExtMapBuffer2[shift];
if(res!=0.0) zz[shift]=res;
}
if (ExtMapBuffer[shift]>0.0) {countLow1++;}
if (ExtMapBuffer2[shift]>0.0) {countHigh1++;}
}
// ZigZag èç ÌÒ. Êîíåö. Äîáàâëåí â ZigZag ïîäñ÷åò êîëè÷åñòâà ôðàêòàëàâ countLow1 è countHigh1.
// Äàëåå èäåò "äîîñíàñòêà" ZigZag-à.
// Ïðîâåðêà ïðàâèëüíîñòè ââåäåííûõ âíåøíèõ ïåðåìåííûõ
if (countBarEnd==0)
{
if (ExtDelta<=0) ExtDelta=0.001;
if (ExtDelta>1) ExtDelta=0.999;
if (ExtHidden<0) ExtHidden=0;
if (ExtHidden>4) ExtHidden=4;
if (ExtDeltaType<0) ExtDeltaType=0;
if (ExtDeltaType>3) ExtDeltaType=3;
if (ExtFractalEnd>0)
{
if (ExtFractalEnd<5) ExtFractalEnd=5;
if (countLow1>ExtFractalEnd) countLow1=ExtFractalEnd;
if (countHigh1>ExtFractalEnd) countHigh1=ExtFractalEnd;
}
}
if (flagFrNew)
{
countLow1=0;
countHigh1=0;
for(shift=0; shift<=numBar; shift++)
{
if (ExtMapBuffer[shift]>0.0) {countLow1++;}
if (ExtMapBuffer2[shift]>0.0) {countHigh1++;}
}
counted_bars=3;
}
if (Bars - counted_bars>2 && ExtHidden>0)
{
// Èíèöèàëèçàöèÿ ìàòðèöû
if (afr[5]<1)
{
k=0;
for (shift=0; shift<Bars && k<5; shift++)
{
if (zz[shift]>0)
{
afr[k]=Time[shift];
if (zz[shift]==ExtMapBuffer[shift]) {afrl[k]=Low[shift]; afrh[k]=0.0;}
if (zz[shift]==ExtMapBuffer2[shift]) {afrh[k]=High[shift]; afrl[k]=0.0;}
k++;
}
}
afr[k]=1;
if (ExtFibo)
{
if (afrl[1]>0) ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrh[2],afr[1],afrl[1]);
else ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrl[2],afr[1],afrh[1]);
}
}
for (shift=0; shift<Bars; shift++) // Ïîèñê âðåìåíè áàðà ïåðâîãî ôðàêòàëà, ñ÷èòàÿ îò íóëåâîãî áàðà
{
if (zz[shift]>0.0)
{
timeFr1=Time[shift];
if (ExtMapBuffer[shift]==zz[shift]) {lFr1=Low[shift]; hFr1=0.0;}
if (ExtMapBuffer2[shift]==zz[shift]) {hFr1=High[shift]; lFr1=0.0;}
break;
}
}
// Ïîèñê íîìåðà áàðà, äî êîòîðîãî áóäóò ðèñîâàòüñÿ ñîåäèíèòåëüíûå ëèíèè
if (countBarEnd==0)
{
if (ExtFractalEnd>0)
{
k=ExtFractalEnd;
for (shift=0; shift<Bars && k>0; shift++) if (zz[shift]>0 && ExtMapBuffer2[shift]>0) {countBarEnd=shift; k--;}
}
else countBarEnd=Bars-3;
}
//-----------1 Îòðèñîâêà ìàêñèìóìîâ. Íà÷àëî.
//+--------------------------------------------------------------------------+
//| Âûâîä ñîåäèíÿþùèõ ëèíèé è ÷èñåë Ïåñàâåíòî è 0.866 äëÿ ìàêñèìóìîâ ZigZag-a
//| Îòðèñîâêà èäåò îò íóëåâîãî áàðà
//+--------------------------------------------------------------------------+
numLowPrim=0; numLowLast=0;
numHighPrim=0; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
flagHigh=false;
Angle=-100;
if (flagFrNew) countFr=1;
else countFr=ExtFractal;
for (k=0; (k<Bars-1 && countHigh1>0 && countFr>0); k++)
{
if (ExtMapBuffer[k]>0.0 && LowPrim==0.0 && HighPrim>0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]<LowPrim && HighPrim>0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
if (ExtMapBuffer2[k]>0.0 && ExtMapBuffer2[k]==zz[k])
{
if (HighPrim>0)
{
if (HighLast>0)
{
if (flagHigh)
{
if (ExtMapBuffer2[k]>HighLast) {HighLast=High[k]; numHighLast=k;}
}
else
{
if (ExtMapBuffer2[k]>HighPrim) flagHigh=true;
HighLast=High[k];
numHighLast=k;
}
}
else {numHighLast=k; HighLast=High[k];}
HL=High[numHighLast]-Low[numLowPrim];
kj=(HighPrim-HighLast)*10000/(numHighLast-numHighPrim);
if (HL>0 && (Angle>kj || Angle==-100)) // Ïðîâåðêà óãëà íàêëîíà ëèíèè
{
Angle=kj;
// Ñîçäàíèå ëèíèè è òåêñòîâîãî îáúåêòà
HLp=High[numHighPrim]-Low[numLowPrim];
k1=MathCeil((numHighPrim+numHighLast)/2);
kj=HLp/HL;
if (kj>0.21 && kj<=5)
{
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
kk=kj;
k2=1;
if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
{
if (ExtHidden!=4 && ExtHidden>0)
{
ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
if (kk==0.886) // Gartley
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);
else
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
{
if (ExtHidden==1 || ExtHidden==4)
{
ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
}
}
if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
{
ObjectCreate("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TREND,0,Time[numHighPrim],High[numHighPrim],Time[numHighLast],High[numHighLast]);
ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_RAY,false);
ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_STYLE,STYLE_DOT);
ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_COLOR,ExtLine);
}
}
}
}
else
{numHighPrim=k; HighPrim=High[k];}
}
// Ïåðåõîä íà ñëåäóþùèé ôðàêòàë
if (k>countBarEnd)
// if (k>Bars-3)
{
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;
flagHigh=false;
Angle=-100;
}
}
//-----------1 Îòðèñîâêà ìàêñèìóìîâ. Êîíåö.
//-----------2 Îòðèñîâêà ìèíèìóìîâ. Íà÷àëî.
//+-------------------------------------------------------------------------+
//| Âûâîä ñîåäèíÿþùèõ ëèíèé è ÷èñåë Ïåñàâåíòî è 0.866 äëÿ ìèíèìóìîâ ZigZag-a
//| Îòðèñîâêà èäåò îò íóëåâîãî áàðà
//+-------------------------------------------------------------------------+
numLowPrim=0; numLowLast=0;
numHighPrim=0; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
flagLow=false;
Angle=-100;
if (flagFrNew) countFr=1;
else countFr=ExtFractal;
for (k=0; (k<Bars && countLow1>0 && countFr>0); k++)
{
if (ExtMapBuffer2[k]>HighPrim && LowPrim>0) {HighPrim=High[k]; numHighPrim=k;}
if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]==zz[k])
{
if (LowPrim>0)
{
if (LowLast>0)
{
if (flagLow)
{
if (ExtMapBuffer[k]<LowLast) {LowLast=Low[k]; numLowLast=k;}
}
else
{
if (ExtMapBuffer[k]<LowPrim) flagLow=true;
LowLast=Low[k];
numLowLast=k;
}
}
else {numLowLast=k; LowLast=Low[k];}
// âûâîä ñîåäèíÿþùèõ ëèíèé è ïðîöåíòîâ âîññòàíîâëåíèÿ(÷èñåë Ïåñàâåíòî)
HL=High[numHighPrim]-Low[numLowLast];
kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);
if (HL>0 && (Angle<kj || Angle==-100)) // Ïðîâåðêà óãëà íàêëîíà ëèíèè
{
Angle=kj;
HLp=High[numHighPrim]-Low[numLowPrim];
k1=MathCeil((numLowPrim+numLowLast)/2);
kj=HLp/HL;
if (kj>0.21 && kj<=5)
{
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
kk=kj;
k2=1;
if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
{
if (ExtHidden!=4 && ExtHidden>0)
{
ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
if (kk==0.886) // Gartley
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);
else
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
{
if (ExtHidden==1 || ExtHidden==4)
ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
}
if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
{
ObjectCreate("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TREND,0,Time[numLowPrim],Low[numLowPrim],Time[numLowLast],Low[numLowLast]);
ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_RAY,false);
ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_STYLE,STYLE_DOT);
ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_COLOR,ExtLine);
}
}
}
}
else {numLowPrim=k; LowPrim=Low[k];}
}
// Ïåðåõîä íà ñëåäóþùèé ôðàêòàë
if (k>countBarEnd)
// if (k>Bars-3)
{
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;
flagLow=false;
Angle=-100;
}
}
flagFrNew=false;
numBar=0;
//-----------2 Îòðèñîâêà ìèíèìóìîâ. Êîíåö.
}
else // counted_bars<=2 Ïðîâåðêà ñìåùåíèé ôðàêòàëîâ.
// Ïðîâåðêà íà ðàçðåøåíèå âûâîäà îñíàñòêè. Íà÷àëî.
if (ExtHidden>0)
//
{
//
// Êîððåêöèÿ ñîåäèíÿþùèõ ëèíèé è ÷èñåë. Íà÷àëî.
{
// Ïîèñê âðåìåíè áàðà ïåðâîãî ôðàêòàëà, ñ÷èòàÿ îò íóëåâîãî áàðà
for (shift1=0; shift1<Bars; shift1++)
{
if (zz[shift1]>0.0)
{
timeFr1new=Time[shift1];
break;
}
}
// Ïîèñê áàðà, íà êîòîðîì áûë ïîñëåäíèé ôðàêòàë
shift=iBarShift(Symbol(),Period(),timeFr1);
// Ñðàâíåíèå òåêóùåãî çíà÷åíèÿ ôðàêòàëà ñ òåì, êîòîðûé áûë ðàíåå
// Îáðàçîâàëñÿ íîâûé ôðàêòàë
if (timeFr1new!=timeFr1)
{
flagFrNew=true;
if (shift>numBar) numBar=shift;
afr[5]=0;
}
// Ôðàêòàë íà ìàêñèìóìå ñäâèíóëñÿ íà äðóãîé áàð
if (hFr1>0 && zz[shift]==0.0)
{
flagFrNew=true;
if (shift>numBar) numBar=shift;
afr[5]=0;
}
// Ôðàêòàë íà ìèíèìóìå ñäâèíóëñÿ íà äðóãîé áàð
if (lFr1>0 && zz[shift]==0.0)
{
flagFrNew=true;
if (shift>numBar) numBar=shift;
afr[5]=0;
}
//-----------3 Ñìåñòèëñÿ ìèíèìóì èëè ìàêñèìóì, íî îñòàëñÿ íà òîì æå áàðå. Íà÷àëî.
//============= 1 ñìåñòèëñÿ ìàêñèìóì. Íà÷àëî.
if (hFr1-High[shift]!=0 && hFr1>0)
{
numLowPrim=0; numLowLast=0;
numHighPrim=shift; numHighLast=0;
LowPrim=0.0; LowLast=0.0;
HighPrim=High[shift]; HighLast=0.0;
flagHigh=false;
Angle=-100;
for (k=shift+1; k<Bars; k++)
{
if (ExtMapBuffer[k]>0.0 && LowPrim==0.0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]<LowPrim && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}
if (ExtMapBuffer2[k]>0.0 && ExtMapBuffer2[k]==zz[k])
{
if (HighLast>0)
{
if (flagHigh)
{
if (ExtMapBuffer2[k]>HighLast) {HighLast=High[k]; numHighLast=k;}
}
else
{
if (ExtMapBuffer2[k]>HighPrim) flagHigh=true;
HighLast=High[k];
numHighLast=k;
}
}
else {numHighLast=k; HighLast=High[k];}
HL=High[numHighLast]-Low[numLowPrim];
kj=(HighPrim-HighLast)*10000/(numHighLast-numHighPrim);
if (HL>0 && (Angle>kj || Angle==-100)) // Ïðîâåðêà óãëà íàêëîíà ëèíèè
{
Angle=kj;
// Ñîçäàíèå ëèíèè
HLp=High[numHighPrim]-Low[numLowPrim];
k1=MathCeil((shift+numHighLast)/2);
kj=HLp/HL;
// Ïîèñê ñòàðîé ñîåäèíèòåëüíîé ëèíèè
numOb=ObjectFind("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);
if (numOb>-1)
{
if (kj>0.21 && kj<=5)
{
// Ïåðåìåùåíèå îáúåêòîâ
ObjectMove("ph" + Time[numHighPrim] + "_" + Time[numHighLast],0,Time[numHighPrim],High[numHighPrim]);
ObjectMove("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
kk=kj;
k2=1;
if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëî Ïåñàâåíòî
if (ExtHidden!=4 && ExtHidden>0)
{
if (kk==0.886)
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);
else
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî)
if (ExtHidden==1 || ExtHidden==4)
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
}
else
{
ObjectDelete("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);
ObjectDelete("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]);
}
}
else
{
//******* Ïðîðèñîâêà íîâîé ëèíèè, åñëè îíà ïîÿâèëàñü.
if (kj>0.21 && kj<=5)
{
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìàêñèìóìàìè
kk=kj;
k2=1;
if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
{
if (ExtHidden!=4 && ExtHidden>0)
{
ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
if (kk==0.886) // Gartley
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);
else
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
{
if (ExtHidden==1 || ExtHidden==4)
{
ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));
ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
}
}
if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
{
ObjectCreate("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TREND,0,Time[numHighPrim],High[numHighPrim],Time[numHighLast],High[numHighLast]);
ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_RAY,false);
ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_STYLE,STYLE_DOT);
ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_COLOR,ExtLine);
}
}
//*******
}
}
}
}
hFr1=High[shift];
timeFr1=Time[shift];
}
//============= 1 ñìåñòèëñÿ ìàêñèìóì. Êîíåö.
//
//============= 1 ñìåñòèëñÿ ìèíèìóì. Íà÷àëî.
if (lFr1-Low[shift]!=0 && lFr1>0)
{
numLowPrim=0; numLowLast=0;
numHighPrim=shift; numHighLast=0;
LowPrim=Low[shift]; LowLast=0.0;
HighPrim=0.0; HighLast=0.0;
flagLow=false;
Angle=-100;
for (k=shift+1; k<Bars; k++)
{
if (ExtMapBuffer2[k]>HighPrim) {HighPrim=High[k]; numHighPrim=k;}
if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]==zz[k])
{
if (LowLast>0)
{
if (flagLow)
{
if (ExtMapBuffer[k]<LowLast) {LowLast=Low[k]; numLowLast=k;}
}
else
{
if (ExtMapBuffer[k]<LowPrim) flagLow=true;
LowLast=Low[k];
numLowLast=k;
}
}
else {numLowLast=k; LowLast=Low[k];}
HL=High[numHighPrim]-Low[numLowLast];
kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);
if (HL>0 && (Angle<kj || Angle==-100)) // Ïðîâåðêà óãëà íàêëîíà ëèíèè
{
Angle=kj;
HLp=High[numHighPrim]-Low[numLowPrim];
k1=MathCeil((numLowPrim+numLowLast)/2);
kj=HLp/HL;
// Ïîèñê ñòàðîé ñîåäèíèòåëüíîé ëèíèè
numOb=ObjectFind("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);
if (numOb>-1)
{
if (kj>0.21 && kj<=5)
{
// Ïåðåìåùåíèå îáúåêòîâ
ObjectMove("pl" + Time[numLowPrim] + "_" + Time[numLowLast],0,Time[numLowPrim],Low[numLowPrim]);
ObjectMove("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
kk=kj;
k2=1;
if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
{
if (ExtHidden!=4 && ExtHidden>0)
{
if (kk==0.886) // Gartley
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);
else
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
if (ExtHidden==1 || ExtHidden==4)
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
}
else
{
ObjectDelete("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);
ObjectDelete("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]);
}
}
else
{
//******* Ïðîðèñîâêà íîâîé ëèíèè, åñëè îíà ïîÿâèëàñü.
if (kj>0.21 && kj<=5)
{
// Ñîçäàíèå òåêñòîâîãî îáúåêòà (÷èñëà Ïåñàâåíòî). % âîññòàíîâëåíèÿ ìåæäó ìèíèìóìàìè
kk=kj;
k2=1;
if (ExtDeltaType==2) for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (ExtDeltaType==1) for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}
if (k2<0)
// ïðîöåíò âîññòàíîâëåíèÿ ÷èñëà Ïåñàâåíòî è 0.866
{
if (ExtHidden!=4 && ExtHidden>0)
{
ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
if (kk==0.886) // Gartley
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);
else
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);
}
}
else
// ïðîöåíò âîññòàíîâëåíèÿ (íå Ïåñàâåíòî è 0.866)
{
if (ExtHidden==1 || ExtHidden==4)
ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));
ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);
}
if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))
{
ObjectCreate("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TREND,0,Time[numLowPrim],Low[numLowPrim],Time[numLowLast],Low[numLowLast]);
ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_RAY,false);
ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_STYLE,STYLE_DOT);
ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_COLOR,ExtLine);
}
}
//*******
}
}
}
}
lFr1=Low[shift];
timeFr1=Time[shift];
}
//============= 1 ñìåñòèëñÿ ìèíèìóì. Êîíåö.
//-----------3 Ñìåñòèëñÿ ìèíèìóì èëè ìàêñèìóì, íî îñòàëñÿ íà òîì æå áàðå. Êîíåö.
// Ïîèñê èñ÷åçíóâøèõ ôðàêòàëîâ è óäàëåíèå ëèíèé, èñõîäÿùèõ îò ýòèõ ôðàêòàëîâ. Ïåðåçàïèñü ìàòðèöû.
for (k=0; k<5; k++)
{
if (afrl[k]>0)
{
// Ïîèñê áàðà, íà êîòîðîì áûë ýòîò ôðàêòàë
shift=iBarShift(Symbol(),Period(),afr[k]);
if (zz[shift]==0)
{
if (shift>numBar) numBar=shift;
afr[5]=0;
numLowPrim=shift; numLowLast=0;LowLast=10000000;
for (k1=shift+1; k1<Bars; k1++)
{
if (ExtMapBuffer[k1]<LowLast && ExtMapBuffer[k1]>0)
{
LowLast=Low[k1]; numLowLast=k1;
numOb=ObjectFind("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);
if (numOb>-1)
{
ObjectDelete("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);
ObjectDelete("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]);
}
}
}
}
}
if (afrh[k]>0)
{
// Ïîèñê áàðà, íà êîòîðîì áûë ýòîò ôðàêòàë
shift=iBarShift(Symbol(),Period(),afr[k]);
if (zz[shift]==0)
{
if (shift>numBar) numBar=shift;
afr[5]=0;
numHighPrim=shift; numHighLast=0;HighLast=0.0;
for (k1=shift+1; k1<Bars; k1++)
{
if (ExtMapBuffer2[k1]>HighLast)
{
HighLast=High[k1]; numHighLast=k1;
numOb=ObjectFind("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);
if (numOb>-1)
{
ObjectDelete("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);
ObjectDelete("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]);
}
}
}
}
}
}
// Ïåðåçàïèñü ìàòðèöû
if (afr[5]<1)
if (ExtFibo) ObjectDelete("Fibo");
{
k=0;
for (shift=0; shift<Bars && k<5; shift++)
{
if (zz[shift]>0)
{
afr[k]=Time[shift];
if (zz[shift]==ExtMapBuffer[shift]) {afrl[k]=Low[shift]; afrh[k]=0.0;}
if (zz[shift]==ExtMapBuffer2[shift]) {afrh[k]=High[shift]; afrl[k]=0.0;}
k++;
}
}
afr[k]=1;
if (ExtFibo)
{
if (afrl[1]>0) ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrh[2],afr[1],afrl[1]);
else ObjectCreate("fibo",OBJ_FIBO,0,afr[2],afrl[2],afr[1],afrh[1]);
}
}
// Ïðîâåðêà íà ðàçðåøåíèå âûâîäà îñíàñòêè. Êîíåö.
//
}
//
// Êîððåêöèÿ. Êîíåö.
}
// end
}
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
---