Często piszę eksperty, i już dużo razy spotkałem się z dziwnym zjawiskiem.
Mianowicie, "sklejam" eksperta z gotowych funkcji, które poszczególnie działają poprawnie, a po "sklejeniu" do jednego Ea kod nie chcę sie wykonywać.
Wczoraj chciałem dopisać do jednego z Ea funkcję która by na początku miesiąca zamykała wszystkie zlecenia otworzone, wszystkię zlecenia oczekujące, oraz usuwała wszystkie obiekty z wykresu.
I albo za długo przesiedziałem przed komputerem, i nie widzę tam błędu w tym kodzie albo mql to dziadostwo.
poniżej przedstawiam kod:
Kod: Zaznacz cały
#property copyright "PF"
int start()
  {
//static int last=0;
//if(iTime(0,  PERIOD_MN1, 0)>last)
//{  last=Time[0]; zamknij_oczekujace(); CloseAll(OP_BUY);CloseAll(OP_SELL); czyszczenie(); Comment("powinnoczyscic");}
int t1=TimeMonth(iTime(0,0,0));
int t2=TimeMonth(iTime(0,0,1));
Comment(t1," != ",t2);
if(t1!=t2){czyszczenie();zamknij_oczekujace();CloseAll(OP_BUY);CloseAll(OP_SELL); Comment("powinnoczyscic");}
   return(0);
  }
//+------------------------------------------------------------------+
int czyszczenie()
{string nazwa;
for(int i=0;i<ObjectsTotal();i++)  {nazwa=ObjectName(i); ObjectDelete("nazwa");}
}
////////
int zamknij_oczekujace()           
{for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)  { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);  OrderDelete(OrderTicket());} 
return(0); 
}
///////
void CloseAll(int cmd) 
{ for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) 
  { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
    if (OrderSymbol() == Symbol()) 
    {if (OrderType()==cmd&&cmd==OP_BUY ) 
        OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); 
        if (OrderType()==cmd&&cmd==OP_SELL ) 
         OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); 
} } } z tym problemem
Pozdrowienia
 
							



 ,ale nie rozwiązuje to całego problemu, a dopiero 1/3
 ,ale nie rozwiązuje to całego problemu, a dopiero 1/3