2019.10.16機械学習の一手法であるリカレントニューラルネットワークを使ってFXの予測をしてみます。取得したデータを学習用データに加工Kerasを使ってモデルの作成、学習、評価になります。Japanはアメリカのfx会社です。pythonから使えるapiを提供しているので、pythonでfx関連のことをしようとする人はよく使うと思います。今回はoandaからデータを取得して、ローソク足チャートをプロットするのでoandaの口座を持っている人前提の記事になります。apiを使うためにはoandaで口座を作る必要があります。口座を作るだけなら無料できます。APIをpythonから簡単に利用できるようにしたライブラリです。https://github.com/oanda/oandapy本記事ではoandapyを使って実装していきます。git+https://github.com/oanda/oandapy.gitKerasとリカレントニューラルネットワークKerasとはKerasは、ニューラルネットワークを非常にシンプルに構築できるライブラリです。https://keras.io/ja/TensorFlow等で書くとかなり長くなってしまうコードがKerasを使うことでシンプルなコードとなります。時系列の関係がある入力にも対応できるニューラルネットワークです。h}\)を用いることで、入力間の関係性も学習させようというアプローチです。ちなみに図の右のようにすることをアンロールするといいます。図の中の\(h_t\)は記憶セルやセルと呼び、1つ前の状態の内容(内部状態)を保存します。\(h_t\)は数式で表現すると次のようになります。x_t)\end{aligned}$$実装(OANDAPYとKerasを使って)必要なモジュールのimportと定数を設定します。32定数からわかる通り、今回はUSD/JPYの30足のデータを用います。APIからデータを取得します。以前の記事で挙げたように5000件以上のデータを取得するテクニックを用いました。tokenに変更してください。あとは以前の記事と同じコードになります。これで、今回使うデータを取得できました。次にRNNに学習させるためにデータを加工していきます。時刻tからinput_len前までのデータを見て時刻t+1の為替のデータを予測させます。t5]→t6となる組み合わせを作成します。len(x)):breakX.append(y[i:i+input_len])Y.append(y[i+input_len+1][0])MinMaxScalerで0〜1に値を変換しています。加工したデータを学習用とテスト用のデータに分割します。np.array(train_y).reshape(len(train_y))これで、学習とテストに使うデータを作成できました。3.モデルの構築と学習RNNのモデルの構築と学習をしていきます。RNNモデルを生成します。optimizer="adam")そして、学習させます。verbose=1)これで学習することができました。評価では、学習し終えたデータを使って評価していきましょう。テスト用に残しておいたデータを使って評価してみます。test_xデータでの誤差を見てみます。evaluateメソッドを使って評価できます。9.805023211211208e-05思ったより誤差が小さくなっています・・・ほんとに大丈夫なのか?次に折れ線をプロットして、予測がどんな感じになっているかを見てみます。正解データのプロットを行います。label="real")次に予測値を出力し、プロットします。np.arange(0,len(labels),2000)ax.get_xticks()ax.xaxis.set_ticks(ticks=ticks)ax.legend()plt.show()以下、出力きれいに出来ているように見えます。シンプルなRNNでやっているので、かなり不安です。簡単なRNNで思ったより良い結果が出てびっくりしています。今回の結果を使って実際に取引をすると問題点が浮き彫りになると思うのでデモトレードなんかでやっていこうと思います。参考文献Kerasで単純なRNN(リカレントニューラルネットワーク)を試す前回はKerasを使って多クラス分類などを行いました。関連記事deeplearning(深層学習)大脳皮質についてのメモ大脳の外側2〜4ミリメートルの層があり、「大脳皮質」と呼ばれている。V20用の記事は以下になります。V...FXTA-LIBのインストール方法Python用のTA-LIBのインストール方法を紹介します。私の環境は以下のようになります。排他論理和をkerasで作ったmodelに解かせてみました。私の現在のFX運用環境を紹介します。3つの口座を使って取引をしています。誤差逆伝搬を説明するために以下のようなシンプルなニューラルネットワークを使います。Learning)とは【OANDA、API】APIのアクセストークンの取得の仕方たぬ吉.comアラサーのWebエンジニア見習いのたぬ吉.com(@tnkicom)です。過去には大学院、某IT企業で機械学習関連のプロジェクトに携わっていました。趣味は機械学習、アプリ開発、FX等の投資です。FXは最近はじめました。自動取引を目指して日々邁進中です。間違いがあれば、Twitterかコメントで教えていただければと思います。質問があれば、Twitterで連絡いただければと思います。進化計算ゲーム理論IT技術系まとめホーム検索トップサイドバーたぬ吉.comアラサーのWebエンジニア見習いのたぬ吉.com(@tnkicom)です。過去には大学院、某IT企業で機械学習関連のプロジェクトに携わっていました。趣味は機械学習、アプリ開発、FX等の投資です。FXは最近はじめました。自動取引を目指して日々邁進中です。間違いがあれば、Twitterかコメントで教えていただければと思います。質問があれば、Twitterで連絡いただければと思います。(1)メタ情報ログイン投稿フィードコメントフィードWordPress.orgタイトルとURLをコピーしました。