#ifndef __ProcessData_h_ #define __ProcessData_h_ #include "../../shared/TwoDLookup.h" #include "TwoDArrayWriter.h" #include "DataFormats.h" #include "DumpCandles.h" #include class ProcessData { private: enum TrendType { TREND_OPEN, TREND_CLOSE, TREND_HIGH, TREND_LOW, TREND_GREEN_BAR }; const int periods; const double minAcceptableR2; const double dailyWeight; std::vector< std::pair< std::string, BarList > > possibleCorrelations; BarList _futuresDailyData; std::string _dump_candles_db; std::string _chartsDirectory; DumpCandles *dumpCandles; TwoDArrayWriter *outputData; TwoDArrayWriter *volumeData; TwoDArrayWriter *TCData; TwoDArrayWriter *volumeBlocks; TwoDArrayWriter *standardCandles; TwoDArrayWriter *fundamentalData; TwoDArrayWriter *pristineData; TwoDArrayWriter *additionalData; TwoDArray _standardCandlesInput; void processSymbolData1Day(const std::string &symbol, BarList const &data1Day, unsigned int &averageDailyVolume); void processSymbolData1Min(const std::string &symbol, BarList const &data1Min, const unsigned int averageDailyVolume); void processSymbolFundamental(const std::string &symbol,const FundamentalData &dataFundamental); void processSymbolMisc(const std::string &symbol, BarList const &data1Day, const FundamentalData &dataFundamental); void previousDay(const std::string &symbol, const BarList &bars); void volatility(const std::string &symbol, const BarList &bars, const unsigned int &days); void brightVolatility(const std::string &symbol, const BarList &bars); double commonVolatility(const BarList &bars, const unsigned int &days); double commonVolatilityMonths(const BarList &bars, const unsigned int &months); double range(const BarList &bars, const unsigned int &daysFromEnd); void rangeContraction(const std::string &symbol, const BarList &bars); void bollingerStdDev(const std::string &symbol, const BarList &bars, const unsigned int &days); void SMA(const std::string &symbol, const BarList &bars, const unsigned int &days); void highsAndLows(const std::string &symbol, const BarList &bars); void lastPrice(const std::string &symbol, const BarList &bars); void averageVol(const std::string &symbol, const BarList &bars, unsigned int &averageDailyVolume); int trend(const std::string &symbol, const BarList &bars, TrendType trendType, const unsigned int &offset); void upDays(const std::string &symbol, const BarList &bars); void correlation(const std::string &symbol, const BarList &bars); void consolidation(const std::string &symbol, const BarList &bars); void averageTrueRange(const std::string &symbol, const BarList &bars, const unsigned int &days); void nDayRange(const std::string &symbol, const BarList &bars, const unsigned int &days); void RSI(const std::string &symbol, const BarList &bars, const unsigned int &days); void pristineLists(const std::string &symbol, const BarList &bars); void makeVolumeCandles(int64_t volumeBreak, const BarList &bars); BarList extractFrom1MinuteBars(const int minutesPerBar, const BarList &oneMinuteBars); void breakAtMissingBar(BarList &bars, const int minutesPerCandle); void saveStandardCandles(const std::string &symbol, const BarList &bars); void makeVolumeCandles(const std::string &symbol, const int64_t volumeBreak, const BarList &bars); void findBunnies(const std::string &symbol, const BarList &bars, const int &minutesPerBar); void sharesPerPrint(const std::string &symbol, const BarList &bars); void doOpenCloseCorrelation(const BarList &listX, const BarList &listY, bool &success, double &M, double &R2); void doCloseCloseCorrelation(const BarList &listX, const BarList &listY, bool &success, double &M, double &R2); void findBestCorrelation(const std::string &symbol, const BarList &data1Day, bool &success, std::string &matchesSymbol, double &M, double &R2); void buildCharts(const std::string &symbol, const BarList &data1Day); public: ProcessData(); ~ProcessData(); void processAllData(const std::string &symbol, BarList const &data1Min,BarList const &data1Day, const CorporateActions &corporateActions, const FundamentalData &fundamentalData); void setOutputFiles(std::string baseName); void loadStandardCandles(const std::string &filename); void flushOutputFiles(); void addFuturesCorrelation(const BarList &data1Day); void addPossibleCorrelation(const std::string &symbol, const BarList &data1Day); void setDumpCandles(std::string db_name, int daysOfHistory) { assert(_dump_candles_db.empty() && dumpCandles == NULL); _dump_candles_db = db_name; dumpCandles = new DumpCandles(db_name, daysOfHistory); } bool skipDumpCandles() { return _dump_candles_db.empty(); } void setChartsDirectory(std::string chartsDirectory) { _chartsDirectory = chartsDirectory; } }; #endif