قديم 13-06-2018, 08:55 AM
  المشاركه #1

عضو هوامير المميز

تاريخ التسجيل: Mar 2014
المشاركات: 5,853
صعنون1 غير متواجد حالياً  

السلام عليكم ورحمه الله وبركاته
كل عام وانتم بخير تقبل الله منا ومنكم الصيام والقيام

المعادله


Version( 6.0 );
GfxSetCoordsMode( 1 );
GfxSetOverlayMode( 1 );

BullBat4 = BullButterfly4 = BullCrab4 = BullGartley4 = 0;
BullBat = BullButterfly = BullCrab = BullGartley = 0;
BearBat4 = BearButterfly4 = BearCrab4 = BearGartley4 = 0;
BearBat = BearButterfly = BearCrab = BearGartley = 0;

bi = BarIndex();
fvb = FirstVisibleValue( bi );
lvb = LastVisibleValue( bi );

GraphXSpace = 0;
SetChartBkColor( colorBlack );
SetChartOptions( 1, chartShowDates, chartGridMiddle, 0, 0, 0 );
SetBarFillColor( IIf( C > O, ColorRGB( 0, 75, 0 ), IIf( C <= O, ColorRGB( 75, 0, 0 ), colorLightGrey ) ) );
Plot( C, "", IIf( C > O, ColorRGB( 0, 255, 0 ), IIf( C <= O, ColorRGB( 255, 0, 0 ), colorLightGrey ) ), 64, Null, Null, 0, 0, 1 );

_SECTION_BEGIN( "Patterns" );
rightstrength = Param( "Right Strength", 5, 2, 50, 1 );
leftstrength = Param( "Left Strength", 10, 2, 50, 1 );
plotFractals = ParamToggle( "Show Fractal Pivots", "Off|On", 0 );
plotLabels = ParamToggle( "Show Fractal Labels", "Off|On", 0 );
bu = ParamToggle( "Show Bullish Pattern", "Off|On", 1 );
be = ParamToggle( "Show Bearish Pattern", "Off|On", 1 );
nBull = Param( "Max Number of Bullish Patterns", 10, 0, 100, 1 );
nBear = Param( "Max Number of Bearish Patterns", 10, 0, 100, 1 );
dBat = ParamToggle( "Draw Bat", "Off|On", 1 );
dBut = ParamToggle( "Draw Buterfly", "Off|On", 1 );
dCrab = ParamToggle( "Draw Crab", "Off|On", 1 );
dGart = ParamToggle( "Draw Gartley", "Off|On", 1 );
showPatternDevelopmentPoints = ParamToggle( "Show Points of Pattern Development", "Off|On", 0 );
showPatternLabels = ParamToggle( "Show Pattern Labels", "Off|On", 0 );
_SECTION_END();

_SECTION_BEGIN( "Gartley" );
GBmin = Param( "Swing B Min.", 0.55, 0.3, 1, 0.01 );
GBmax = Param( "Swing B Max.", 0.72, 0.4, 1, 0.01 );
GCmin = Param( "Swing C Min.", 0.38, 0.3, 1.27, 0.01 );
GCmax = Param( "Swing C Max.", 1.0, 0.4, 1.27, 0.01 );
GDmin = Param( "Swing D Min.(XA)", 0.55, 0.3, 1, 0.01 );
GDmax = Param( "Swing D Max.(XA)", 1.0, 0.4, 1.0, 0.01 );
_SECTION_END();

_SECTION_BEGIN( "Bat" );
BatBmin = Param( "Swing B Min.", 0.38, 0.3, 1, 0.01 );
BatBmax = Param( "Swing B Max.", 0.55, 0.4, 1, 0.01 );
BatCmin = Param( "Swing C Min.", 0.38, 0.3, 1.62, 0.01 );
BatCmax = Param( "Swing C Max.", 1.27, 0.4, 1.62, 0.01 );
BatDmin = Param( "Swing D Min.(XA)", 0.5, 0.3, 1, 0.01 );
BatDmax = Param( "Swing D Max.(XA)", 1.0, 0.4, 1.0, 0.01 );
_SECTION_END();

_SECTION_BEGIN( "Butterfly" );
BtBmin = Param( "Swing B Min.", 0.55, 0.3, 1, 0.01 );
BtBmax = Param( "Swing B Max.", 0.9, 0.4, 1, 0.01 );
BtCmin = Param( "Swing C Min.", 0.38, 0.3, 1.62, 0.01 );
BtCmax = Param( "Swing C Max.", 1.27, 0.4, 1.62, 0.01 );
BtDmin = Param( "Swing D Min.(XA)", 1, 1, 1.8, 0.01 );
BtDmax = Param( "Swing D Max.(XA)", 1.38, 1, 1.8, 0.01 );
_SECTION_END();

_SECTION_BEGIN( "Crab" );
CBmin = Param( "Swing B Min.", 0.38, 0.3, 1, 0.01 );
CBmax = Param( "Swing B Max.", 0.65, 0.4, 1, 0.01 );
CCmin = Param( "Swing C Min.", 0.38, 0.3, 1.62, 0.01 );
CCmax = Param( "Swing C Max.", 1.270, 0.4, 1.62, 0.01 );
CDmin = Param( "Swing D Min.(XA)", 1.25, 1, 1.8, 0.01 );
CDmax = Param( "Swing D Max.(XA)", 1.8, 1, 2, 0.01 );
_SECTION_END();

function GetTop()
{
Top = H == HHV( H, leftstrength ) AND Ref( HHV( H, rightstrength ), rightstrength ) < H;
Top = Top AND LastValue( bi ) - ValueWhen( Top, bi ) > rightstrength;
return Top;
}

function GetValley()
{
Valley = L == LLV( L, leftstrength ) AND Ref( LLV( L, rightstrength ), rightstrength ) > L;
Valley = Valley AND LastValue( bi ) - ValueWhen( Valley, bi ) > rightstrength;
return Valley;
}

pk = GetTop();
tr = GetValley();

pk = IIf( pk, IIf( ValueWhen( pk, bi, 2 ) < ValueWhen( tr, bi ), pk, IIf( ValueWhen( pk, H, 2 ) > H, False, pk ) ), pk );
pk = IIf( pk AND ValueWhen( pk, bi, 0 ) > bi, IIf( ValueWhen( pk, bi, 0 ) < ValueWhen( tr, bi, 0 ), IIf( ValueWhen( pk, H, 0 ) >= H, False, pk ), pk ), pk );
tr = IIf( tr, IIf( ValueWhen( tr, bi, 2 ) < ValueWhen( pk, bi ), tr, IIf( ValueWhen( tr, L, 2 ) < L, False, tr ) ), tr );
tr = IIf( tr AND ValueWhen( tr, bi, 0 ) > bi , IIf( ValueWhen( tr, bi, 0 ) < ValueWhen( pk, bi, 0 ), IIf( ValueWhen( tr, L, 0 ) <= L, False, tr ), tr ), tr );

for( i = 0; i < 3; i++ )
{
VarSet( "px" + i, ValueWhen( pk, bi, i ) );
VarSet( "tx" + i, ValueWhen( tr, bi, i ) );
VarSet( "ph" + i, ValueWhen( pk, H, i ) );
VarSet( "tl" + i, ValueWhen( tr, L, i ) );
}

ll = tr AND tl1 < tl2;
hl = tr AND tl1 > tl2;
hh = pk AND ph1 > ph2;
lh = pk AND ph1 < ph2;
dt = pk AND ph1 == ph2;
db = tr AND tl1 == tl2;

if( PlotFractals )
{
PlotShapes( shapeSmallCircle * pk, colorRed, 0, H, 10 );
PlotShapes( shapeSmallCircle * tr, colorBlue, O, L, -10 );
}

// +++ Bullish Patterns
PTvalid = ( px1 > tx1 AND tx1 > px2 AND px2 > tx2 ) AND pk;

