本文整理汇总了C++中O2G2Ptr::getDate方法的典型用法代码示例。如果您正苦于以下问题:C++ O2G2Ptr::getDate方法的具体用法?C++ O2G2Ptr::getDate怎么用?C++ O2G2Ptr::getDate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类O2G2Ptr
的用法示例。
在下文中一共展示了O2G2Ptr::getDate方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getHistoryPrices
bool getHistoryPrices(IO2GSession *session, const char *sInstrument, const char *sTimeframe, DATE dtFrom, DATE dtTo, ResponseListener *responseListener)
{
O2G2Ptr<IO2GRequestFactory> factory = session->getRequestFactory();
if (!factory)
{
std::cout << "Cannot create request factory" << std::endl;
return false;
}
//find timeframe by identifier
O2G2Ptr<IO2GTimeframeCollection> timeframeCollection = factory->getTimeFrameCollection();
O2G2Ptr<IO2GTimeframe> timeframe = timeframeCollection->get(sTimeframe);
if (!timeframe)
{
std::cout << "Timeframe '" << sTimeframe << "' is incorrect!" << std::endl;
return false;
}
O2G2Ptr<IO2GRequest> request = factory->createMarketDataSnapshotRequestInstrument(sInstrument, timeframe, timeframe->getQueryDepth());
DATE dtFirst = dtTo;
// there is limit for returned candles amount
do
{
factory->fillMarketDataSnapshotRequestTime(request, dtFrom, dtFirst, false);
responseListener->setRequestID(request->getRequestID());
session->sendRequest(request);
if (!responseListener->waitEvents())
{
std::cout << "Response waiting timeout expired" << std::endl;
return false;
}
// shift "to" bound to oldest datetime of returned data
O2G2Ptr<IO2GResponse> response = responseListener->getResponse();
if (response && response->getType() == MarketDataSnapshot)
{
O2G2Ptr<IO2GResponseReaderFactory> readerFactory = session->getResponseReaderFactory();
if (readerFactory)
{
O2G2Ptr<IO2GMarketDataSnapshotResponseReader> reader = readerFactory->createMarketDataSnapshotReader(response);
if (reader->size() > 0)
{
if (abs(dtFirst - reader->getDate(0)) > 0.0001)
dtFirst = reader->getDate(0); // earliest datetime of returned data
else
break;
}
else
{
std::cout << "0 rows received" << std::endl;
break;
}
}
printPrices(session, response);
}
else
{
break;
}
} while (dtFirst - dtFrom > 0.0001);
return true;
}
示例2: toOleTime
std::vector<Prices> ForexConnectClient::getHistoricalPrices(const std::string& instrument,
const boost::posix_time::ptime& from,
const boost::posix_time::ptime& to,
const std::string& timeFrame)
{
std::vector<Prices> prices;
O2G2Ptr<IO2GTimeframeCollection> timeframeCollection = mpRequestFactory->getTimeFrameCollection();
O2G2Ptr<IO2GTimeframe> timeframe = timeframeCollection->get(timeFrame.c_str());
if (!timeframe)
{
BOOST_LOG_TRIVIAL(error) << "Timeframe '" << timeFrame << "' is incorrect!";
return prices;
}
O2G2Ptr<IO2GRequest> request = mpRequestFactory->createMarketDataSnapshotRequestInstrument(instrument.c_str(),
timeframe,
timeframe->getQueryDepth());
DATE dtFrom = toOleTime(from);
DATE dtTo = toOleTime(to);
DATE dtFirst = dtTo;
do
{
mpRequestFactory->fillMarketDataSnapshotRequestTime(request, dtFrom, dtFirst, false);
mpResponseListener->setRequestID(request->getRequestID());
mpSession->sendRequest(request);
if (!mpResponseListener->waitEvents())
{
BOOST_LOG_TRIVIAL(error) << "Response waiting timeout expired";
return prices;
}
// shift "to" bound to oldest datetime of returned data
O2G2Ptr<IO2GResponse> response = mpResponseListener->getResponse();
if (response && response->getType() == MarketDataSnapshot)
{
O2G2Ptr<IO2GMarketDataSnapshotResponseReader> reader = mpResponseReaderFactory->createMarketDataSnapshotReader(response);
if (reader->size() > 0)
{
if (fabs(dtFirst - reader->getDate(0)) > 0.0001)
dtFirst = reader->getDate(0); // earliest datetime of returned data
else
break;
}
else
{
BOOST_LOG_TRIVIAL(warning) << "0 rows received";
break;
}
std::vector<Prices> prc = getPricesFromResponse(response);
prices.insert(prices.end(), prc.begin(), prc.end());
}
else
{
break;
}
} while (dtFirst - dtFrom > 0.0001);
return prices;
}
示例3: printPrices
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));
}
}
}
}
}
}
}
示例4:
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;
}