Jedna pozycja na danej parze
Jedna pozycja na danej parze
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 .
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 .
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
np taka funkcja :
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
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);
}

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
Andrzej Pierz
FOREX-SERVICE
- thisredone
- Stały bywalec
- Posty: 72
- Rejestracja: 05 sie 2010, 17:07
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);
}
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 ;(");
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
chcialbym ale nie moge sie z Toba zgodzicthisredone pisze:bardziej na temat niż funkcja Andrzeja, jeśli twój robot pracuje na kilku parach na raz.

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
Andrzej Pierz
FOREX-SERVICE
- thisredone
- Stały bywalec
- Posty: 72
- Rejestracja: 05 sie 2010, 17:07
chodzi mi o to, że w celu sprawdzenia czy robot jest już na danej parce w trade musiałby zrobić coś takiego
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.
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;}
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.
- thisredone
- Stały bywalec
- Posty: 72
- Rejestracja: 05 sie 2010, 17:07
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
akurat skopiowalem funkcje z experta ktorego mialem otwrtego a jest to sys typu Grid
dlatego jest funkcja zliczajaca .......
pzdr Andrzej
Dodano po 5 minutach:
czy pusczasz experta na EURUSD i on otwiera tylko na EURUSD ??
pzdr Andrzej

pzdr Andrzej
Dodano po 5 minutach:
ale poczekaj experta zapusczasz np na EURUSD a on otwiera transkacje np na EURUSD,GBPUSD i EURGBP ??daamiian pisze:Dokładnie , jeden EA pracujący jednocześnie na kilku parach.
czy pusczasz experta na EURUSD i on otwiera tylko na EURUSD ??
pzdr Andrzej
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE
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
Ale nasza otwarta pozycja nie powinna przeszkodzić w zajęciu pozycji na innej parze 


- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
czyli jeszczeze mna nie jest tak zle ....
.. dobrze zrozumialem ... 
dla zaspokojenia kolegi thisredone
pzdr Andrzej


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);
}
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE