
Dodałem OrderSelect i jest jeszcze gorzej. Otwiera masę pozycji.
I coś jest nie tak z tą funkcją bo obliczenia mam dobrze. Jak wrzucę je jako wskaźnik to ładnie rysuje jak należy. A pozycji zawierać nie chce.
Panowie co tu nie gra?
Kod: Zaznacz cały
void ReversPos()
{
if((Short[i+1]==0)&&(Short[i]>0)) //jeżeli pada sygnał na krótką
{
if (OrdersTotal()==0) //jeżeli nie ma otwartych pozycji
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"",MAGICV,0,Red); //zajmij pozycję krótką
}
for(int j=0;j<OrdersTotal();j++) //dla wszystkich owartych pozycji
{
if(OrderType()==OP_BUY) //jezeli otwarte długie
{
OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
OrderClose(OrderTicket(),OrderLots(),Bid,3,White); //zamknij
OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"",MAGICV,0,Red); //otwórz krótką
}
}//END for
}//END sygnał na krótką
else if((Long[i+1]==0)&&(Long[i]>0)) //jeżeli sygnał pada na długą
{
if (OrdersTotal()==0) //jeżeli nie ma otwartych pozycji
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"",MAGICV,0,Blue); //zajmij pozycję długą
}
for(int k=0;k<OrdersTotal();k++) //dla wszystkich owartych pozycji
{
if(OrderType()==OP_SELL) //jezeli otwarta krótka
{
OrderSelect(k,SELECT_BY_POS,MODE_TRADES);
OrderClose(OrderTicket(),OrderLots(),Ask,3,White); //zamknij
OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICV,0,Blue); //otwórz długą
}
}//END for
}//END sygnał na długą
}//END ReversPos()