
#property strict
input int XD=1;//max spread
input double LS=0.1;//manual lot size
input int MB=0;//min balance
datetime tlast;
//---
int OnInit()
{
tlast=INT_MAX;
return INIT_SUCCEEDED;
}
//---
void OnTick()
{
double UP=iCustom(NULL,0,"iBS",0,1);
double DN=iCustom(NULL,0,"iBS",1,1);

double UP1=iCustom(NULL,0,"iBS",0,1);
double UP2=iCustom(NULL,0,"iBS",0,2);
double DN1=iCustom(NULL,0,"iBS",1,1);
double DN2=iCustom(NULL,0,"iBS",1,2);
double spd=MarketInfo(Symbol(),MODE_SPREAD);
bool res;
Comment("Up1: "+DoubleToStr(UP1,3));
//- open
if(Time[0]>tlast && spd<=XD && AccountBalance()>=MB)
{
if((UP1!=EMPTY_VALUE && DN1==EMPTY_VALUE) && (DN2!=EMPTY_VALUE && UP2==EMPTY_VALUE))
res=OrderSend(Symbol(),OP_BUY,LS,Ask,3,0,0);
if((UP2!=EMPTY_VALUE && DN2==EMPTY_VALUE) && (DN1!=EMPTY_VALUE && UP1==EMPTY_VALUE))
res=OrderSend(Symbol(),OP_SELL,LS,Bid,3,0,0);
}
//- close
for(int i=OrdersTotal();i>=0;i--)
{
if(OrderSelect(i, SELECT_BY_POS)==true)
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
if((UP2!=EMPTY_VALUE && DN2==EMPTY_VALUE) && (DN1!=EMPTY_VALUE && UP1==EMPTY_VALUE))
res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3);    
}
if(OrderType()==OP_SELL)
{
if((UP1!=EMPTY_VALUE && DN1==EMPTY_VALUE) && (DN2!=EMPTY_VALUE && UP2==EMPTY_VALUE))
res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3);    
}
}  
}
//-
tlast=Time[0];
}
//---