Handel w wyznaczonych godzinach

Kategoria: Repozytorium kodu MQL4 | 29 maja 2009 o 22:47 | Odpowiedzi: 5 | Permalink

Czasami zachodzi potrzeba ograniczenia godzin, w których EA ma handlować. Moża robić to na różne sposoby, ja jednak pokażę chyba najbardziej elegancki i najbardziej elastyczny - czyli definiowanie czasu jako stringa (pozwala na definiowanie minut a nawet sekund) oraz całość w postaci osobnej funkcji.

extern string time1Begin="4:00";
extern string time1End="12:00";
extern string time2Begin="16:00";
extern string time2End="20:00";

bool isTradingTime() {

    if(TimeCurrent()>StrToTime(time1Begin) && TimeCurrent()<StrToTime(time1End)) {
        return(true);
    }

    if(TimeCurrent()>StrToTime(time2Begin) && TimeCurrent()<StrToTime(time2End)) {
        return(true);
    }

    return(false);
}

I kilka uwag (jak zawsze):

  • Przykład zawiera dwa przedziały czasowe, nic nie stoi na przeszkodzie aby dodać więcej :)
  • Kod sprawdza czas wg czasu brokera (odpowiada za to TimeCurrent()), jeśli ktoś woli definiować czas wg zegara komputera na którym działa EA to wystarczy zamienić TimeCurrent() na TimeLocal()
  • Ze względu na uniwersalność EA w polach czasu można podać także pełne daty, wtedy EA będzie handlował od i do żądanego dnia.

5 odpowiedzi do wpisu "Handel w wyznaczonych godzinach"

  • bibi88bibi

    30 maja 2009 o 12:47 | Odwiedź stronę WWW autora

    Ostatnio chyba ten problem na forum rozwiązałeś? Mi się podoba, niedługo zamierzam zacząć programować w MQL. Znalazłem dwie ciekawe strony na ten temat, mianowicie: - http://www.metatrader.info/node/34 - http://www.forex-tsd.com/metatrader-programming/7813-mql4-guide.html i oczywiście dział "Programowanie" na forum. Zna ktoś jeszcze inne przydatne strony? Nie muszą być oczywiście po polsku, chyba nawet takich nie ma ;)

  • taka tam

    30 stycznia 2010 o 02:47

    Fajna funkcja, wykorzystałam u siebie, teraz mogę zostawić komputer włączony non-stop, a on "gra" tylko w określonych okresach. Luktom a w jakiej kolejności wykonywane są funkcje ?

  • luktom

    30 stycznia 2010 o 12:03 | Odwiedź stronę WWW autora

    W kolejności ich wywołania.

  • taka tam

    30 stycznia 2010 o 16:16

    chyba rozumiem, czyli w kolejności wywołania w kodzie np f(1), f(2); czy to również działa kolejno dla && np. f(2)==true && f(1)=false - najpierw sprawdzi f(2) potem f(1)

  • luktom

    1 lutego 2010 o 19:43 | Odwiedź stronę WWW autora

    Tak.