witam, mam pytanko związane z funkcją OrderSelect więc podczepiam się, moze też ktoś skorzysta.
otóż tak:
1. mam jednocześnie otwarte dwie karty, EURUSD (kwotowane 4 cyfry) i EURUSD:) (kwotowane 5 cyfr)
2. na obu kartach chodzi ten sam wskażnik. Jedna z jego funkcji ma odnaleźć OSTATNIĄ (czyli najnowszą) otwartą transakcję z danego symbolu. Czyli na karcie EURUSD powinno mi wyświetlić ostatnią transakcję z symbolu EURUSD a na karcie EURUSD:) ostatnią otwartą transakcję z tegoż symbolu.
3. niestety, gnebiony przeze mnie skrypt wyświetla na obu kartach tę samą, ostatnią w kolejności (czyli najnowszą otwartą) transakcję, mimo że zmienna symbolu rozpoznawana jest własciwie tzn. na każdej karcie wyświetlana jest inna.
bardzo prosze o ew. korektę używanego przeze mnie skryptu lub jakis odkrywczy, świeży pomysł
i dzieki serdecznie za pomoc
Kod: Zaznacz cały
for(pos=0; pos <OrdersTotal() ; pos++) // liczenie od tyłu
if (OrderSelect(pos, SELECT_BY_POS) )
{
TicketType=OrderType(); //OP_BUY OP_SELL
if (TicketType == OP_BUY)
{TicketTypeStr = "B";}
else if (TicketType == OP_SELL)
{TicketTypeStr = "S";}
}
w efekcie mamy też DoubleToStr(OrderOpenPrice() która jest używana do wyświetlenia ceny zawarcia danej transakcji
niestety, chwyt typu
if (OrderSelect(pos, SELECT_BY_POS) && OrderSymbol() == Symbol() )
i jego pochodne nie działają. Oczywiście, można by go ograniczyc do czytania po wskazanym symbolu ale, z natury rzeczy, lepsze są rozwiazania ogólne niż szczegółowe
Właściwie - na wyjściu potrzebne mi są następujące informacje związane z ostatnią zawartą otwartą transakcją dla symbolu na którego karcie będą wyświetlane
1.TicketTypeStr
2. DoubleToStr(OrderOpenPrice()