Здравствуйте Дмитрий
Я установил все библиотеки, но когда я пытаюсь запустить эту программу на python, я получаю эту ошибку:
runfile('C:/Users/rogerio/ título1.py', wdir='C:/Users/rogerio')
Traceback (последний последний вызов):
Файл "C:\Users\rogerio\sem título1.py", строка 20, in <module>.
rsi=tl.RSI(rates['close'])
TypeError: 'NoneType' object is not subscriptable
Я использую этот исходный код
# -------------------------------------------------------#
# Модель кластеризации данных #
# -------------------------------------------------------#
# Импорт библиотек
import numpy as np
import matplotlib.pyplot as plt
import MetaTrader5 as mt5
from talib import abstract as tl
import sklearn.cluster as cluster
from datetime import datetime as dt
# Подключитесь к терминалу MetaTrader 5
if not mt5.initialize():
print("initialize() failed, error code =",mt5.last_error())
quit()
# Загрузка котировок
rates=mt5.copy_rates_range('EURUSD',mt5.TIMEFRAME_H1,dt(2006,1,1),dt(2022,1,1))
mt5.shutdown()
# Рассчитываем значения индикаторов
rsi=tl.RSI(rates['close'])
cci=tl.CCI(rates['high'],rates['low'],rates['close'])
macd,macdsignal,macdhist=tl.MACD(rates['close'])
# Группируем обучающую выборку
data=np.array([rates['close']-rates['open'],rates['high']-rates['close'],rates['close']-rates['low'],rsi,cci,macd,macdsignal,macdhist]).T
s=data.shape[0]
data=np.hstack([data[40+k:s-20+k] for k in range(0,20)])
# Выполните кластеризацию с различным количеством кластеров
R=range(50,1000,50)
KM = (cluster.KMeans(n_clusters=k).fit(data) for k in R)
distance = (k.transform(data) for k in KM)
dist = (np.min(D, axis=1) для D в distance)
avgWithinSS = [sum(d) / data.shape[0] for d in dist]
# Отображение результатов обучения модели
plt.plot(R, avgWithinSS)
plt.xlabel('$Clasters$')
plt.title('Динамика потерь')
# Отображение сгенерированных графиков
plt.show()
Спасибо за помощь
Роджерио
mt5.shutdown()
# Рассчитать значения индикатора
rsi=tl.RSI(rates['close'])
cci=tl.CCI(rates['high'],rates['low'],rates['close'])
macd,macdsignal,macdhist=tl.MACD(rates['close'])
# Сгруппируйте обучающую выборку
data=np.array([rates['close']-rates['open'],rates['high']-rates['close'],rates['close']-rates['low'],rsi,cci,macd,macdsignal,macdhist]).T
s=data.shape[0]
data=np.hstack([data[40+k:s-20+k] for k in range(0,20)])
# Выполните кластеризацию с другим количеством кластеров
R=range(50,1000,50)
KM = (cluster.KMeans(n_clusters=k).fit(data) for k in R)
distance=(k.transform(data) for k in KM)
dist = (np.min(D, axis=1) для D в distance)
avgWithinSS = [sum(d) / data.shape[0] for d in dist]
# Отображение результатов обучения модели
plt.plot(R, avgWithinSS)
plt.xlabel('$Clasters$')
plt.title('Динамика потерь')
# Отображение сгенерированных графиков
plt.show()
Спасибо за помощь
Рожерио
Здравствуйте, Роджерио.
У вас установлена TA-Lib : Technical Analysis Library?
- TA-LIB.org
- ta-lib.org
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Нейросети — это просто (Часть 14): Кластеризация данных:
Должен признаться, что с момента публикации последней статьи прошло уже больше года. За столь длительное время можно многое переосмыслить, выработать новые подходы. И в новой статье я хотел бы немного отойти от используемого ранее метода обучения с учителем, и предложить немного окунуться в алгоритмы обучения без учителя. И, в частности, рассмотреть один из алгоритмов кластеризации — k-средних.
Как видите, алгоритмы обучения без учителя позволяют решать различные задачи. Но каким образом мы сможем использовать их в своей торговле? Давайте подумаем. При использовании методов графического анализа мы практически всегда говорим о тех или иных графических паттернах: двойная вершина / двойное дно, голова-плечи, флаг, различные гармонические паттерны и т.д. Есть и более мелкие свечные паттерны, состоящие из 1-3 свечей. И, практически всегда, при попытке описания того или иного паттерна математическим языком мы сталкиваемся с большим количеством условностей и допусков. Что усложняет их использование в алготрейдинге. Надо сказать, что и при определении паттернов трейдером-человеком много субъективизма. Именно поэтому, анализируя один и тот же график различные трейдеры находят на нём различные паттерны, часто имеющие противоположную направленность прогнозного движения. Да, я согласен, на этом и построена вся система торговли. Кто-то получил прибыль, а кто-то убыток. В процессе торговли новые товарно-материальные ценности не создавались, и денежная масса осталась неизменной. Она лишь перекочевала из одного кошелька в другой. Но как нам не остаться в убытке?
Давайте посмотрим ещё раз на упомянутые выше графические паттерны. Да, все они имеют свои допуски. Но вместе с тем, каждый паттерн имеет свою определённую структуру, которая выделяет его из общего графика движения цены. А что, если мы воспользуемся алгоритмами кластеризации данных без учителя и поручим модели выделить все возможные вариации данных на некотором временном отрезке. Так как мы используем обучение без учителя, то нам не надо производить разметку данных и временной отрезок может быть довольно большим. Разумеется, мы должны помнить, что с увеличением временного отрезка истории растут и затраты на обучение модели.
Автор: Dmitriy Gizlyk