Jedna pozycja na danej parze

O jezykach programowania w platformach i nie tylko.
daamiian
Stały bywalec
Stały bywalec
Posty: 26
Rejestracja: 31 gru 2009, 00:42

Jedna pozycja na danej parze

Nieprzeczytany post autor: daamiian »

Witam

Jak zrobić aby EA nie otwierało więcej niż jednej pozycji na danej parze?
Użyłem opcji szukaj ale znalazłem tylko rozwiązanie dotyczące ogólnie jednej otwartej pozycji .

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

Nieprzeczytany post autor: Pierz Andrzej »

np taka funkcja :

Kod: Zaznacz cały

int total(int cmd)
{
   int sum = 0;
   for (int i=OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if (Symbol() == OrderSymbol() && MagicNumber == OrderMagicNumber() && cmd == OrderType()) sum ++;
   }
   return(sum);
}
EDIT : edytowalem bo zle zrozumialem ;) a podobne tematy z tego co pamietam juz byly
pzdr Andrzej

Dodano po 32 minutach:

http://www.forex.nawigator.biz/dyskusje ... hp?t=15108
http://www.forex.nawigator.biz/dyskusje ... 832#208832
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
thisredone
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 05 sie 2010, 17:07

Nieprzeczytany post autor: thisredone »

Kod: Zaznacz cały

bool isInTrade(string para) 
{ 
   for(int i=0;i<OrdersTotal();i++) 
   { 
      OrderSelect(i,SELECT_BY_POS); 
      if(OrderSymbol()==para) return(true);
   } 
   return(false);
}
bardziej na temat niż funkcja Andrzeja, jeśli twój robot pracuje na kilku parach na raz.
Używasz w ten sposób:

Kod: Zaznacz cały

if(isInTrade("EURUSD"))
   Alert("Jestem w trejdzie na EDWARDZIE!");
else Alert("Nie jestem w trejdzie na edwardzie ;(");

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

Nieprzeczytany post autor: Pierz Andrzej »

thisredone pisze:bardziej na temat niż funkcja Andrzeja, jeśli twój robot pracuje na kilku parach na raz.
chcialbym ale nie moge sie z Toba zgodzic ;)

ciezko zrozumiec o co autorowi dokladnie chodzilo czy o to ze puszcza na Edku 10 roznych expertow i chce zeby w jednym czasie mogl miec otwarte zlecenie 1 expert a 9 innych ma byc zablokowanych ??

czy tak jak ja to zrozumialem ze chce zeby expert nie otwieral wiecej niz jedna transakcje na danej parze walutowej .....

oczywiscie mozna z mojej funkcji wyzucic cmd i sprawdzanie typu zlecen ale to juz jak komu pasuje ;)

wyobrazmy sobie sytuacje ze na Edku mam experta i gram recznie ..... kozystajac z Twojej funkcji expert mi nie otworzy zlecenia jak sam sobie jakies zlecenie otworze recznie .... no ale moze o to wlasnie autorowi chodzilo ;)

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
thisredone
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 05 sie 2010, 17:07

Nieprzeczytany post autor: thisredone »

chodzi mi o to, że w celu sprawdzenia czy robot jest już na danej parce w trade musiałby zrobić coś takiego

Kod: Zaznacz cały

bool jestem_w_trade = false
for(int i=0;i<6;i++)
   if(total(i)>0){
   jestem_w_trade=true;break;}
Wiem, że można by wyrzucić cmd ale wtedy nadal, uważam, niepotrzebnie byłaby to funkcja zliczająca.

Dodatkowo funkcja wymagałaby modyfikacji jeśli robot pracuje na więcej niż jednej parce na raz.

Natomiast jeśli na jednej parce ma kilka robotów to trzeba by dodać do mojej funkcji sprawdzenie MagicNumber.

daamiian
Stały bywalec
Stały bywalec
Posty: 26
Rejestracja: 31 gru 2009, 00:42

Nieprzeczytany post autor: daamiian »

Pierz Andrzej pisze:czy tak jak ja to zrozumialem ze chce zeby expert nie otwieral wiecej niz jedna transakcje na danej parze walutowej
Dokładnie , jeden EA pracujący jednocześnie na kilku parach.

Dzięki za pomoc :wink:

Awatar użytkownika
thisredone
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 05 sie 2010, 17:07

Nieprzeczytany post autor: thisredone »

Nie chcę być wścibski ale wy się za bardzo nie rozumiecie ;p

Andrzej napisał to z naciskiem na 'danej' ponieważ jego funkcja działa tylko na pojedynczej parce, tej na której system jest zapuszczony.
Jeśli upierasz się żeby jej użyć pamiętaj o dodaniu zmiennej oznaczającej parkę.

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

Nieprzeczytany post autor: Pierz Andrzej »

akurat skopiowalem funkcje z experta ktorego mialem otwrtego a jest to sys typu Grid ;) dlatego jest funkcja zliczajaca .......

pzdr Andrzej

Dodano po 5 minutach:
daamiian pisze:Dokładnie , jeden EA pracujący jednocześnie na kilku parach.
ale poczekaj experta zapusczasz np na EURUSD a on otwiera transkacje np na EURUSD,GBPUSD i EURGBP ??

czy pusczasz experta na EURUSD i on otwiera tylko na EURUSD ??

pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

daamiian
Stały bywalec
Stały bywalec
Posty: 26
Rejestracja: 31 gru 2009, 00:42

Nieprzeczytany post autor: daamiian »

Generalnie Ten sam EA działa na kilku parach. Dokładnie chodzi o to że otwiera pozycję jeśli cena przetnie linie poziomą na wykresie , a wiadomo że cena może wrócić i przeciąć jeszcze raz tą linie a my nie chcemy kolejnej otwartej pozycji :wink: Ale nasza otwarta pozycja nie powinna przeszkodzić w zajęciu pozycji na innej parze :wink:

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

Nieprzeczytany post autor: Pierz Andrzej »

czyli jeszczeze mna nie jest tak zle .... ;) .. dobrze zrozumialem ... :)

dla zaspokojenia kolegi thisredone

Kod: Zaznacz cały

int total() 
 { 
    for (int i=OrdersTotal()-1;i>=0;i--) 
    { 
       OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
       if (Symbol() == OrderSymbol() && MagicNumber == OrderMagicNumber() ) return(1); 
    } 
    return(0); 
 }
pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