記事「ニューラルネットワークが簡単に(第14部):データクラスタリング」についてのディスカッション

 

新しい記事「ニューラルネットワークが簡単に(第14部):データクラスタリング」はパブリッシュされました:

前回の記事を公開してから1年以上が経過しました。アイデアを修正して新しいアプローチを開発するには、これはかなりの時間です。この新しい記事では、以前に使用された教師あり学習法から逸れようと思います。今回は、教師なし学習アルゴリズムについて説明します。特に、クラスタリングアルゴリズムの1つであるk-meansについて検討していきます。

ご覧のとおり、教師なし学習アルゴリズムを使用してさまざまな問題を解決することができますが、それらはどのように取引に使用できるのでしょうか。考えてみましょう。グラフィカルな分析方法には、ほとんどの場合、ダブルトップ・ダブルボトム、ヘッドアンドショルダー、フラッグ、ハーモニーパターン各種などの、特定のチャートパターンが含まれます。さらに、ローソク足が1~3本の小さなパターンもたくさんあります。ただし、数学言語で特定のパターンを記述しようとすると、多数の規則と許容誤差に対処する必要があるため、アルゴリズム取引での使用が複雑になります。人間のトレーダーがパターンを決定する場合でさえ、多くの主観があるため、同じチャートを分析した異なるトレーダーが異なるパターンを特定し、逆方向の予測の動きを示すことがよくあります。これはおそらく取引全体の基本的なルールでしょう。利益を出す人もいれば、損をする人もいるということです。取引プロセスでは、新しい商品素材の価値は作成されず、マネーサプライは変更されません。あるウォレットから別のウォレットに移動するだけです。では、どうすれば損失を回避できるでしょうか。

ヘッドアンドショルダーのパターン

上記のチャートパターンをもう一度見てみましょう。それらにはすべてバリエーションがありますが、同時に、各パターンには固有の構造があり、一般的な価格変動チャートに対してそれを識別します。では、教師なしデータクラスタリングアルゴリズムを使用して、モデルが特定の期間のデータで考えられるすべての変動を識別できるようにするとどうなるでしょうか。教師なし学習を使用しているため、データにラベル付けする必要はなく、期間を非常に長くする可能性があります。ただし、履歴期間が長くなると、モデルの訓練コストが増加します。

作者: Dmitriy Gizlyk

 
この記事は私が探しているものだ。
 

こんにちは、ドミトリー

すべてのライブラリをインストールしたのですが、このpythonプログラムを実行しようとすると、次のようなエラーが発生します:


runfile('C:/Users/rogerio/ título1.py', wdir='C:/Users/rogerio')

トレースバック (最近の呼び出しの最後):

ファイル "C:㊟Users/rogerio㊟ título1.py", 行 20, in <module

rsi=tl.RSI(rates['close'])

TypeError: 'NoneType' オブジェクトは添え字で指定できません。


私は以下のソースコードを使っています。


# -------------------------------------------------------#

# データクラスタリングモデル #

# -------------------------------------------------------#

# インポートライブラリ

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()

# 相場をダウンロードする

レート=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) for D in distance)

avgWithinSS = [sum(d) / data.shape[0] for d in dist].

# モデルの学習結果をプロットする

plt.plot(R, avgWithinSS)

plt.xlabel('$Clasters$')

plt.title('Loss dynamic')

# 生成されたグラフを表示

plt.show()


ご協力ありがとうございました。

ロジェリオ

 
MrRogerioNeri .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['終値'])


# 学習サンプルをグループ化する

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) for D in distance)

avgWithinSS = [sum(d) / data.shape[0] for d in dist].

# モデルの学習結果をプロットする

plt.plot(R, avgWithinSS)

plt.xlabel('$Clasters$')

plt.title('Loss dynamic')

# 生成されたグラフを表示する

plt.show()


ご協力ありがとうございました。

ロジェリオ


TA-Lib : テクニカル分析ライブラリを インストールしましたか

TA-Lib : Technical Analysis Library - Home
  • TA-LIB.org
  • ta-lib.org
Technical analysis open-source software library to process financial data. Provides RSI, MACD, Stochastic, moving average... Works with Excel, C/C++, Java, Perl, Python and .NET