if( dGart AND bu )
{
BullGartley4 = PTvalid AND( ph2 - tl1 ) / ( ph2 - tl2 ) > GBmin AND( ph2 - tl1 ) / ( ph2 - tl2 ) < GBmax
AND( ph1 - tl1 ) / ( ph2 - tl1 ) > GCMin AND( ph1 - tl1 ) / ( ph2 - tl1 ) < GCMax;
BullGartley = IIf( LowestSince( BullGartley4, L ) < ValueWhen( BullGartley4, ph2 ) - ( ValueWhen( BullGartley4, ph2 ) - ValueWhen( BullGartley4, tl2 ) ) * GDmin AND
LowestSince( bullGartley4, L ) > ValueWhen( BullGartley4, ph2 ) - ( ValueWhen( BullGartley4, ph2 ) - ValueWhen( BullGartley4, tl2 ) ) * GDmax AND
HighestSince( BullGartley4, H ) <= ValueWhen( BullGartley4, ph1 ) AND
LowestSince( bullGartley4, L ) == L, True, False );
BullGartley = BullGartley AND LowestSince( BullGartley4, L ) < ValueWhen( BullGartley4, tl1 );
}

if( dBat AND bu )
{
BullBat4 = PTvalid AND( ph2 - tl1 ) / ( ph2 - tl2 ) > BatBmin AND( ph2 - tl1 ) / ( ph2 - tl2 ) < BatBmax
AND( ph1 - tl1 ) / ( ph2 - tl1 ) > BatCMin AND( ph1 - tl1 ) / ( ph2 - tl1 ) < BatCMax;
BullBat = IIf( LowestSince( BullBat4, L ) < ValueWhen( BullBat4, ph2 ) - ( ValueWhen( BullBat4, ph2 ) - ValueWhen( BullBat4, tl2 ) ) * BatDmin AND
LowestSince( BullBat4, L ) > ValueWhen( BullBat4, ph2 ) - ( ValueWhen( BullBat4, ph2 ) - ValueWhen( BullBat4, tl2 ) ) * BatDmax AND
HighestSince( BullBat4, H ) <= ValueWhen( BullBat4, ph1 ) AND
LowestSince( BullBat4, L ) == L, True, False );
BullBat = BullBat AND LowestSince( BullCrab4, L ) < ValueWhen( BullCrab4, tl1 );
}

if( dBut AND bu )
{
BullButterfly4 = PTvalid AND( ph2 - tl1 ) / ( ph2 - tl2 ) > BtBmin AND( ph2 - tl1 ) / ( ph2 - tl2 ) < BtBMax
AND( ph1 - tl1 ) / ( ph2 - tl1 ) > BtCmin AND( ph1 - tl1 ) / ( ph2 - tl1 ) < BtCmax;
BullButterfly = IIf( LowestSince( BullButterfly4, L ) < ValueWhen( BullButterfly4, ph2 ) - ( ValueWhen( BullButterfly4, ph2 ) - ValueWhen( BullButterfly4, tl2 ) ) * BtDMin AND
LowestSince( BullButterfly4, L ) > ValueWhen( BullButterfly4, ph2 ) - ( ValueWhen( BullButterfly4, ph2 ) - ValueWhen( BullButterfly4, tl2 ) ) * BtDmax AND
HighestSince( BullButterfly4, H ) <= ValueWhen( BullButterfly4, ph1 ) AND
LowestSince( bullButterfly4, L ) == L, True, False );
BullButterfly = BullButterfly AND LowestSince( BullButterfly4, L ) < ValueWhen( BullButterfly4, tl2 );
}

if( dCrab AND bu )
{
BullCrab4 = PTvalid AND( ph2 - tl1 ) / ( ph2 - tl2 ) > CBmin AND( ph2 - tl1 ) / ( ph2 - tl2 ) < CBmax
AND( ph1 - tl1 ) / ( ph2 - tl1 ) > CCmin AND( ph1 - tl1 ) / ( ph2 - tl1 ) < CCmax;
BullCrab = IIf( LowestSince( BullCrab4, L ) < ValueWhen( BullCrab4, ph2 ) - ( ValueWhen( BullCrab4, ph2 ) - ValueWhen( BullCrab4, tl2 ) ) * CDmin AND
LowestSince( BullCrab4, L ) > ValueWhen( BullCrab4, ph2 ) - ( ValueWhen( BullCrab4, ph2 ) - ValueWhen( BullCrab4, tl2 ) ) * CDmax AND
HighestSince( BullCrab4, H ) <= ValueWhen( BullCrab4, ph1 ) AND
LowestSince( bullGartley4, L ) == L, True, False );
BullCrab = BullCrab AND LowestSince( BullCrab4, L ) < ValueWhen( BullCrab4, tl2 );
}

BullHar4 = BullGartley4 OR BullButterfly4 OR BullBat4 OR BullCrab4 ;
BullHar = BullGartley OR BullButterfly OR BullBat OR BullCrab ;

buXy = ValueWhen( BullHar4, tl2 );
buXx = ValueWhen( BullHar4, tx2 );
buAy = ValueWhen( BullHar4, ph2 );
buAx = ValueWhen( BullHar4, px2 );
buBy = ValueWhen( BullHar4, tl1 );
buBx = ValueWhen( BullHar4, tx1 );
buCy = ValueWhen( BullHar4, ph1 );
buCx = ValueWhen( BullHar4, px1 );
buDy = ValueWhen( BullHar, L );
buDx = ValueWhen( BullHar, bi );

buABdXA = ( buAy - buBy ) / ( buAy - buXy );
buBCdAB = ( buCy - buBy ) / ( buAy - buBy );
buADdXA = ( buAy - buDy ) / ( buAy - buXy );
buBCdCD = ( buCy - buDy ) / ( buCy - buBy );

function drawBullishPattern( i, patternName )
{
GfxSelectSolidBrush( ColorRGB( 0, 0, 50 ) );
GfxSetBkColor( colorBlack );
GfxSelectPen( ColorRGB( 0, 0, 255 ), 2, 0 );
GfxMoveTo( buXx[i], buXy[i] );
GfxLineTo( buAx[i], buAy[i] );
GfxMoveTo( buAx[i], buAy[i] );
GfxLineTo( buBx[i], buBy[i] );
GfxMoveTo( buBx[i], buBy[i] );
GfxLineTo( buCx[i], buCy[i] );
GfxMoveTo( buCx[i], buCy[i] );
GfxLineTo( buDx[i], buDy[i] );
GfxMoveTo( buXx[i], buXy[i] );
GfxLineTo( buAx[i], buAy[i] );

GfxSelectPen( ColorRGB( 0, 0, 255 ), 1, 2 );
GfxMoveTo( buXx[i], buXy[i] );
GfxLineTo( buBx[i], buBy[i] );
GfxMoveTo( buAx[i], buAy[i] );
GfxLineTo( buCx[i], buCy[i] );
GfxMoveTo( buBx[i], buBy[i] );
GfxLineTo( buDx[i], buDy[i] );
GfxMoveTo( buXx[i], buXy[i] );
GfxLineTo( buDx[i], buDy[i] );

GfxPolygon( buXx[i], buXy[i], buAx[i], buAy[i], buBx[i], buBy[i], buCx[i], buCy[i], buDx[i], buDy[i], buBx[i], buBy[i], buXx[i], buXy[i] );

GfxSetTextColor( ColorRGB( 0, 0, 0 ) );
GfxSelectFont( "Helvetica", 10, 700 );
GfxSetBkColor( ColorRGB( 0, 0, 255 ) );
GfxSetTextAlign( 0 | 8 );
GfxTextOut( patternName, buCx[i] + 3, buCy[i] );

GfxSetTextAlign( 0 | 0 );
GfxSetTextColor( ColorRGB( 0, 0, 255 ) );
GfxSetBkColor( ColorRGB( 0, 0, 0 ) );
GfxSelectFont( "Helvetica", 8, 700 );
GfxTextOut( "" + Prec( buABdXA[i], 2 ), ( buBx[i] + buXx[i] ) / 2, ( buBy[i] + buXy[i] ) / 2 );
GfxTextOut( "" + Prec( buBCdAB[i], 2 ), ( buCx[i] + buAx[i] ) / 2, ( buCy[i] + buAy[i] ) / 2 );
GfxTextOut( "" + Prec( buADdXA[i], 2 ), ( buDx[i] + buXx[i] ) / 2, ( buDy[i] + buXy[i] ) / 2 );
GfxTextOut( "" + Prec( buBCdCD[i], 2 ), ( buBx[i] + buDx[i] ) / 2, ( buBy[i] + buDy[i] ) / 2 );

if( showPatternLabels )
{
GfxSetTextColor( ColorRGB( 0, 0, 0 ) );
GfxSelectFont( "Helvetica", 10, 700 );
GfxSetBkColor( ColorRGB( 0, 0, 255 ) );
GfxSetTextAlign( 0 | 24 );
GfxTextOut( "X", buXx[i] - 2, buXy[i] );
GfxTextOut( "A", buAx[i] - 2, buAy[i] );
GfxTextOut( "B", buBx[i] - 2, buBy[i] );
GfxTextOut( "C", buCx[i] + 1, buCy[i] );
GfxTextOut( "D", buDx[i] + 1, buDy[i] );
}
}

