الاخ كشكول.
هذي المعادله نماذج هارمونيك
_SECTION_BEGIN("Harmonic Patterns");
//ABDULKAREEM ALGHAMDI - JUNE 2012
Percentage = Param("Percentage", 5, 1, 100, 0.1);
ShowTarget = ParamList("Show Target From:", "Off|C-D|A-D");
ShowTargetExt = ParamToggle("Show Target Extensions?", "No|Yes");
Back = Param("Look Back", 1, 1, 100, 1);
Currection = Param("Currection:", 50, 5, 100,1);
//----------------------------------------------------------------------------------------
Ax = Bx = Cx = Dx = Xx= 0;
Ay = By = Cy = Dy = Xy = 0;
BCon = SCon = XCon = 0;
//----------------------------------------------------------------------------------------
procedure SetupPattern(Per, Back)
{
BackL = LastValue(TroughBars(L, Per, Back ));
BackH = LastValue(PeakBars(H, Per, Back ));
BackL2 = LastValue(TroughBars(L, Per, Back +1));
BackH2 = LastValue(PeakBars(H, Per, Back+1));
BackL3 = LastValue(TroughBars(L, Per, Back +2));
BackH3 = LastValue(PeakBars(H, Per, Back +2));
if(BackL < BackH)
{
if(BackL2 < BackH)
for(i=Back+1; BackL2 < BackH AND i < Back+Currection; i++)
BackL2 = LastValue(TroughBars(L, Per, Back + i));
if(BackH2 < BackL2)
for(i=Back+1; BackH2 < BackL2 AND i < Back+Currection; i++)
BackH2 = LastValue(PeakBars(H, Per, Back + i));
if(BackL3 < BackH2)
for(i=Back+2; BackL3 < BackH2 AND i < Back+Currection; i++)
BackL3 = LastValue(TroughBars(L, Per, Back + i));
if(BackH3 < BackL3)
for(i=Back+2; BackH3 < BackL3 AND i < Back+Currection; i++)
BackH3 = LastValue(PeakBars(H, Per, Back + i));
}
else
{
if(BackH2 < BackL)
for(i=Back+1; BackH2 < BackL AND i < Back+Currection; i++)
BackH2 = LastValue(PeakBars(H, Per, Back + i));
if(BackL2 < BackH2)
for(i=Back+1; BackL2 < BackH2 AND i < Back+Currection; i++)
BackL2 = LastValue(TroughBars(L, Per, Back + i));
if(BackH3 < BackL2)
for(i=Back+2; BackH3 < BackL2 AND i < Back+Currection; i++)
BackH3 = LastValue(PeakBars(H, Per, Back + i));
if(BackL3 < BackH3)
for(i=Back+2; BackL3 < BackH3 AND i < Back+Currection; i++)
BackL3 = LastValue(TroughBars(L, Per, Back + i));
}
Ax = BarCount-1-LastValue(Max(BackH2, BackL2));
Bx = BarCount-1-LastValue(Min(BackL2, BackH2));
Cx = BarCount-1-LastValue(Max(BackH, BackL));
Dx = BarCount-1-LastValue(Min(BackL, BackH));
if(BackL > BackH)
{
Ay = LastValue((Ref(L, -BackL2)));
By = LastValue((Ref(H, -BackH2)));
Cy = LastValue((Ref(L, -BackL)));
Dy = LastValue((Ref(H, -BackH)));
Xy = LastValue((Ref(H, -BackH3)));
Xx = BarCount-1-BackH3;
XCon = Xy > By AND BackH3 > BackL2;
Con = ((By-Cy)/(By-Ay)) > 0.3 AND ((By-Cy)/(By-Ay)) < 0.8;
Con = Con AND (Ax < Bx) AND (Bx < Cx) AND (Cx < Dx) AND (Ay < Cy) AND (Cy <
By) AND (By < Dy);
Con = Con AND BackL2 > BackH2 AND BackL > BackH;
Con = Con AND ((By-Cy)/(By-Ay)) >=0.3 AND ((Dy-Cy)/(By-Cy))>=1;
SCon = Con AND ((Dy-Cy)/(Xy-Ay)) >=0.5 AND ((By-Ay)/(Xy-Ay))>=0.3;
}
else
{
Ay = LastValue((Ref(H, -BackH2)));
By = LastValue((Ref(L, -BackL2)));
Cy = LastValue((Ref(H, -BackH)));
Dy = LastValue((Ref(L, -BackL)));
Xy = LastValue((Ref(L, -BackL3)));
Xx = BarCount-1-BackL3;
XCon = Xy < By AND BackL3 > BackH2;
Con = ((Cy-By)/(Ay-By)) > 0.5 AND ((Cy-By)/(Ay-By)) < 0.8;
Con = Con AND (Ax < Bx) AND (Bx < Cx) AND (Cx < Dx) AND (Ay > Cy) AND (Cy >
By) AND (By > Dy);
Con = Con AND BackL2 < BackH2 AND BackL < BackH;
Con = Con AND ((Cy-Dy)/(Ay-Xy))>=0.3 AND ((Ay-By)/(Ay-Xy)) >=0.3;
BCon = Con AND ((Cy-Dy)/(Ay-By)) >=0.3 AND ((Cy-Dy)/(Cy-By)) >=1;
}
}
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
SetupPattern(Percentage, Back) ;
Color = IIf(BCon, colorGold, colorRed);
//----------------------------------------------------------------------------------------
if(BCon OR SCon)
{
Plot(LineArray(Ax, Ay, Bx, By), "", Color);//AB
Plot(LineArray(Bx, By, Cx, Cy), "", Color);//BC
Plot(LineArray(Cx, Cy, Dx, Dy), "", Color);//CD
Plot(LineArray(Ax, Ay, Cx, Cy),"", Color, styleDashed);//AC
Plot(LineArray(Bx, By, Dx, Dy),"", Color, styleDashed);//BD
PlotText("A"+StrFormat("=%.2f", Ay), Ax, Ay, colorWhite);
PlotText("B"+StrFormat("=%.2f", By), Bx, By, colorWhite);
PlotText("C"+StrFormat("=%.2f", Cy), Cx, Cy, colorWhite);
PlotText("D"+StrFormat("=%.2f", Dy), Dx, Dy, colorWhite);
PlotText(StrFormat("%.3f", abs((Cy-By)/(Ay-By))), (Ax+Cx)/2, (Ay+Cy)/2,
colorWhite);
PlotText(StrFormat("%.3f", abs((Dy-Cy)/(By-Cy))), (Bx+Dx)/2, (By+Dy)/2,
colorWhite);
if(XCon)
{
Plot(LineArray(Xx, Xy, Ax, Ay), "", Color);
PlotText("X"+StrFormat("=%.2f", Xy), Xx, Xy, colorWhite);
Plot(LineArray(Xx, Xy, Bx, By),"", Color, styleDashed);
Plot(LineArray(Xx, Xy, Dx, Dy),"", Color, styleDashed);
PlotText(StrFormat("%.3f", (Ay-By)/(Ay-Xy)), (Xx+Bx)/2, (Xy+By)/2,
colorWhite);
PlotText(StrFormat("%.3f", (Cy-Dy)/(Ay-Xy)), (Xx+Dx)/2, (Xy+Dy)/2,
colorWhite);
}
if(ShowTarget!="Off")
{
if(ShowTarget=="C-D")
{
FarX = Cx;
FarY = Cy;
}
else
{
FarX = Ax;
FarY = Ay;
}
NearX = Dx;
NearY = Dy;
RangeX = FarX-NearX;
RangeY = FarY-NearY;
Plot(LineArray(FarX, FarY, NearX, NearY), "", colorGreen, styleDashed);
Plot(LineArray(NearX+(RangeX*0.236),NearY+(RangeY*0.236),BarCount-1,NearY+(RangeY*0.236)),
"", colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*0.236))
,BarCount,NearY+(RangeY*0.236), colorWhite);
Plot(LineArray(NearX+(RangeX*0.382),NearY+(RangeY*0.382),BarCount-1,NearY+(RangeY*0.382)),
"", colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*0.382))
,BarCount,NearY+(RangeY*0.382), colorWhite);
Plot(LineArray(NearX+(RangeX*0.5),NearY+(RangeY*0.5),BarCount-1,NearY+(RangeY*0.5)),
"", colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*0.5)) ,BarCount,NearY+(RangeY*0.5),
colorWhite);
Plot(LineArray(NearX+(RangeX*0.618),NearY+(RangeY*0.618),BarCount-1,NearY+(RangeY*0.618)),
"", colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*0.618))
,BarCount,NearY+(RangeY*0.618), colorWhite);
Plot(LineArray(NearX+(RangeX*0.786),NearY+(RangeY*0.786),BarCount-1,NearY+(RangeY*0.786)),
"", colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*0.786))
,BarCount,NearY+(RangeY*0.786), colorWhite);
Plot(LineArray(FarX,FarY,BarCount-1,FarY), "", colorGreen,
styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",FarY) ,BarCount,FarY, colorWhite);
Plot(LineArray(NearX,NearY,BarCount-1,NearY), "", colorGreen,
styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY) ,BarCount,NearY, colorWhite);
if(ShowTargetExt)
{
Plot(LineArray(FarX,NearY+(RangeY*1.27),BarCount-1,NearY+(RangeY*1.27)), "",
colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*01.27))
,BarCount,NearY+(RangeY*1.27), colorWhite);
Plot(LineArray(FarX,NearY+(RangeY*1.618),BarCount-1,NearY+(RangeY*1.618)),
"", colorGreen, styleDashed|styleNoLabel);
PlotText(StrFormat("%.2f",NearY+(RangeY*01.618))
,BarCount,NearY+(RangeY*1.618), colorWhite);
}
}
}
//----------------------------------------------------------------------------------------
Plot(C, "", IIf(O>C, colorRed, colorGreen), ParamStyle("Price
Style",styleBar,maskPrice));
Title = Name()+" - "+Interval(2)+" - "+"{{DATE}} - "+StrFormat("Open=%.2f,
High=%.2f, Low=%.2f, Close=%.2f", O, H, L, C)+StrFormat(" (%.2f %.2f%%)",
C-Ref(C, -1), SelectedValue(ROC(C, 1)));
_SECTION_END();
اضف هذي عليها معادلة التلوين و خليها اخر المعادله
PlotOHLC(LineArray(Ax, Ay, Bx, By),LineArray(Ax, Ay, Bx, By),LineArray(Ax, Ay, Cx, Cy),LineArray(Ax, Ay, Cx, Cy),"",colorDarkRed,styleCloud+styleNoLabel);
PlotOHLC(LineArray(Bx, By, Cx, Cy),LineArray(Bx, By, Cx, Cy),LineArray(Ax, Ay, Cx, Cy),LineArray(Ax, Ay, Cx, Cy),"",colorDarkRed,styleCloud+styleNoLabel);