Kod, polecenie zamykające EA.

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
arkoni
Gaduła
Gaduła
Posty: 173
Rejestracja: 27 gru 2011, 12:19

Kod, polecenie zamykające EA.

Nieprzeczytany post autor: arkoni »

Czy zna ktoś sposób na wymuszenie samo zamknięcia się EA, np. po spełnieniu jakiegoś warunku.
Samo polecenie zamknięcia i warunek ma znajdować się w zamykanym EA.

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: Kod, polecenie zamykające EA.

Nieprzeczytany post autor: WojtexWay »

Co prawda nie będzie to "zamknięcie" się EA, ale najprościej będzie uniemożliwienie mu handlu po spełnieniu się warunku np. w ten sposób:

Kod: Zaznacz cały

bool stop_trade = false;

void start()
{
if(!stop_trade)
 {
 //...
 if(warunek)
  {
  //...
  stop_trade = true;
  }
 }
}
Ten sposób poza prostotą ma jeszcze jedną zaletę - możesz przywrócić EA do działania, np. gdy spełni się inny warunek lub ustanie ten poprzedni.
Można również "uśpić" EA na pewien czas.

Awatar użytkownika
arkoni
Gaduła
Gaduła
Posty: 173
Rejestracja: 27 gru 2011, 12:19

Re: Kod, polecenie zamykające EA.

Nieprzeczytany post autor: arkoni »

Dzięki za odpowiedź.
Używam EA do modyfikowania SL i... ręcznego otwierania zleceń.
Zaimplementowałem w niej kod ze skryptu. Po przeciągnięciu EA na wykres, wylicza on wielkość zlecenia, SL i TP, i otwiera je, po czym przechodzi do modyfikowania SL. Po zamknięciu zlecenia przechodzi właśnie w stan uśpienia.
Niestety - zarówno funkcja init jak i start, po ponownym uruchomieniu mt4, po prostu automatycznie otworzy mi ponownie zlecenie, jeżeli wcześniej zapomnę go usunąć z wykresu.
Pozostaje mi albo zaimplementować w EA kod zamykający go automatycznie, albo zrobienie czegoś odwrotnego - zaimplementowanie funkcji EA w skrypcie, ale to już by było postawienie problemu na głowie i zapewne generowało by wiele błędów.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Re: Kod, polecenie zamykające EA.

Nieprzeczytany post autor: LowcaG »

arkoni pisze:Dzięki za odpowiedź.
Używam EA do modyfikowania SL i... ręcznego otwierania zleceń.
Zaimplementowałem w niej kod ze skryptu. Po przeciągnięciu EA na wykres, wylicza on wielkość zlecenia, SL i TP, i otwiera je, po czym przechodzi do modyfikowania SL. Po zamknięciu zlecenia przechodzi właśnie w stan uśpienia.
Niestety - zarówno funkcja init jak i start, po ponownym uruchomieniu mt4, po prostu automatycznie otworzy mi ponownie zlecenie, jeżeli wcześniej zapomnę go usunąć z wykresu.
Pozostaje mi albo zaimplementować w EA kod zamykający go automatycznie, albo zrobienie czegoś odwrotnego - zaimplementowanie funkcji EA w skrypcie, ale to już by było postawienie problemu na głowie i zapewne generowało by wiele błędów.
Możesz użyć np. zmiennej globalnej (są trwałe po włączeniu/wylączeniu MT4).
Możesz w opcjach zaznaczyć "Zapytaj o ręczne potwierdzanie"(ale prawdę mówiąc tak dawno nie używałem tej opcji, że nie pamiętam czy pyta tylko przy otwieraniu pozycji czy kiedy).
Możesz otwierać skryptem, a kontrolować i zamykać EA.

Możliwości jest wiele...

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

Re: Kod, polecenie zamykające EA.

Nieprzeczytany post autor: Pierz Andrzej »

Kod: Zaznacz cały

#include <WinUser32.mqh>

int start()
{
   PostMessageA(WindowHandle(Symbol(), Period()), WM_COMMAND, 33050, 0);
}
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
arkoni
Gaduła
Gaduła
Posty: 173
Rejestracja: 27 gru 2011, 12:19

Re: Kod, polecenie zamykające EA.

Nieprzeczytany post autor: arkoni »

Wielkie dzięki - o to właśnie mi chodziło, a ze swoją dość ograniczoną wiedzą dotyczącą programowania wieki bym tego szukał. Choć teraz, wiedząc czego szukać, trochę tego w necie znalazłem.

LowcaG, otwierałem już zlecenie skryptem, a EA tylko je modyfikowała ale teraz po prostu chcę innego rozwiązania.
Nie stosuję pełnych automatów ale w tym zakresie, w którym ich używam, chcę pełnej automatyzacji.
EA , po przeciągnięciu go na wykres, ma wyliczyć możliwą wielkość zlecenia, SL i TP w oparciu o zmienność i określoną wielkość zaangażowania kapitału, otworzyć pozycję, przejść do modyfikowania, a po zamknięciu pozycji (ręcznym, na SL, TP) po prostu się wyłączyć. Bajka, prawda? Brakowało mi tylko polecenia samo zamykającego EA.
Wielkie dzięki wszystkim.

ODPOWIEDZ