#include "ProcessSymbolsUnit.h" #include "CorrelationSymbols.h" #include "DataFromSpryWare.h" #include "DataFormats.h" #include #include void ProcessSymbols(ProcessData &processing, std::vector< std::string > const &symbolList) { DataFromSpryWare dataRequest; dataRequest.connect(); BarList data1Min, data1Day; CorporateActions corporateActions; FundamentalData fundamentalData; std::set< std::string > correlationSymbols = getCorrelationSymbols(); // should this data get scrubbed? for (std::set< std::string >::const_iterator it = correlationSymbols.begin(); it != correlationSymbols.end(); it++) { std::cout << "Adding correlation symbol \"" << *it << '\"' << std::endl; dataRequest.getDailyBars(*it, data1Day); if (data1Day.size() > 0) { processing.addPossibleCorrelation(*it, data1Day); } } dataRequest.getDailyBars(getFuturesCorrelationSymbol(), data1Day); processing.addFuturesCorrelation(data1Day); for(std::vector< std::string >::const_iterator it = symbolList.begin(); it < symbolList.end(); it++) { std::cout << std::endl << *it << std::endl << " Getting Fundamental Data..." << std::endl; dataRequest.getFundamentalData(*it, fundamentalData); std::cout << " Getting 1Min Bars..." << std::endl; dataRequest.get1MinBars(*it, data1Min); std::cout << " Getting Daily Bars..." << std::endl; dataRequest.getDailyBars(*it, data1Day, &fundamentalData); std::cout << " Getting Splits from Corporate Actions..." << std::endl; dataRequest.getCorporateActions(*it, corporateActions); // SpryWare daily bars are adjusted, but 1 min bars are not. // We adjust here so that they're consistent in the main program std::cout << " Adjusting 1Min Bars for splits...\n"; adjustForSplits(data1Min, corporateActions); std::cout << " Processing..." << std::endl; processing.processAllData(*it, data1Min, data1Day, corporateActions, fundamentalData); std::cout << "Done" << std::endl; data1Day.clear(); } dataRequest.disconnect(); }