function drawBullishPatterns()
{
flag1 = 1;
flag2 = 0;
cnt = 0;

for( i = lvb; i > fvb; i-- )
{
if( BullHar[i] AND flag1 AND cnt < nBull )
{
flag1 = 0;
flag2 = 1;
cnt = cnt + 1;

if( BullButterfly[i] AND bu AND dBut )
{
drawBullishPattern( i, "Bullish Butterfly" );
}
else
if( BullCrab[i] AND bu AND dCrab )
{
drawBullishPattern( i, "Bullish Crab" );
}
else
if( BullBat[i] AND bu AND dBat )
{
drawBullishPattern( i, "Bullish Bat" );
}
else
if( BullGartley[i] AND bu AND dGart )
{
drawBullishPattern( i, "Bullish Gartley" );
}
}

if( BullHar4[i] AND flag2 )
{
flag1 = 1;
flag2 = 0;
}
}
}
drawBullishPatterns();

// +++ Bearish Patterns
PTvalid = ( tx1 > px1 AND px1 > tx2 AND tx2 > px2 ) AND tr;

if( dGart AND be )
{
BearGartley4 = PTvalid AND( ph1 - tl2 ) / ( ph2 - tl2 ) > GBmin AND( ph1 - tl2 ) / ( ph2 - tl2 ) < GBmax AND
( ph1 - tl1 ) / ( ph1 - tl2 ) > GCmin AND( ph1 - tl1 ) / ( ph1 - tl2 ) < GCmax;
BearGartley = IIf( HighestSince( bearGartley4, H ) > ValueWhen( BearGartley4, tl2 ) + ( ValueWhen( BearGartley4, ph2 ) - ValueWhen( BearGartley4, tl2 ) ) * GDmin AND
HighestSince( bearGartley4, H ) < ValueWhen( BearGartley4, tl2 ) + ( ValueWhen( BearGartley4, ph2 ) - ValueWhen( BearGartley4, tl2 ) ) * GDMax AND
LowestSince( BearGartley4, L ) >= ValueWhen( BearGartley4, tl1 ) AND
HighestSince( BearGartley4, H ) == H, True, False );
BearGartley = BearGartley AND HighestSince( BearGartley4, H ) > ValueWhen( BearGartley4, ph1 );
}

if( dBat AND be )
{
BearBat4 = PTvalid AND( ph1 - tl2 ) / ( ph2 - tl2 ) > BatBmin AND( ph1 - tl2 ) / ( ph2 - tl2 ) < BatBmax AND
( ph1 - tl1 ) / ( ph1 - tl2 ) > BatCmin AND( ph1 - tl1 ) / ( ph1 - tl2 ) < BatCmax;
BearBat = IIf( ( HighestSince( BearBat4, H ) > ValueWhen( BearBat4, tl2 ) + ( ValueWhen( BearBat4, ph2 ) - ValueWhen( BearBat4, tl2 ) ) * BatDmin AND
HighestSince( BearBat4, H ) < ValueWhen( BearBat4, tl2 ) + ( ValueWhen( BearBat4, ph2 ) - ValueWhen( BearBat4, tl2 ) ) * BatDMax AND
LowestSince( BearBat4, L ) >= ValueWhen( BearBat4, tl1 ) AND
HighestSince( BearBat4, H ) == H ), True, False );
BearBat = BearBat AND HighestSince( BearBat4, H ) > ValueWhen( BearBat4, ph1 );
}

if( dBut AND be )
{
BearButterfly4 = PTvalid AND( ph1 - tl2 ) / ( ph2 - tl2 ) > BtBmin AND( ph1 - tl2 ) / ( ph2 - tl2 ) < BtBmax AND
( ph1 - tl1 ) / ( ph1 - tl2 ) > BtCmin AND( ph1 - tl1 ) / ( ph1 - tl2 ) < BtCmax;
BearButterfly = IIf( HighestSince( BearButterfly4, H ) > ValueWhen( BearButterfly4, tl2 ) + ( ValueWhen( BearButterfly4, ph2 ) - ValueWhen( BearButterfly4, tl2 ) ) * BtDmin AND
HighestSince( BearButterfly4, H ) < ValueWhen( BearButterfly4, tl2 ) + ( ValueWhen( BearButterfly4, ph2 ) - ValueWhen( BearButterfly4, tl2 ) ) * BtDMax AND
LowestSince( BearButterfly4, L ) >= ValueWhen( BearButterfly4, tl1 ) AND
HighestSince( BearButterfly4, H ) == H, True, False );
BearButterfly = BearButterfly AND HighestSince( BearButterfly4, H ) > ValueWhen( BearButterfly4, ph2 );
}

if( dCrab AND be )
{
BearCrab4 = PTvalid AND( ph1 - tl2 ) / ( ph2 - tl2 ) > CBmin AND( ph1 - tl2 ) / ( ph2 - tl2 ) < CBmax AND
( ph1 - tl1 ) / ( ph1 - tl2 ) > CCmin AND( ph1 - tl1 ) / ( ph1 - tl2 ) < CCmax;
BearCrab = IIf( HighestSince( BearCrab4, H ) > ValueWhen( BearCrab4, tl2 ) + ( ValueWhen( BearCrab4, ph2 ) - ValueWhen( BearCrab4, tl2 ) ) * CDmin AND
HighestSince( BearCrab4, H ) < ValueWhen( BearCrab4, tl2 ) + ( ValueWhen( BearCrab4, ph2 ) - ValueWhen( BearCrab4, tl2 ) ) * CDMax AND
LowestSince( BearCrab4, L ) >= ValueWhen( BearCrab4, tl1 ) AND
HighestSince( BearCrab4, H ) == H, True, False );
BearCrab = BearCrab AND HighestSince( BearCrab4, H ) > ValueWhen( BearCrab4, ph2 );
}

BearHar4 = BearGartley4 OR BearButterfly4 OR BearBat4 OR BearCrab4 ;
BearHar = BearGartley OR BearButterfly OR BearBat OR BearCrab ;

beXy = ValueWhen( BearHar4, ph2 );
beXx = ValueWhen( BearHar4, px2 );
beAy = ValueWhen( BearHar4, tl2 );
beAx = ValueWhen( BearHar4, tx2 );
beBy = ValueWhen( BearHar4, ph1 );
beBx = ValueWhen( BearHar4, px1 );
beCy = ValueWhen( BearHar4, tl1 );
beCx = ValueWhen( BearHar4, tx1 );
beDy = ValueWhen( BearHar, H );
beDx = ValueWhen( BearHar, bi );

beABdXA = ( beBy - beAy ) / ( beXy - beAy );
beBCdAB = ( beBy - beCy ) / ( beBy - beAy );
beADdXA = ( beDy - beAy ) / ( beXy - beAy );
beBCdCD = ( beDy - beCy ) / ( beBy - beCy );

