Przeciwstawne pozycje

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

Przeciwstawne pozycje

Nieprzeczytany post autor: siersciuch »

Mam pomysł, jak to napisać ale nieidzła :D, Może ktoś mi cos podopowie. Jak zrobić , zeby nie otwierał sie np short jak juz jest long.
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 »

Zrób pętle sprawdzająca wszystkie zlecenia aktywne danego EA i oznaczaj jak jest zawarty jakiś short/long
======================================================
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 »

Dodałem do warkunku OP_BUY, zeby uzyskać "jesli ilość otwartych long i Short jest równa zero, to otwórz short".

Kod: Zaznacz cały

(total(OP_SELL)==0
daje to ze nieotworzy sie kolejny short jak już jest otwarty

Kod: Zaznacz cały

(total(OP_BUY)==0
to ze nie otworzy sie przeciwstawna pozycja, czyli nie otworzy sie short jak juz jest long otwarty.

Kod: Zaznacz cały

if (total(OP_SELL)==0 && total(OP_BUY)==0 &&...........)
{
OrderSend(Symbol(),OP_SELL...................
}


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()) sum++;
   }
   return(sum);
}


Tylko niewiem, teraz dlaczego jak włączę tester to żadne zlecenie nie chce sie odaplić. Cena sobie skacze warunki na otwarcie pozycji sie pojawiają ale nic sie nie dzieje. hmmmm
Ostatnio zmieniony 13 kwie 2011, 20:42 przez siersciuch, łącznie zmieniany 1 raz.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Spróbuj tak :

Kod: Zaznacz cały

int total(int cmd)
{
   int sum=0;
   for ( int i=0;i<=OrdersTotal();i++)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if (OrderSymbol()==Symbol() && cmd ==OrderType() && MagicNumber==OrderMagicNumber()) sum++;
   }
   return(sum);
}
MagicNumber zmień sobie do swojej nazwy Magic.
Solą życia jest kasa.

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

Nieprzeczytany post autor: siersciuch »

dobra gra wszystko :)

dodanie

Kod: Zaznacz cały

&& total(OP_BUY)==0 
pomogło, to co mówiłem, ze nie otwiera mi żadnego zlecenia, to było przez błędy gdzie indziej.
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.

ODPOWIEDZ