void printPrices(IO2GSession *session, IO2GResponse *response) { if (response != 0) { if (response->getType() == MarketDataSnapshot) { std::cout << "Request with RequestID='" << response->getRequestID() << "' is completed:" << std::endl; O2G2Ptr<IO2GResponseReaderFactory> factory = session->getResponseReaderFactory(); if (factory) { O2G2Ptr<IO2GMarketDataSnapshotResponseReader> reader = factory->createMarketDataSnapshotReader(response); if (reader) { char sTime[20]; for (int ii = reader->size() - 1; ii >= 0; ii--) { DATE dt = reader->getDate(ii); formatDate(dt, sTime); if (reader->isBar()) { printf("DateTime=%s, BidOpen=%f, BidHigh=%f, BidLow=%f, BidClose=%f, AskOpen=%f, AskHigh=%f, AskLow=%f, AskClose=%f, Volume=%i\n", sTime, reader->getBidOpen(ii), reader->getBidHigh(ii), reader->getBidLow(ii), reader->getBidClose(ii), reader->getAskOpen(ii), reader->getAskHigh(ii), reader->getAskLow(ii), reader->getAskClose(ii), reader->getVolume(ii)); } else { printf("DateTime=%s, Bid=%f, Ask=%f\n", sTime, reader->getBid(ii), reader->getAsk(ii)); } } } } } } }
std::vector<Prices> ForexConnectClient::getPricesFromResponse(IO2GResponse* response) { std::vector<Prices> prices; if (!response || response->getType() != MarketDataSnapshot) { return prices; } BOOST_LOG_TRIVIAL(debug) << "Request with RequestID='" << response->getRequestID() << "' is completed:"; O2G2Ptr<IO2GMarketDataSnapshotResponseReader> reader = mpResponseReaderFactory->createMarketDataSnapshotReader(response); if (!reader) { return prices; } for (int ii = reader->size() - 1; ii >= 0; ii--) { DATE dt = reader->getDate(ii); if (reader->isBar()) { prices.push_back(Prices(toPtime(dt), reader->getAskOpen(ii), reader->getAskHigh(ii), reader->getAskLow(ii), reader->getAskClose(ii))); } else { prices.push_back(Prices(toPtime(dt), reader->getAsk(ii))); } } return prices; }