function drawBearishPattern( i, patternName )
{
GfxSelectSolidBrush( ColorRGB( 50, 0, 0 ) );
GfxSetBkColor( colorBlack );
GfxSelectPen( ColorRGB( 255, 0, 0 ), 2, 0 );
GfxMoveTo( beXx[i], beXy[i] );
GfxLineTo( beAx[i], beAy[i] );
GfxMoveTo( beAx[i], beAy[i] );
GfxLineTo( beBx[i], beBy[i] );
GfxMoveTo( beBx[i], beBy[i] );
GfxLineTo( beCx[i], beCy[i] );
GfxMoveTo( beCx[i], beCy[i] );
GfxLineTo( beDx[i], beDy[i] );
GfxMoveTo( beXx[i], beXy[i] );
GfxLineTo( beAx[i], beAy[i] );

GfxSelectPen( ColorRGB( 255, 0, 0 ), 1, 2 );
GfxMoveTo( beXx[i], beXy[i] );
GfxLineTo( beBx[i], beBy[i] );
GfxMoveTo( beAx[i], beAy[i] );
GfxLineTo( beCx[i], beCy[i] );
GfxMoveTo( beBx[i], beBy[i] );
GfxLineTo( beDx[i], beDy[i] );
GfxMoveTo( beXx[i], beXy[i] );
GfxLineTo( beDx[i], beDy[i] );

GfxPolygon( beXx[i], beXy[i], beAx[i], beAy[i], beBx[i], beBy[i], beCx[i], beCy[i], beDx[i], beDy[i], beBx[i], beBy[i], beXx[i], beXy[i] );

GfxSetTextColor( ColorRGB( 0, 0, 0 ) );
GfxSelectFont( "Helvetica", 10, 700 );
GfxSetBkColor( ColorRGB( 255, 0, 0 ) );
GfxSetTextAlign( 0 | 0 );
GfxTextOut( patternName, beCx[i] + 3, beCy[i] );

GfxSetTextAlign( 0 | 0 );
GfxSetTextColor( ColorRGB( 255, 0, 0 ) );
GfxSetBkColor( ColorRGB( 0, 0, 0 ) );
GfxSelectFont( "Helvetica", 8, 700 );
GfxTextOut( "" + Prec( beABdXA[i], 2 ), ( beBx[i] + beXx[i] ) / 2, ( beBy[i] + beXy[i] ) / 2 );
GfxTextOut( "" + Prec( beBCdAB[i], 2 ), ( beCx[i] + beAx[i] ) / 2, ( beCy[i] + beAy[i] ) / 2 );
GfxTextOut( "" + Prec( beADdXA[i], 2 ), ( beDx[i] + beXx[i] ) / 2, ( beDy[i] + beXy[i] ) / 2 );
GfxTextOut( "" + Prec( beBCdCD[i], 2 ), ( beBx[i] + beDx[i] ) / 2, ( beBy[i] + beDy[i] ) / 2 );

if( showPatternLabels )
{
GfxSetTextColor( ColorRGB( 0, 0, 0 ) );
GfxSelectFont( "Helvetica", 10, 700 );
GfxSetBkColor( ColorRGB( 255, 0, 0 ) );
GfxSetTextAlign( 0 | 24 );
GfxTextOut( "X", beXx[i] - 2, beXy[i] );
GfxTextOut( "A", beAx[i] - 2, beAy[i] );
GfxTextOut( "B", beBx[i] - 2, beBy[i] );
GfxTextOut( "C", beCx[i] + 1, beCy[i] );
GfxTextOut( "D", beDx[i] + 1, beDy[i] );
}
}

function drawBearishPatterns()
{
flag1 = 1;
flag2 = 0;
cnt = 0;

for( i = lvb; i > fvb; i-- )
{
if( BearHar[i] AND flag1 AND cnt < nBear )
{
flag1 = 0;
flag2 = 1;
cnt = cnt + 1;

if( BearButterfly[i] AND be AND dBut )
{
drawBearishPattern( i, "Bearish Butterfly" );
}
else
if( BearCrab[i] AND be AND dCrab )
{
drawBearishPattern( i, "Bearish Crab" );
}
else
if( BearBat[i] AND be AND dBat )
{
drawBearishPattern( i, "Bearish Bat" );
}
else
if( BearGartley[i] AND be AND dGart )
{
drawBearishPattern( i, "Bearish Gartley" );
}
}

if( BearHar4[i] AND flag2 )
{
flag1 = 1;
flag2 = 0;
}
}
}
drawBearishPatterns();

function drawPivotLabels()
{
sz = 5;

for( i = lvb; i > fvb; i-- )
{
{
if( ll[i] ) PlotTextSetFont( "LL", "Arial Black", sz, i, L[i], colorBlue, colorDefault, -25 );

if( hl[i] ) PlotTextSetFont( "HL", "Arial Black", sz, i, L[i], colorBlue, colorDefault, -25 );

if( db[i] ) PlotTextSetFont( "DB", "Arial Black", sz, i, L[i], colorLightBlue, colorDefault, -25 );

if( hh[i] ) PlotTextSetFont( "HH", "Arial Black", sz, i, H[i], colorRed, colorDefault, 20 );

if( lh[i] ) PlotTextSetFont( "LH", "Arial Black", sz, i, H[i], colorRed, colorDefault, 20 );

if( dt[i] ) PlotTextSetFont( "DT", "Arial Black", sz, i, H[i], colorOrange, colorDefault, 20 );
}
}
}

if( plotLabels ) drawPivotLabels();

if( showPatternDevelopmentPoints )
{
if( bu )
{
PlotShapes( shapeDigit4 * BullHar4, colorBlue, O, H, 10 );
PlotShapes( shapeSmallCircle * BullHar, ColorLightBlue, O, L, -10 );
}

if( be )
{
PlotShapes( shapeDigit4 * BearHar4, colorRed, O, L, -10 );
PlotShapes( shapeSmallCircle * BearHar, colorOrange, O, H, 10 );
}
}

الموضوع الأصلي : اضغط هنا    ||   المصدر : منتدى هوامير البورصة السعودية


رد مع اقتباس
 
 

قديم 23-06-2018, 12:39 PM
  المشاركه #2

عضو هوامير المميز

تاريخ التسجيل: Apr 2007
المشاركات: 718
أبو وريف غير متواجد حالياً  

الله يعطيك العافيه .... المعادله فيها اخطاء لا تعمل


رد مع اقتباس
قديم 27-06-2018, 06:44 AM
  المشاركه #3

عضو هوامير المميز

تاريخ التسجيل: Jan 2017
المشاركات: 84
bohaneen11 غير متواجد حالياً  

الله يعطيك العافيه المعادلة تشتغل بدون مشاكل اخوي ابو وريف احتمال من نسخة البرنامج ايمي بروكر اللي عندك لكن بعطيك هاذي المعادلة الهارومونيك جربها ونسالكم الدعاء


/* HARMONIC PATTERN DETECTION


Automatic Detection of Harmonic Patterns - Gartley, Bat, Butterfly and Crab.

Zig Zag is not used in this AFL. It is based on fractals

Contact - (تم حذف الإيميل لأن عرضه مخالف لشروط المنتدى)

*/


_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorWhite ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();

_SECTION_BEGIN("Gartley");

GBmin = Param("Swing B Min.",0.55,0.3,1,0.01);
GBmax = Param("Swing B Max.",0.72,0.4,1,0.01);
GCmin = Param("Swing C Min.",0.38,0.3,1.27,0.01);
GCmax = Param("Swing C Max.",1.0,0.4,1.27,0.01);
GDmin = Param("Swing D Min.(XA)",0.55,0.3,1,0.01);
GDmax = Param("Swing D Max.(XA)",1.0,0.4,1.0,0.01);

_SECTION_END();

_SECTION_BEGIN("Bat");

BatBmin = Param("Swing B Min.",0.38,0.3,1,0.01);
BatBmax = Param("Swing B Max.",0.55,0.4,1,0.01);
BatCmin = Param("Swing C Min.",0.38,0.3,1.62,0.01);
BatCmax = Param("Swing C Max.",1.27,0.4,1.62,0.01);
BatDmin = Param("Swing D Min.(XA)",0.5,0.3,1,0.01);
BatDmax = Param("Swing D Max.(XA)",1.0,0.4,1.0,0.01);

_SECTION_END();

_SECTION_BEGIN("Butterfly");

