jak sprawdzić czy jest juz otwarte zlecenie?

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

jak sprawdzić czy jest juz otwarte zlecenie?

Nieprzeczytany post autor: siersciuch »

Jest jakaś funkcja która zwraca mi ilość lub rodzaj otwartych zleceń?
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

OrderTotal() - ilosc

Dla rodzaju, musisz sobie przeleciec sie po nich wszystkich OrderSelect() i sprawdzic OrderType()

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

http://www.forex.nawigator.biz/dyskusje ... 832#208832
Nie uwzględnia oczekujących ale łatwo to można zmodyfikować.
Ostatnio zmieniony 21 mar 2011, 16:02 przez Tig3r, łącznie zmieniany 1 raz.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

LowcaG pisze:OrderTotal() - ilosc

Dla rodzaju, musisz sobie przeleciec sie po nich wszystkich OrderSelect() i sprawdzic OrderType()

o dzięki, gdzieś mi się obiły te funkcje, ale znaleźć nie mogłem :) thx za ekspresową pomoc
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Nie korzystaj z OrderTotal bo to poda Ci wszystkie zlecenia - nawet innego EA!
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

Tig3r pisze:Nie korzystaj z OrderTotal bo to poda Ci wszystkie zlecenia - nawet innego EA!
To fakt, nie wiem czy chcesz totalna liczbe otwartych zlecen, czy tylko
- na danej parze wtedy OrderSymbol()==Symbol()
- otwarte przez dane EA OrderMagicNumber()==MAGIC (jakis twoj)

Tig3r dal pomocnego linka.
(chociaz z OrderTotal i tak musisz skorzystac ;) )

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

chodzi poprostu, oto, ze jak mam juz otwarte zlecenie, zeby kolejnych nie otwierało

coś takiego?


if(OrderSelect(ticket, SELECT_BY_TICKET)!=true)
{
if(warunek)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,Bidsl*Point,Bid+takeprofit*Point);
}
}
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

siersciuch pisze:chodzi poprostu, oto, ze jak mam juz otwarte zlecenie, zeby kolejnych nie otwierało
Jakiekolwiek zlecenie? czy na danej parze i okreslonym Magicu?

Jesli chodzi o rade, to nie polecam robic tyle ifow w ifach, to pozniej kiepsko sie czyta i trudno wykrywa bledy.

dlatego. cala operacje otwierania pozycji zamknij w funkcji np.
(improwizuje, musze wyjsc, wiec na lapu capu ;) )

Kod: Zaznacz cały

void otworz_pozycje(){
   if (!czy_moge_otworzyc()) return; //tu jest funkcja sprawdzajaca Twoje ordery

   if (warunek){
    OrderSend....
  }
}

//a funckja moze wygladac tak
boolean czy_moge_otworzyc(){
    int l_total = OrderTotal();

    For(int i = 0;i<l_total;i++){
      if(!OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) continue;   
      if (OrderSymbol() != Symbol()) continue; //jezeli tylko symbol
    / /tez z magicem jak chcez
      return(false);
  
   }
   return(true);
}


Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

LowcaG pisze:(improwizuje, musze wyjsc, wiec na lapu capu Wink )
a juz mialem sie zapytac czy cos dzisiaj piles :P ??

przepraszam za OT ale nie moglem sie powstrzymac

pozdrawiam
Andrzej

Dodano po 2 minutach:

tak wyglada moja funkcja :)

Kod: Zaznacz cały

int total(int cmd)
{
   int sum = 0;
   RefreshRates();
   for (int i=0;i<=OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if (Symbol()==OrderSymbol() && cmd==OrderType() && MagicNumber==OrderMagicNumber()) sum++;
   }
   return(sum);
}
i np dla kupna sprawdzasz sobie

Kod: Zaznacz cały

if (total(OP_BUY)==0 && Twoje_wrunki) Ordersend(.....,OP_BUY,......);
i odwrotnie dla sell ;)

pzdr Andrzej

Awatar użytkownika
siersciuch
Pasjonat
Pasjonat
Posty: 407
Rejestracja: 06 kwie 2010, 20:31

Nieprzeczytany post autor: siersciuch »

cmd co to jest?
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

ODPOWIEDZ