Нужна помощь с проектом C++!
Мы хотим написать два контейнера. Один из них заключается в хранении ежедневных данных, а другой-в хранении данных первого типа контейнера-индекса (тикеров).
Это означает, что весь файл будет сохранен строка за строкой в первом контейнере-каждая строка представляет элемент в первом контейнере. Например, если файл содержит 10 строк, то первый контейнер будет содержать 10 элементов. Второй контейнер будет использоваться для хранения контейнеров первого типа контейнеров. Например, если у меня есть 4 индексные строки, мой второй контейнер будет содержать 4 элемента. Это означает, что второй контейнер-это контейнер контейнеров.
Двойная вершина-это паттерн формирования цены. Он появляется как два последовательных пика приблизительно одной и той же цены на графике цена-время рынка. Эти две вершины разделены минимумом в цене, Долиной. Ценовой уровень этого минимума называется линией шеи формации. Формирование завершается и подтверждается, когда цена опускается ниже линии шеи.
Мы должны сделать следующее:
Вы должны открыть файл names.csv, прочитать строку и добавить файл .csv, чтобы создать имя файла. Например, qqq будет считываться из одной из строк в файле names.csv. пример данных для names.csv приведен ниже:
за третий квартал российский рынок акций AAPL событиями недели
Как только qqq.csv-строка имени файла будет создана, вы попытаетесь найти файл qqq.csv в .../Projects/final_project/data_files и прочитать данные. Пример данных из одного csv-файла приводится следующим образом:
Дата,Adj Close,Объем
3/20/2017,129.719299,118404300
3/27/2017,131.457108,91838100
4/3/2017,131.049942,104686800
4/10/2017,129.490891,89035900
4/17/2017,131.635834,88364200
4/24/2017,135.041916,103641400
5/1/2017,136.5811,100949000
5/8/2017,137.633743,109176100
5/15/2017,136.879028,175959500
5/22/2017,140.235474,92869300
5/29/2017,142.459854,110879400
Нужно читать данные в контейнер STL построчно. Каждая строка представляет каждый элемент в вашем первом контейнере. При создании своего собственного типа, скажем Data, со строкой, double и long для хранения ежедневных данных. Таким образом, вам нужно определить контейнер STL как, скажем, вектор v. Вам нужно перегрузить заданные операторы для данных типа. Операторы а
-- запись во всей строке в файл - чтение во всей строке из файла >, < - операторы сравнения на основе даты = = - оператор равенства для проверки того, одинаковы ли цены для двух объектов данных [ ] оператор доступа к вашему контейнеру и конструктор копирования для этого вышеприведенного типа.
Теперь создайте контейнер, в котором есть вектор данных типа. Затем вычислите, произошла ли двойная вершина на основе столбца adj close. Запишите это в новый файл с вызовом qqq-final.csv, включая место, где именно произошел top double. Следите за именами файлов, где произошел двойной топ. После обработки всех файлов, напишите ваши результаты в статус.CSV в "символ", "ДА/НЕТ" -- 1. Да, представляющий двойную вершину, созданную в этом файле. 2. Не иначе. Мы должны убедиться, что ежедневные данные хранятся в контейнере данных и все файлы хранятся в DataContainer.
Ниже приведено то, что я сделал до сих пор, может быть, вам понадобится некоторая помощь.
Что я уже пробовал:
using namespace std; Class Data { private: string date; long long volume; double close; public: virtual Data::~Data() {}; Data() {}; Data(string stockInfo); void setDate(const string dates); void setVolume(const long vol); void setClose(const double _close); string getDate() const; long getVolume() const; double getClose() const; bool operator <(const Data& d2); bool operator >(const Data& d2); bool operator ==(const Data& d2); Data operator =(Data& right); friend ostream& operator << (ostream&, const Data&); friend istream& operator >> (istream&, Data&); }; Data::Data(string filePath) { ifstream fileNames(filePath); //make vector vector<data> dataList; string line; char *token = nullptr; int index; //inputing file into vector while (!fileNames.eof()) { getline(fileNames, line); stringstream dataStream(line); string cell; while (getline(dataStream, cell, ',')) { Data d(line); dataList.push_back(d); } dataStream >> date >> close >> volume; cout << dataList.size() << " elements in container" << endl; } fileNames.close(); //Sort data from lowest close to hightest sort(dataList.begin(), dataList.end(), [](Data &d1, Data &d2) { return d1.getClose() > d2.getClose(); }); }; void Data::setDate(const string dates) { date = dates; } void Data::setVolume(const long vol) { volume = vol; } void Data::setClose(const double _close) { close = _close; } string Data::getDate() const { return(date); } long Data::getVolume() const { return(volume); } double Data::getClose() const { return (close); } bool Data::operator <(const Data& d2) { if (date < d2.date) return true; return false; } bool Data::operator >(const Data& d2) { if (date > d2.date) return true; return false; } bool Data::operator ==(const Data& d2) { if (close == d2.close) return true; return false; } Data Data::operator =(Data& right) { if (this != &right) { date = right.date; } return *this; } ostream& operator << (ostream& stream, const Data& obj) { stream << "Date: " << obj.date << " Closing Cost: " << obj.close << " Volume: " << obj.volume << endl; return stream; } istream& operator >> (istream& strm, Data& obj) { cout << "Enter date: " << " "; strm >> obj.date; cout << endl; cout << "Enter closeing cost: " << " "; strm >> obj.close; cout << endl; cout << "Enter volume: " << " "; strm >> obj.volume; cout << endl; return strm;} class dataContainer : Data { public: virtual ~dataContainer() {}; dataContainer() {}; dataContainer(vector<data>); Data getDoubleTop(); private: vector<data>vData; }; string getFilename(string); int main() { string filename = "names.csv"; Data data1(filename); vector<data> vd1; dataContainer dC1(vd1); //cout << "\n" << dC1.getDoubleTop(); cout << vd1.size(); system("Pause"); return 0;} string getFilename(string fileName) { ofstream namesFile; namesFile.open(fileName); namesFile << "QQQ\n"; namesFile << "MSFT\n"; namesFile << "APPL\n"; namesFile << "AMZN\n"; namesFile.close(); string dat; return dat; }</data></data></data></data>
Richard MacCutchan
- мне бы не помешала помощь."
Затем, пожалуйста, отредактируйте свой вопрос и объясните, какая именно помощь вам нужна. Мы не можем догадаться, с чем у вас возникли проблемы.