BtBmin = Param("Swing B Min.",0.55,0.3,1,0.01);
BtBmax = Param("Swing B Max.",0.9,0.4,1,0.01);
BtCmin = Param("Swing C Min.",0.38,0.3,1.62,0.01);
BtCmax = Param("Swing C Max.",1.27,0.4,1.62,0.01);
BtDmin = Param("Swing D Min.(XA)",1,1,1.8,0.01);
BtDmax = Param("Swing D Max.(XA)",1.8,1,1.8,0.01); // Max XA of Butterfly = (1.0 - 1.618)

_SECTION_END();

_SECTION_BEGIN("Crab");

CBmin = Param("Swing B Min.",0.38,0.3,1,0.01);
CBmax = Param("Swing B Max.",0.65,0.4,1,0.01);
CCmin = Param("Swing C Min.",0.38,0.3,1.62,0.01);
CCmax = Param("Swing C Max.",1.270,0.4,1.62,0.01);
CDmin = Param("Swing D Min.(XA)",1.25,1,1.8,0.01);
CDmax = Param("Swing D Max.(XA)",1.8,1,2,0.01);

_SECTION_END();

_SECTION_BEGIN("AB=CD");

abcd_Cmin = Param("Swing C Min.",0.3, 0.3 , 1, 0.01);
abcd_Cmax = Param("Swing C Max.",0.8, 0.8 , 1, 0.01);
abcd_Dmin = Param("Swing D Min.",1.2, 1, 2.7, 0.01);
abcd_Dmax = Param("Swing D Max.",3.7, 1, 4, 0.01);

_SECTION_END();

_SECTION_BEGIN("Patterns");

//strength = Param("Strength",5,2,15,1); // Best use: 3, 4, 5
strength = Param("BARS of each LINE",5,2,15,1); // So luong bar cho moi duong XA, AB, BC,
bu = ParamToggle("Bullish Pattern","Off|On",1); // So bar/lines se quyet dinh. mo^ hinh` duoc ve the' nao`
be = ParamToggle("Bearish Pattern","Off|On",1);

bi = Cum(1)-1;

function GetTop(bars) // Lay' gia' tri cao nhat' = di?nh
{
Top = H == HHV(H,2*bars) AND Ref(HHV(H,bars),bars) < H;
Top = Top AND LastValue(bi)-ValueWhen(Top,bi) > bars;
return Top;
}

function GetValley(bars) // La'y gia tri thap' nhat' = day'
{
Valley = L == LLV(L,2*bars) AND Ref(LLV(L,bars),bars) > L;
Valley = Valley AND LastValue(bi)-ValueWhen(Valley,bi) > bars;
return Valley;
}


// Build fractals array

P1 = GetTop(strength); // so' bar cho 1 duong` XA, AB, BC, CD
V1 = GetValley(Strength);

P1 = IIf(P1,IIf(ValueWhen(P1,bi,2) < ValueWhen(V1,bi),P1,IIf(ValueWhen(P1,H,2) > H,False,P1)),P1);
P1 = IIf(P1 AND ValueWhen(P1,bi,0) > bi,IIf(ValueWhen(P1,bi,0) < ValueWhen(V1,bi,0),IIf(ValueWhen(P1,H,0) >= H,False,P1),P1),P1);
V1 = IIf(V1,IIf(ValueWhen(V1,bi,2) < ValueWhen(P1,bi),V1,IIf(ValueWhen(V1,L,2)<L,False,V1)),V1);
V1 = IIf(V1 AND ValueWhen(V1,bi,0) > bi ,IIf(ValueWhen(V1,bi,0) < ValueWhen(P1,bi,0),IIf(ValueWhen(V1,L,0) <= L, False,V1),V1),V1);


P1H1 = ValueWhen(P1,H);
P1Bar1 = ValueWhen(P1,bi);
P1H2 = ValueWhen(P1,H,2);
P1Bar2 = ValueWhen(P1,bi,2);
V1L1 = ValueWhen(V1,L);
V1Bar1 = ValueWhen(V1,bi);
V1L2 = ValueWhen(V1,L,2);
V1Bar2 = ValueWhen(V1,bi,2);


//============================================
// BULLISH PATTERNS
//============================================
/*
Mo hinh Bullish:
A = P1H2
B = V1L1
C = P1H1
X = V1L2

*/

PTvalid = (P1Bar1 > V1Bar1 AND V1Bar1 > P1Bar2 AND P1bar2 > V1Bar2) AND P1; // Peaks and troughs are in order

myAX = P1H2-V1L2;
myAB = P1H2-V1L1;
myBC = P1H1-V1L1;

myAB_AX = myAB/ myAX;
myBC_AB = myBC/ myAB;

BullGartley4 = PTvalid AND ( myAB_AX > GBmin ) AND ( myAB_AX < GBmax )
AND ( myBC_AB > GCMin ) AND ( myBC_AB < GCMax );

BullBat4 = PTvalid AND ( myAB_AX > BatBmin ) AND ( myAB_AX < BatBmax )
AND ( myBC_AB > BatCMin ) AND ( myBC_AB < BatCMax );

BullButterfly4 = PTvalid AND ( myAB_AX > BtBmin ) AND ( myAB_AX < BtBMax )
AND ( myBC_AB > BtCmin ) AND ( myBC_AB < BtCmin );

BullCrab4 = PTvalid AND ( myAB_AX > CBmin ) AND ( myAB_AX < CBmax )
AND ( myBC_AB > CCmin ) AND ( myBC_AB < CCmax );

BullABCD4 = PTvalid AND ( myBC_AB > abcd_Cmin) AND ( myBC_AB < abcd_Cmax );

strPattern = "";

//==================================================
// BULLISH ABCD
// Bullish pattern found. D retracement level is not evaluated
//==================================================
dHigh = HighestSince(BullABCD4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BullABCD4,L);

myC = ValueWhen(BullABCD4,P1H1);
myB = ValueWhen(BullABCD4,V1L1);
myA = ValueWhen(BullABCD4,P1H2);
myX = ValueWhen(BullABCD4,V1L2);
myCB = myC - myB;

my_d_min = myCB * abcd_DMin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myCB * abcd_DMax ;
my_Cd_min = myC - my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Cd_max = myC - my_d_max;

BullABCD = IIf( ( dLow < my_Cd_min ) AND ( dLow > my_Cd_max )
AND ( dHigh <= myC ) AND ( dLow == L),
True, False
);

BullABCD = BullABCD AND (dLow < myB);


//==================================================
// BULLISH GARTLEY
//==================================================
dHigh = HighestSince(BullGartley4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BullGartley4,L);

myC = ValueWhen(BullGartley4,P1H1);
myB = ValueWhen(BullGartley4,V1L1);
myA = ValueWhen(BullGartley4,P1H2);
myX = ValueWhen(BullGartley4,V1L2);
myAX = myA - myX;

my_d_min = myAX * GDmin; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * GDMax;
my_Ad_min = myA - my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA - my_d_max;

BullGartley = IIf( ( dLow < my_Ad_min ) AND ( dLow > my_Ad_max )
AND ( dHigh <= myC ) AND ( dLow == L),
True, False
);
BullGartley = BullGartley AND (dLow < myB); // diem D thap' hon B
strPattern = WriteIf(BullGartley,"BULLISH GARTLEY",strPattern);



//==================================================
// BULLISH BAT
//==================================================
dHigh = HighestSince(BullBat4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BullBat4,L);

myC = ValueWhen(BullBat4,P1H1);
myB = ValueWhen(BullBat4,V1L1);
myA = ValueWhen(BullBat4,P1H2);
myX = ValueWhen(BullBat4,V1L2);
myAX = myA - myX;

my_d_min = myAX * BatDmin; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * BatDmax ;
my_Ad_min = myA - my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA - my_d_max;

BullBat = IIf( ( dLow < my_Ad_min ) AND ( dLow > my_Ad_max )
AND ( dHigh <= myC ) AND ( dLow == L),
True, False
);
BullBat = BullBat AND (dLow < myB); // diem d thap hon diem B
strPattern = WriteIf(BullBat,"BULLISH BAT",strPattern);


