58 lines
1.1 KiB
Text
58 lines
1.1 KiB
Text
|
|
#property strict
|
||
|
|
|
||
|
|
int OnInit()
|
||
|
|
{
|
||
|
|
Print("SMC_BOS_EA Loaded");
|
||
|
|
return(INIT_SUCCEEDED);
|
||
|
|
}
|
||
|
|
|
||
|
|
void OnTick()
|
||
|
|
{
|
||
|
|
if(IsSwingHigh(2))
|
||
|
|
Print("Swing High Found");
|
||
|
|
|
||
|
|
if(IsSwingLow(2))
|
||
|
|
Print("Swing Low Found");
|
||
|
|
}
|
||
|
|
|
||
|
|
bool IsSwingHigh(int shift)
|
||
|
|
{
|
||
|
|
return High[shift] > High[shift+1] &&
|
||
|
|
High[shift] > High[shift+2] &&
|
||
|
|
High[shift] > High[shift-1] &&
|
||
|
|
High[shift] > High[shift-2];
|
||
|
|
}
|
||
|
|
|
||
|
|
bool IsSwingLow(int shift)
|
||
|
|
{
|
||
|
|
return Low[shift] < Low[shift+1] &&
|
||
|
|
Low[shift] < Low[shift+2] &&
|
||
|
|
Low[shift] < Low[shift-1] &&
|
||
|
|
Low[shift] < Low[shift-2];
|
||
|
|
}
|
||
|
|
|
||
|
|
bool BuyLiquiditySweep(int shift)
|
||
|
|
{
|
||
|
|
return Low[shift] < Low[shift+1] - 5 * _Point &&
|
||
|
|
Close[shift] > Low[shift+1];
|
||
|
|
}
|
||
|
|
|
||
|
|
bool SellLiquiditySweep(int shift)
|
||
|
|
{
|
||
|
|
return High[shift] > High[shift+1] + 5 * _Point &&
|
||
|
|
Close[shift] < High[shift+1];
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
if(IsSwingHigh(2))
|
||
|
|
Print("Swing High Found");
|
||
|
|
|
||
|
|
if(IsSwingLow(2))
|
||
|
|
Print("Swing Low Found");
|
||
|
|
|
||
|
|
if(BuyLiquiditySweep(1))
|
||
|
|
Print("BUY Liquidity Sweep Found");
|
||
|
|
|
||
|
|
if(SellLiquiditySweep(1))
|
||
|
|
Print("SELL Liquidity Sweep Found");
|
||
|
|
}
|