void OnTick()
{
int h = 0;
double pf = 0.;
bool doit = false;
int phase = 0;
int k = 0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
for(int j=0;j<ArraySize(result);j++)
{
if(StringToInteger(result[j])==OrderMagicNumber())
{
o[k].t = OrderTicket();
pf = OrderProfit()+OrderSwap()+OrderCommission();
if(pf>o[k].max && pf>0.0)o[k].max=pf;
k++;
}
}
}
//-------
for(int i=k;i>=0;i--)
{
if(!OrderSelect(o[i].t,SELECT_BY_TICKET))continue;
h = (int)((TimeCurrent()-OrderOpenTime())/3600);
pf = OrderProfit()+OrderSwap()+OrderCommission();
doit = false;
phase = (h<hour1)*0+(h>=hour1 && h<hour2)*1+(h>=hour2 && h<hour3 && pf>0.0)*2+(h>=hour3)*3;
switch(phase)
{
case 2:
case 3:doit=true;break;
case 1:if(pf<o[i].max*per/100.0) doit=true;
break;
default:o[i].max = 0.0;break;
}
if(doit && OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10))o[i].max = 0.0;
}
}
//+------------------------------------------------------------------+
发表评论