//==================================================
// BULLISH CRAB - CUA
//==================================================
dHigh = HighestSince(BullCrab4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BullCrab4,L);

myC = ValueWhen(BullCrab4,P1H1);
myB = ValueWhen(BullCrab4,V1L1);
myA = ValueWhen(BullCrab4,P1H2);
myX = ValueWhen(BullCrab4,V1L2);
myAX = myA - myX;

my_d_min = myAX * CDmin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * CDmax ;
my_Ad_min = myA - my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA - my_d_max;

BullCrab = IIf( ( dLow < my_Ad_min ) AND ( dLow > my_Ad_max )
AND ( dHigh <= myC ) AND ( dLow == L),
True, False
);
BullCrab = BullCrab AND (dLow < myX); // diem D thap' hon X
strPattern = WriteIf(BullCrab ,"BULLISH CRAB",strPattern);


//==================================================
// BULLISH BUTTTERFLY
//==================================================
dHigh = HighestSince(BullButterfly4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BullButterfly4,L);

myC = ValueWhen(BullButterfly4,P1H1);
myB = ValueWhen(BullButterfly4,V1L1);
myA = ValueWhen(BullButterfly4,P1H2);
myX = ValueWhen(BullButterfly4,V1L2);
myAX = myA - myX;

my_d_min = myAX * BtDmin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * BtDmax ;
my_Ad_min = myA - my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA - my_d_max;

BullButterfly = IIf( ( dLow < my_Ad_min ) AND ( dLow > my_Ad_max )
AND ( dHigh <= myC ) AND ( dLow == L),
True, False
);
BullButterfly = BullButterfly AND (dLow < myX); // diem D thap' hon X
strPattern = WriteIf(BullButterfly ,"BULLISH BUTTERFLY",strPattern);



//==========================================================
// VE DUONG CHO MO HINH BULLISH ABCB
//==========================================================
BullHar4 = BullABCD4;
BullHar = BullABCD;

Point4 = IIf(BullHar,ValueWhen(BullHar4,bi),Null);
BullHar = IIf(BullHar, IIf(Point4 == ValueWhen(BullHar,point4,0) AND ValueWhen(BullHar,bi,0) > bi ,False,BullHar),BullHar);

A = ValueWhen(BullHar4,P1H2);
Abar = ValueWhen(BullHar4,P1bar2);
B = ValueWhen(BullHar4,V1L1);
Bbar = ValueWhen(BullHar4,V1bar1);
C1 = ValueWhen(BullHar4,P1H1);
C1bar = ValueWhen(BullHar4,P1bar1);
D = ValueWhen(BullHar,L);
Dbar = ValueWhen(BullHar,bi);

BCdAB = (C1-B)/(A-B);
BCdCD = (C1-D)/(C1-B);

PlotPattern = Dbar > C1bar;

if(LastValue(PlotPattern) AND bu)
{
ColorX = colorGreen;
// Ve cac duong AB, BC, CD
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),LastValue(B)),"",C olorX ,styleThick);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),LastValue(C1)),"" ,ColorX ,styleThick);
Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),LastValue(D)),"" ,ColorX ,styleThick);
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),LastValue(C1)),"" ,ColorX ,styleDashed);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),LastValue(D)),"",C olorX ,styleDashed);

// Ve cac gia tri Fibo
PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastValue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX );
PlotText(NumToStr(LastValue(BCdCD),1.2),(LastValue(Bbar)+LastValue(Dbar))/2,(LastValue(B)+LastValue(D))/2,ColorX );

//---------- Viet cac diem X, A, B, C, D: by binhnd---------------------
xlech = 0;
ylech = 2;
PlotText("A",LastValue(Abar) + xlech, LastValue(A) + ylech, ColorX );
PlotText("B",LastValue(Bbar) + xlech, LastValue(B) - ylech, ColorX );
PlotText("C",LastValue(C1bar) + xlech, LastValue(C1) + ylech, ColorX );
PlotText("D",LastValue(Dbar) + xlech, LastValue(D) - ylech, ColorX );

//--------- Viet thuyet minh mo hinh: by binhnd--------------
if (strPattern!="")
{
myStr = "Pattern: BULLISH AB=CD";
toadoX = LastValue(Abar);
toadoY = LastValue(D);

PlotText(myStr,toadoX,toadoY,ColorX );
}

} // end of Ve duong` bullish abcd



//==========================================================
// VE DUONG CHO MO HINH BULLISH BAT, GARTLEY, BUTTERFLY, CRAB
//==========================================================


BullHar4 = BullGartley4 OR BullButterfly4 OR BullBat4 OR BullCrab4 ;
BullHar = BullGartley OR BullButterfly OR BullBat OR BullCrab;

Point4 = IIf(BullHar,ValueWhen(BullHar4,bi),Null);
BullHar = IIf(BullHar, IIf(Point4 == ValueWhen(BullHar,point4,0) AND ValueWhen(BullHar,bi,0) > bi ,False,BullHar),BullHar);

X = ValueWhen(BullHar4,V1L2);
Xbar = ValueWhen(BullHar4,V1Bar2);
A = ValueWhen(BullHar4,P1H2);
Abar = ValueWhen(BullHar4,P1bar2);
B = ValueWhen(BullHar4,V1L1);
Bbar = ValueWhen(BullHar4,V1bar1);
C1 = ValueWhen(BullHar4,P1H1);
C1bar = ValueWhen(BullHar4,P1bar1);
D = ValueWhen(BullHar,L);
Dbar = ValueWhen(BullHar,bi);

ABdXA = (A-B)/(A-X);
BCdAB = (C1-B)/(A-B);
ADdXA = (A-D)/(A-X);
BCdCD = (C1-D)/(C1-B);

PlotPattern = Dbar > C1bar;

if(LastValue(PlotPattern) AND bu)
{
ColorX = colorBlue;
// Ve cac duong XA, AB, BC, CD
Plot( LineArray(LastValue(Xbar),LastValue(X),LastValue(Abar),LastValue(A)),"",ColorX ,styleThick);
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),LastValue(B)),"",C olorX,styleThick);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),LastValue(C1)),"" ,ColorX,styleThick);
Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),LastValue(D)),"" ,ColorX,styleThick);
Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Bbar),LastValue(B)),"",C olorX,styleDashed);
Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Abar),LastValue(A)),"",C olorX,styleThick);
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),LastValue(C1)),"" ,ColorX,styleDashed);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),LastValue(D)),"",C olorX,styleDashed);
Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Dbar),LastValue(D)),"",C olorX,styleDashed);

// Ve cac gia tri Fibo
PlotText(NumToStr(LastValue(ABdXA),1.2),(LastValue(Bbar)+LastValue(Xbar))/2,(LastValue(B)+LastValue(X))/2,ColorX);
PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastValue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX);
PlotText(NumToStr(LastValue(ADdXA),1.2) ,(LastValue(Dbar)+LastValue(Xbar))/2,(LastValue(D)+LastValue(X))/2,ColorX);
PlotText(NumToStr(LastValue(BCdCD),1.2),(LastValue(Bbar)+LastValue(Dbar))/2,(LastValue(B)+LastValue(D))/2,ColorX);

//---------- Viet cac diem X, A, B, C, D: by binhnd---------------------
xlech = 0;
ylech = 2;
PlotText("X",LastValue(Xbar) + xlech, LastValue(X) - ylech, ColorX);
PlotText("A",LastValue(Abar) + xlech, LastValue(A) + ylech, ColorX);
PlotText("B",LastValue(Bbar) + xlech, LastValue(B) - ylech, ColorX);
PlotText("C",LastValue(C1bar) + xlech, LastValue(C1) + ylech, ColorX);
PlotText("D",LastValue(Dbar) + xlech, LastValue(D) - ylech, ColorX);

//--------- Viet thuyet minh mo hinh: by binhnd--------------
if (strPattern!="")
{
strPattern = "Pattern: " + strPattern;
toadoX = (LastValue(Dbar)+LastValue(Xbar))/2;
toadoY = (LastValue(D)+LastValue(X))/2;

PlotText(strPattern,toadoX,toadoY-2,ColorX);
}

} // end of Ve duong cho cac mo hinh Crab, Butterfly, Bat


