Классы и объекты для акций и форекс - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть данные о ценах форекс, которые хранятся в куче 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)

Цель этого упражнения - узнать о классах и объектах. Там должно быть множество модулей, которые делают то, что я пытаюсь сделать лучше.

Я также буду признателен за любые советы по улучшению текущего кода.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...