Jak wybrać trzecią pozycję od końca z historii?

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Jak wybrać trzecią pozycję od końca z historii?

Nieprzeczytany post autor: NiceFox »

Ten kod działa ale jak broker wrzuca balance do historii to bierze trzeci ticket od końca, jak to poprawić?

Kod: Zaznacz cały

for (int i=OrdersHistoryTotal()-3;i>=OrdersHistoryTotal()-3;i--) // trzecie od końca

{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 


}
Pieniądze rosną na drzewie cierpliwości.

robs
Gaduła
Gaduła
Posty: 196
Rejestracja: 22 sty 2010, 03:05

Nieprzeczytany post autor: robs »

Po co pętla. Przecież to jest to samo co

Kod: Zaznacz cały

int i=OrdersHistoryTotal()-3;
if (i >= 0)
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);

Awatar użytkownika
NiceFox
Pasjonat
Pasjonat
Posty: 454
Rejestracja: 05 lis 2009, 13:22

Nieprzeczytany post autor: NiceFox »

robs pisze:Po co pętla. Przecież to jest to samo co

Kod: Zaznacz cały

int i=OrdersHistoryTotal()-3;
if (i >= 0)
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
no ale i tak to nic nie zmienia będzie trzeci ticket od końca, a potrzebne jest trzecie zlecenie (buy lub sell) od końca.
Pieniądze rosną na drzewie cierpliwości.

robs
Gaduła
Gaduła
Posty: 196
Rejestracja: 22 sty 2010, 03:05

Nieprzeczytany post autor: robs »

Pewnie coś w tym stylu

Kod: Zaznacz cały

#include <WinUser32.mqh>

int orderNr = 3;

int start()
  {
//----
   int k = 0;
   for (int i=OrdersHistoryTotal()-1;i>=0 && k < orderNr;i--) // trzecie od kon'ca
   {
      OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if (OrderType() == OP_BUY || OrderType() == OP_SELL)
         k = k + 1;
   }
   
   if (k > 0 && k == orderNr)
      MessageBox( DoubleToStr(OrderTicket(),0));
   
//----
   return(0);
  }

ODPOWIEDZ