У меня есть данные о ценах форекс, которые хранятся в куче CSV-файлов, и я хочу использовать Python, чтобы создавать классы и объекты для полезного хранения информации о ценах каждой пары.
Every тик и момент времени, каждый тик имеет 6 переменных: дата, открытие, максимум, минимум, закрытие и объем.
До сих пор я был в состоянии создать класс, загрузить данные, сохранить их в 2D numpy массив и создать массив объектов, который хранит всю информацию об одной паре в этом массиве.
Моя текущая проблема заключается в том, что я хочу создать объект объектов, где каждый объект является информация о каждой паре из 27, которые я сейчас использую. Каждая пара имеет разные размеры (возможно, одна пара имеет 10000 тиков, а другая - 3000). Так что я не знаю, какой тип структуры данных может хранить массивы объектов разных размеров, поэтому позже будет практично перебирать его.
Конечный объект должен выглядеть следующим образом.
Final_object = [EUR-USD, USD-CAD, .....], всего 27 пар
EUR-USD: это массив объектов (объект - каждый тик) размером 10000.
USD-CAD: это массив объектов (объект - каждый тик) размером 3000.
После создания Final_object я предоставлю другой объект (назовем его M), который имеет 2 измерения (27 столбцов), и каждый столбец имеет количество строк, соответствующее размеру каждого элемента Final_object.
Например: скажем, его 3 пары вместо 27. Конечный объект: [EUR-USD, USD -CAD, AUD-USD]
EUR-USD: размер 10000.
USD-CAD: размер 3000.
AUD-USD: размер 6000
M: [массив размером 10000, массив размера 3000, массив размера 3000]
И я хочу использовать M для перебора Fina l_object.
Это то, что я сделал до сих пор.
import numpy as np
import pandas as pd
_ = "-------------------------------------------------------------------------------"
print(_) # --------------------------------------------------------------------
# creating a class.
class T:
def __init__(self, date, open, high, low, close, volume):
self.date = date
self.open = open
self.high = high
self.low = low
self.close = close
self.volume = volume
def __repr__(self):
return "The data for this tick is ('{}', {}, {}, {}, {}, {})".format(self.date, self.open, self.high, self.low,
self.close, self.volume)
# creating one tick
tick1 = T("10-12-1987", 1, 2, 3, 4, 5)
print(tick1)
# creating another tick
tick2 = T("11-12-1987", 10, 20, 30, 40, 50)
print(tick2)
print(_) # --------------------------------------------------------------------
# creating np arrays with attributes
B = np.array([tick1.open, tick2.open])
F = np.array([tick1.date, tick2.date])
print(B)
print(F)
print(_) # --------------------------------------------------------------------
# loading data from a .csv file
Raw_data = pd.read_csv("EURUSDDaily.csv", header=None, encoding = 'utf-16')
print(Raw_data)
print(Raw_data[0])
print(Raw_data.tail(5))
print(_) # --------------------------------------------------------------------
# selecting data from the dataframe
print(Raw_data.iloc[-2])
print(Raw_data[0][1:12680])
Np_array = Raw_data.to_numpy()
Np_array2= Np_array[:,0:-1]
print(Np_array2)
temp = Np_array2[-1]
tick3 = T(temp[0], temp[1], temp[2], temp[3], temp[4], temp[5])
print(tick3)
# creating an array of objects
obj_array = []
for i in range(np.size(Np_array,0)):
temp = Np_array2[i]
obj = T(temp[0], temp[1], temp[2], temp[3], temp[4], temp[5])
obj_array.append(obj)
Цель этого упражнения - узнать о классах и объектах. Там должно быть множество модулей, которые делают то, что я пытаюсь сделать лучше.
Я также буду признателен за любые советы по улучшению текущего кода.
Спасибо.