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