cena innej pary niż bieżąca

O jezykach programowania w platformach i nie tylko.
jaros21
Bywalec
Bywalec
Posty: 19
Rejestracja: 03 sie 2009, 21:45

cena innej pary niż bieżąca

Nieprzeczytany post autor: jaros21 »

Witam,

Jak uzyskać cenę Ask/Bid innej pary niż ta dla której mamy otwarty wykres?
Czytałem o tym problemie na kilku forach i nie znalazłem dobrej podpowiedzi.
Wszędzie piszą że funkcja MarketInfo(nazwa_pary,MODE_ASK) powinna zwracać ASK dla wybranej pary.
Jednak ta funkcja działą tylko dla bieżącej pary (dla której otwarty jest wykres) a dla innych zwraca 0.
Czy ktoś zna inny sposób na uzyskanie Ask i Bid?

Pozdrawiam
Jarek

TesterForex
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 22 gru 2016, 12:45

Re: cena innej pary niż bieżąca

Nieprzeczytany post autor: TesterForex »

Na 100% musi działać coś takiego uruchomione na wykresie dowolnej pary:

Kod: Zaznacz cały

double cena_ask = MarketInfo("USDCAD", MODE_ASK);
Print(cena_ask);
Funkcja zwraca 0, jeżeli nie ma takiej pary jak podano w argumencie. Upewnij się, że nazwy par nie mają jakichś sufiksów itp.
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch

jaros21
Bywalec
Bywalec
Posty: 19
Rejestracja: 03 sie 2009, 21:45

Re: cena innej pary niż bieżąca

Nieprzeczytany post autor: jaros21 »

Sorry, rzeczywiście działa w czasie rzeczywistym :)
Po prostu próbowałem najpierw uruchomić moje EA w testerze i tam nie działa funkcja MarketInfo().
Widocznie backtest automatycznie pobiera dane historyczne tylko dla bieżącej pary i dlatego to nie działa.
Czy ktoś ma pomysł jak to obejść?

TesterForex
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 22 gru 2016, 12:45

Re: cena innej pary niż bieżąca

Nieprzeczytany post autor: TesterForex »

W testerze można dostać się najwyżej do danych OHLC innych par zapisanych w historii.

Można wykorzystać iBarShift: https://docs.mql4.com/series/ibarshift
oraz np. iHigh: https://docs.mql4.com/series/ihigh
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch

Awatar użytkownika
Mustafa
Pasjonat
Pasjonat
Posty: 769
Rejestracja: 20 lip 2010, 10:54

Re: cena innej pary niż bieżąca

Nieprzeczytany post autor: Mustafa »

zamiast MarketInfo lepiej użyć SymbolInfoTick
https://www.mql5.com/en/docs/marketinfo ... olinfotick

Kod: Zaznacz cały

    MqlTick LastTick;
    string dd;
    if(SymbolInfoTick(_Symbol, LastTick))
     {
      dd=StringConcatenate(
            "LastTick.time,
            " Ask = ",last_tick.ask,
            " Bid = ",last_tick.bid,
            " Spread = ",DoubleToStr((LastTick.ask - LastTick.bid)/ _Point,0),
            " Volume = ",last_tick.volume
            );
        Print(dd);
     }
   else Print("SymbolInfoTick() failed, error = ",GetLastError());

lub CopyRates

https://www.mql5.com/en/docs/series/copyrates
https://www.mql5.com/en/docs/series
Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.

jaros21
Bywalec
Bywalec
Posty: 19
Rejestracja: 03 sie 2009, 21:45

Re: cena innej pary niż bieżąca

Nieprzeczytany post autor: jaros21 »

Dzięki za rady, ale to i tak nie rozwiązuje mojego problemu bo w testerze te funkcje nie działają.
Cóż pozostaje mi testować w czasie rzeczywistym :)

TesterForex
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 22 gru 2016, 12:45

Re: cena innej pary niż bieżąca

Nieprzeczytany post autor: TesterForex »

Ewentualnie możesz przepisać strategię do MQL5, tam da się pobierać dane Ask i Bid dla innych par w testerze.

Kod: Zaznacz cały

SymbolInfoDouble("EURUSD", SYMBOL_ASK)
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch

ODPOWIEDZ