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
cena innej pary niż bieżąca
-
- Stały bywalec
- Posty: 43
- Rejestracja: 22 gru 2016, 12:45
Re: cena innej pary niż bieżąca
Na 100% musi działać coś takiego uruchomione na wykresie dowolnej pary:
Funkcja zwraca 0, jeżeli nie ma takiej pary jak podano w argumencie. Upewnij się, że nazwy par nie mają jakichś sufiksów itp.
Kod: Zaznacz cały
double cena_ask = MarketInfo("USDCAD", MODE_ASK);
Print(cena_ask);
Współautor interaktywnego kursu MQL4 dla serwisu fxwatch
Re: cena innej pary niż bieżąca
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ść?
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ść?
-
- Stały bywalec
- Posty: 43
- Rejestracja: 22 gru 2016, 12:45
Re: cena innej pary niż bieżąca
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
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
Re: cena innej pary niż bieżąca
zamiast MarketInfo lepiej użyć SymbolInfoTick
https://www.mql5.com/en/docs/marketinfo ... olinfotick
lub CopyRates
https://www.mql5.com/en/docs/series/copyrates
https://www.mql5.com/en/docs/series
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());
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.
Re: cena innej pary niż bieżąca
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
Cóż pozostaje mi testować w czasie rzeczywistym
-
- Stały bywalec
- Posty: 43
- Rejestracja: 22 gru 2016, 12:45
Re: cena innej pary niż bieżąca
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