Prosty problem

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Nyxa
Gaduła
Gaduła
Posty: 139
Rejestracja: 04 gru 2011, 16:19

Prosty problem

Nieprzeczytany post autor: Nyxa »

Witam wszystkich.

Jestem początkującym programistą i kompletnie zielony w temacie. Do zrobienia własnego EA używałem programu z tej strony:

LINK: http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/

Na podstawie tego uczę się powoli kodu ale bardzo proszę o pomoc z jedną kwestią. Otóż moje EA bazuje na przykładowej Moving Average 170, low i high. Otwiera pozycje kupna jak cena jest nad średnią, sprzedaży jak cena jest pod średnią. I teraz moje pytanie: Co zrobić żeby EA otwierało tylko jedno zlecenie kupna po przekroczeniu średniej od dołu i tylko jedno zlecenie sprzedaży po przekroczeniu średniej od góry? Teraz to wygląda tak, że otwiera nawet kilka - kilkanaście pozycji na tej samej świecy. Mi wystarczyłoby jakby otwierał jedną buy, potem czekał aż cena spadnie poniżej średniej i otworzył wtedy SELL, i znów poczekał ale tym razem aż cena wzrośnie powyżej średniej i wtedy kupił - i tak w kółko.

Na pewno jest to prosta funkcja. Bardzo proszę o wyrozumiałość i pomoc.

W załączniku przesyłam swoje EA.
Robot3.mq4
1111.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Japco
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 24 lip 2010, 20:42

Re: Prosty problem

Nieprzeczytany post autor: Japco »

Przed int start() dodajesz funkcję sprawdzającą ilość otwartych pozycji na instrumencie na którym uruchomiony jest dany ea:

Kod: Zaznacz cały

int Kupno, Sprzedaz; //ilość otwartych pozycji krótkich i długich

int OtwartePozycje()
 {
 Kupno=0; Sprzedaz=0;
 for(int a = OrdersTotal() - 1; a >= 0; a--)
  {
  OrderSelect(a,SELECT_BY_POS,MODE_TRADES);
  if(OrderSymbol()==Symbol())
  {
  if (OrderType()==OP_BUY) Kupno++;
  if (OrderType()==OP_SELL) Sprzedaz++;
  }
  }
 return(Kupno+Sprzedaz);
 }
Później już w pętli programu w miejscu gdzie otwiera zlecenia dodajesz warunek

Kod: Zaznacz cały

if (OtwartePozycje()==0 && jakieś twoje warunki otwarcia) 
{
otwórz pozycję
}
"Szaleństwem jest robić wciąż to samo i oczekiwać rożnych rezultatów".

Albert Einstein

Awatar użytkownika
Nyxa
Gaduła
Gaduła
Posty: 139
Rejestracja: 04 gru 2011, 16:19

Re: Prosty problem

Nieprzeczytany post autor: Nyxa »

Japco dziękuję bardzo. :)

Pomogło. :) Już EA otwiera jedną pozycję jednocześnie ale pojawił się już ostatni problem. Jak zrobić żeby EA otworzyło tą jedną transakcję na przecięciu średniej, która zostanie zamknięta małym TP lub małym SL, a potem poczekało i otworzyło kolejną transakcję ale odwrotną. Czyli najpierw ma otworzyć BUY na przecięciu górnej, a potem SELL na przecięciu dolnej, następnie znów BUY na przecięciu górnej i tak dalej.

Prostszymi słowy mówiąc chodzi mi o to aby po spełnieniu warunków dla BUY, otworzyło kolejną transakcję dopiero wtedy kiedy zostanie spełniony warunek dla SELL. Bo jeżeli ustawiłem, że EA przeprowadza transakcję BUY wtedy kiedy cena jest powyżej średniej to moje EA robi to cały kiedy jest powyżej tej średniej, a ja chcę żeby otworzyło tą pierwszą transakcję i potem poczekało na warunek SELL.


P.S. Jak się daje komuś pochwałę?

Awatar użytkownika
Japco
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 24 lip 2010, 20:42

Re: Prosty problem

Nieprzeczytany post autor: Japco »

Można to zrobić w banalny sposób i wykorzystać dodatkową zmienną np. x.

Kod: Zaznacz cały

int x=0; // dodatkowa zmienna

int start()
{

if (warunek dla otwarcia Buy && x!=1)
{
otwórz Buy
x=1;
}

if (warunek dla otwarcia Sell && x!=2)
{
otwórz Sell
x=2;
}
}
Nie wiem jak jest z pochwałami, sam kiedyś tego szukałem :? Nie wiem czy nie jest tak, że pochwały dają sami admini.

Nie wiem czy nie powinieneś zrobić żeby ea otwierał zlecenie dopiero jak przetnie średnią już zamknięta świeczka. Bo niezamknięta świeczka może skakać kilkanaście razy pod średnią i nad nią.
"Szaleństwem jest robić wciąż to samo i oczekiwać rożnych rezultatów".

Albert Einstein

Awatar użytkownika
Nyxa
Gaduła
Gaduła
Posty: 139
Rejestracja: 04 gru 2011, 16:19

Re: Prosty problem

Nieprzeczytany post autor: Nyxa »

Dziękuję bardzo. :)


Proszę moderatorów jeżeli to możliwe o dodanie pochwały Japco. Bardzo pomocny forumowicz.

ODPOWIEDZ