//=============================================================
// BEARISH PATTERNS
//=============================================================

PTvalid = (V1Bar1 > P1Bar1 AND P1Bar1 > V1Bar2 AND V1Bar2 > P1Bar2) AND V1;

/*=====================
X = P1H2 Trong mo hinh` bear: Die^m X cao hon diem A. MyAX = X-> A
A = V1L2
B = P1H1
C = V1L1

=======================*/
myAX = P1H2-V1L2;
myAB = P1H1-V1L2;
myBC = P1H1-V1L1;

myAB_AX = myAB/ myAX;
myBC_AB = myBC/ myAB;

BearGartley4 = PTvalid AND ( myAB_AX > GBmin ) AND ( myAB_AX < GBmax )
AND ( myBC_AB > GCMin ) AND ( myBC_AB < GCMax );

BearBat4 = PTvalid AND ( myAB_AX > BatBmin ) AND ( myAB_AX < BatBmax )
AND ( myBC_AB > BatCMin ) AND ( myBC_AB < BatCMax );

BearButterfly4 = PTvalid AND ( myAB_AX > BtBmin ) AND ( myAB_AX < BtBMax )
AND ( myBC_AB > BtCmin ) AND ( myBC_AB < BtCmin );

BearCrab4 = PTvalid AND ( myAB_AX > CBmin ) AND ( myAB_AX < CBmax )
AND ( myBC_AB > CCmin ) AND ( myBC_AB < CCmax );

BearABCD4 = PTvalid AND ( myBC_AB > abcd_Cmin) AND ( myBC_AB < abcd_Cmax );

strPattern = "";



//==========================================================
// BEARISH ABCD
// Bearish pattern found. D retracement level is not evaluated
//==========================================================
dHigh = HighestSince(BearABCD4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BearABCD4,L);

myA = ValueWhen(BearABCD4,V1L2);
myB = ValueWhen(BearABCD4,P1H1);
myC = ValueWhen(BearABCD4,V1L1);
myCB = myB - myC;

my_d_min = myCB * abcd_DMin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myCB * abcd_DMax ;
my_Cd_min = myC + my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Cd_max = myC + my_d_max;

BearABCD = IIf( ( dHigh > my_Cd_min ) AND ( dHigh < my_Cd_max )
AND ( dLow >= myC ) AND ( dHigh == H),
True, False
);

BearABCD = BearABCD AND (dHigh > myB);

//=============================================================
// BEARISH GARTLEY
//=============================================================
dHigh = HighestSince(BearGartley4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BearGartley4,L);

myX = ValueWhen(BearGartley4,P1H2);
myA = ValueWhen(BearGartley4,V1L2);
myAX = myX - myA;

myB = ValueWhen(BearGartley4,P1H1);
myC = ValueWhen(BearGartley4,V1L1);


my_d_min = myAX * GDmin; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * GDMax;
my_Ad_min = myA + my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA + my_d_max;

BearGartley = IIf( ( dHigh > my_Ad_min ) AND ( dHigh < my_Ad_max )
AND ( dLow >= myC ) AND ( dHigh == H),
True, False
);
BearGartley = BearGartley AND (dHigh > myB); // diem D cao hon B
strPattern = WriteIf(BearGartley ,"BEARISH GARTLEY",strPattern);

//=============================================================
// BEARISH BAT
//=============================================================
dHigh = HighestSince(BearBat4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BearBat4,L);

myX = ValueWhen(BearBat4,P1H2);
myA = ValueWhen(BearBat4,V1L2);
myAX = myX - myA;

myB = ValueWhen(BearBat4,P1H1);
myC = ValueWhen(BearBat4,V1L1);


my_d_min = myAX * BatDmin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * BatDMax ;
my_Ad_min = myA + my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA + my_d_max;

BearBat = IIf( ( dHigh > my_Ad_min ) AND ( dHigh < my_Ad_max )
AND ( dLow >= myC ) AND ( dHigh == H),
True, False
);
BearBat = BearBat AND (dHigh > myB); // diem D cao hon B
strPattern = WriteIf(BearBat ,"BEARISH BAT",strPattern);


//=============================================================
// BEARISH BUTTERFLY
//=============================================================
dHigh = HighestSince(BearButterfly4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BearButterfly4,L);

myX = ValueWhen(BearButterfly4,P1H2);
myA = ValueWhen(BearButterfly4,V1L2);
myAX = myX - myA;

myB = ValueWhen(BearButterfly4,P1H1);
myC = ValueWhen(BearButterfly4,V1L1);


my_d_min = myAX * BtDmin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * BtDmax ;
my_Ad_min = myA + my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA + my_d_max;

BearButterfly = IIf( ( dHigh > my_Ad_min ) AND ( dHigh < my_Ad_max )
AND ( dLow >= myC ) AND ( dHigh == H),
True, False
);
BearButterfly = BearButterfly AND (dHigh > myX); // diem D cao hon X
strPattern = WriteIf(BearButterfly ,"BEARISH BUTTERFLY",strPattern);



//=============================================================
// BEARISH CRAB
//=============================================================
dHigh = HighestSince(BearCrab4,H); // Tinh' gia' tri min, max cua duong Ad. Duong Ad la duong con cua AD
dLow = LowestSince(BearCrab4,L);

myX = ValueWhen(BearCrab4,P1H2);
myA = ValueWhen(BearCrab4,V1L2);
myAX = myX - myA;

myB = ValueWhen(BearCrab4,P1H1);
myC = ValueWhen(BearCrab4,V1L1);


my_d_min = myAX * CDmin ; // Tinh' gia' tri cua duong Ad con. Khi gia' giam? tu` tre^n xuong' thi` max -> min
my_d_max = myAX * CDmax ;
my_Ad_min = myA + my_d_min; // Khoang dich chuyen cua duong Ad con.
my_Ad_max = myA + my_d_max;

BearCrab = IIf( ( dHigh > my_Ad_min ) AND ( dHigh < my_Ad_max )
AND ( dLow >= myC ) AND ( dHigh == H),
True, False
);
BearCrab = BearCrab AND (dHigh > myX); // diem D cao hon X
strPattern = WriteIf(BearCrab ,"BEARISH CRAB",strPattern);



//==========================================================
// VE DUONG CHO MO HINH BEARISH ABCD
//==========================================================


BearHar4 = BearABCD4;
BearHar = BearABCD;

Point4 = IIf(BearHar,ValueWhen(BearHar4,bi),Null);
BearHar = IIf(BearHar, IIf(Point4 == ValueWhen(BearHar,point4,0) AND ValueWhen(BearHar,bi,0) > bi ,False,BearHar),BearHar);

A = ValueWhen(BearHar4,V1L2);
Abar = ValueWhen( BearHar4,V1bar2);
B = ValueWhen(BearHar4,P1H1);
Bbar = ValueWhen(BearHar4,P1bar1);
C1 = ValueWhen(BearHar4,V1L1);
C1bar = ValueWhen(BearHar4,V1bar1);
D = ValueWhen(BearHar,H);
Dbar = ValueWhen(BearHar,bi);

BCdAB = (B-C1)/(B-A);
BCdCD = (D-C1)/(B-C1);

PlotPattern = Dbar > C1bar;

//--------- Ve duong ------------------
if(LastValue(Plotpattern) AND be)
{
ColorX = colorYellow;
// Ve duong AB, BC
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),LastValue(B)),"",C olorX ,styleThick);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),LastValue(C1)),"" ,ColorX ,styleThick);
Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),LastValue(D)),"" ,ColorX ,styleThick);
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),LastValue(C1)),"" ,ColorX ,styleDashed);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),LastValue(D)),"",C olorX ,styleDashed);

// Viet cac gia tri Fibo tren duong AB, BC
PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastValue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX );
PlotText(NumToStr(LastValue(BCdCD),1.2) ,(LastValue(Dbar)+LastValue(Bbar))/2,(LastValue(D)+LastValue(B))/2,ColorX );

