np.
funkcja OrderTicket() zwraca ci numer ticket zlecenia ktore wybrales przy pomocy OrderSelect();
http://docs.mql4.com/trading/OrderTicket
wiec nie wiem co ci zwraca:
Kod: Zaznacz cały
int Ticket=OrderTicket();
i ten komunikat bedzie ci sie drukowal z kazda nowa swieca...
a obie pozycje ktore sa dalej w kodzie po tym warunku i tak ci sie otworza bez wzgledu na to czy Ticket > 0 czy nie.... a chyba wlasnie o to ci chodzi, zeby jak te pozycje sa juz otwarte, to zeby NIE otwieraly sie dalsze....
a w twoim przypadku, jak przyjdzie nowa swieca to otworzy ci 2 kolejne pozycje....
rozumiem, ze w tablicy orderOpened[2] masz zamiar zapisywac czy obie pozycje sa juz otwarte czy nie.... w takim wypadku po otwarciu pierwszej pozycji powinienes napisac:
Kod: Zaznacz cały
orderOpened[0]=true;
Kod: Zaznacz cały
orderOpened[1]=true;
Kod: Zaznacz cały
orderOpened[id]=true;
a ten warunek to zmienilbym w takim wypadku na mniej wiecej cos takiego:
Kod: Zaznacz cały
if( orderOpened[0]==false) // czyli jesli long nie jest postawiony to go postaw
{
OP=W+BuyStop*Point;
TP=OP+TakeProfit*Point;
SL=OP-StopLoss*Point;
Ticket=OrderSend(Symbol(),4,Lot,OP,2,SL,TP,"",0); // error handling
orderOpened[0]=true;
}
if( orderOpened[1]==false) // czyli jesli short nie jest postawiony to go postaw
{
OP=W-SellStop*Point;
TP=OP-TakeProfit*Point;
SL=OP+StopLoss*Point;
Ticket=OrderSend(Symbol(),5,Lot,OP,2,SL,TP,"",0);
orderOpened[1]=true;
}
i znowu ci go otworzy z nawa swieca.