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.
Prosty problem
Prosty problem
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Prosty problem
Przed int start() dodajesz funkcję sprawdzającą ilość otwartych pozycji na instrumencie na którym uruchomiony jest dany ea:
Później już w pętli programu w miejscu gdzie otwiera zlecenia dodajesz warunek
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);
}
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
Albert Einstein
Re: Prosty problem
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łę?

Pomogło.

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łę?
Re: Prosty problem
Można to zrobić w banalny sposób i wykorzystać dodatkową zmienną np. x.
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ą.
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 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
Albert Einstein
Re: Prosty problem
Dziękuję bardzo. 
Proszę moderatorów jeżeli to możliwe o dodanie pochwały Japco. Bardzo pomocny forumowicz.

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