//---------- Viet cac diem A, B, C, D: by binhnd---------------------
xlech = -1;
ylech = 1;
PlotText("A",LastValue(Abar) + xlech, LastValue(A) - ylech, ColorX );
PlotText("B",LastValue(Bbar) + xlech, LastValue(B) + ylech, ColorX );
PlotText("C",LastValue(C1bar) + xlech, LastValue(C1) - ylech, ColorX );
PlotText("D",LastValue(Dbar) + xlech, LastValue(D) + ylech, ColorX );

//--------- Viet thuyet minh mo hinh: by binhnd--------------
if (strPattern!="")
{
myStr = "Pattern: BEARISH AB=CD";
toadoaX = LastValue(Abar);
toadoY = LastValue(D);

PlotText(myStr,toadoaX,toadoY+1,ColorX );
}

} // end of VE DUONG CHO MO HINH BEARISH ABCD


//==========================================================
// VE DUONG CHO MO HINH BEARISH BAT, GARTLEY, BUTTERFLY, CRAB
//==========================================================

BearHar4 = BearGartley4 OR BearButterfly4 OR BearBat4 OR BearCrab4 ;
BearHar = BearGartley OR BearButterfly OR BearBat OR BearCrab ;

Point4 = IIf(BearHar,ValueWhen(BearHar4,bi),Null);
BearHar = IIf(BearHar, IIf(Point4 == ValueWhen(BearHar,point4,0) AND ValueWhen(BearHar,bi,0) > bi ,False,BearHar),BearHar);

X = ValueWhen(BearHar4,P1H2);
Xbar = ValueWhen(BearHar4,P1Bar2);
A = ValueWhen(BearHar4,V1L2);
Abar = ValueWhen( BearHar4,V1bar2);
B = ValueWhen(BearHar4,P1H1);
Bbar = ValueWhen(BearHar4,P1bar1);
C1 = ValueWhen(BearHar4,V1L1);
C1bar = ValueWhen(BearHar4,V1bar1);
D = ValueWhen(BearHar,H);
Dbar = ValueWhen(BearHar,bi);

ABdXA = (B-A)/(X-A);
BCdAB = (B-C1)/(B-A);
ADdXA = (D-A)/(X-A);
BCdCD = (D-C1)/(B-C1);

PlotPattern = Dbar > C1bar;

//--------- Ve duong ------------------
if(LastValue(Plotpattern) AND be)
{
ColorX = colorRed;
// Ve duong XA, AB, BC
Plot( LineArray(LastValue(Xbar),LastValue(X),LastValue(Abar),LastValue(A)),"",ColorX ,styleThick);
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(Bbar),LastValue(B)),"",C olorX ,styleThick);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(C1bar),LastValue(C1)),"" ,ColorX ,styleThick);
Plot(LineArray(LastValue(C1bar),LastValue(C1),LastValue(Dbar),LastValue(D)),"" ,ColorX ,styleThick);
Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Bbar),LastValue(B)),"",C olorX ,styleDashed);
Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Abar),LastValue(A)),"",C olorX ,styleThick);
Plot(LineArray(LastValue(Abar),LastValue(A),LastValue(C1bar),LastValue(C1)),"" ,ColorX ,styleDashed);
Plot(LineArray(LastValue(Bbar),LastValue(B),LastValue(Dbar),LastValue(D)),"",C olorX ,styleDashed);
Plot(LineArray(LastValue(Xbar),LastValue(X),LastValue(Dbar),LastValue(D)),"",C olorX ,styleDashed);

// Viet cac gia tri Fibo tren duong XA, AB, BC
PlotText(NumToStr(LastValue(ABdXA),1.2),(LastValue(Bbar)+LastValue(Xbar))/2,(LastValue(B)+LastValue(X))/2,ColorX );
PlotText(NumToStr(LastValue(BCdAB),1.2),(LastValue(C1bar)+LastValue(Abar))/2,(LastValue(C1)+LastValue(A))/2,ColorX );
PlotText(NumToStr(LastValue(BCdCD),1.2) ,(LastValue(Dbar)+LastValue(Bbar))/2,(LastValue(D)+LastValue(B))/2,ColorX );
PlotText(NumToStr(LastValue(ADdXA),1.2) ,(LastValue(Dbar)+LastValue(Xbar))/2,(LastValue(D)+LastValue(X))/2,ColorX );

//---------- Viet cac diem X, A, B, C, D: by binhnd---------------------
xlech = -1;
ylech = 1;
PlotText("X",LastValue(Xbar) + xlech, LastValue(X) + ylech, ColorX );
PlotText("A",LastValue(Abar) + xlech, LastValue(A) - ylech, ColorX );
PlotText("B",LastValue(Bbar) + xlech, LastValue(B) + ylech, ColorX );
PlotText("C",LastValue(C1bar) + xlech, LastValue(C1) - ylech, ColorX );
PlotText("D",LastValue(Dbar) + xlech, LastValue(D) + ylech, ColorX );

//--------- Viet thuyet minh mo hinh: by binhnd--------------
if (strPattern!="")
{
strPattern = "Pattern: " + strPattern;
toadoaX = (LastValue(Dbar)+LastValue(Xbar))/2;
toadoY = (LastValue(D)+LastValue(X))/2;

PlotText(strPattern,toadoaX,toadoY+1,ColorX );
}

} // end of VE DUONG CHO MO HINH BEARISH BAT, GARTLEY, BUTTERFLY, CRAB




//=================================
// Show diem ho^~ tro. va` khang' cu. ko?
//=================================

plotFractals = ParamToggle("Plot Fractals","Off|On",1);
if(PlotFractals)
{
PlotShapes(shapeSmallCircle*P1,colorRed,0,H,10);
PlotShapes(shapeSmallCircle*V1,colorBlue,0,L,-10);
}



//==============================================
// DAT DIEU KIEN cho TIM KIEM BULL
//==============================================
dkBull = False;
ListBull = ParamList("Type of Bullish", "None|AB=CD|Gartley|Butterfly|Bat|Crab|All Patterns", 6);
if ( ListBull == "None" ) dkBull = True;
if ( ListBull =="AB=CD" ) dkBull = BullABCD ;
if ( ListBull =="Gartley" ) dkBull = BullGartley ;
if ( ListBull =="Butterfly" ) dkBull = BullButterfly ;
if ( ListBull =="Bat" ) dkBull = BullBat ;
if ( ListBull =="Crab" ) dkBull = BullCrab ;
if ( ListBull =="All Patterns") dkBull = (BullABCD) OR (BullGartley) OR (BullButterfly ) OR (BullBat ) OR (BullCrab);

//==============================================
// DAT DIEU KIEN cho TIM KIEM BEAR
//==============================================
dkBear = False;
ListBear = ParamList("Type of Bearish", "None|AB=CD|Gartley|Butterfly|Bat|Crab|All Patterns", 0);
if ( ListBear == "None" ) dkBear = True;
if ( ListBear =="AB=CD" ) dkBear = BearABCD ;
if ( ListBear =="Gartley" ) dkBear = BearGartley ;
if ( ListBear =="Butterfly" ) dkBear = BearButterfly ;
if ( ListBear =="Bat" ) dkBear = BearBat ;
if ( ListBear =="Crab" ) dkBear = BearCrab ;
if ( ListBear =="All Patterns") dkBear = (BearABCD ) OR (BearGartley ) OR (BearButterfly ) OR (BearBat ) OR (BearCrab );
//===============================

AddColumn(V,"Volume",1.0);
Filter = (dkBull) AND (dkBear);



رد مع اقتباس
قديم 27-06-2018, 01:52 PM
  المشاركه #4

عضو هوامير المميز

تاريخ التسجيل: Mar 2014
المشاركات: 5,853
صعنون1 غير متواجد حالياً  

اقتباس:
المشاركة الأصلية كتبت بواسطة أبو وريف مشاهدة المشاركة
الله يعطيك العافيه .... المعادله فيها اخطاء لا تعمل
اخوي شغاله تمام التمام اذا اخطاء فراغات قفلها وتشتغل

او نزل ايمي بروكر 6 اذا ماهو عندك ارسله لك


بالتوفيق



رد مع اقتباس
إضافة رد


الكلمات الدلالية (Tags)
لايمي, بروكر, harmonic, pattern

أدوات الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع



08:34 AM