1. Qiita
  2. 投稿
  3. 機械学習

人工知能でFXトレードの時代。。。

  • 13
    いいね
  • 0
    コメント

TensorFlowを使った為替(FX)のトレードシステムを作るチュートリアル ~システムのセットアップからトレードまで~

を見て、「MQL4で人工知能のトレードアルゴリズムを作るのはかなり敷居が高いのに、なんだか楽しそうだな」と思って、やってみました。
Google Cloud Platform の無料枠が使えるので、Compute EngineにCentOS 7を起動。

GCPではなんたって「機械学習のAPI」がありますからね。もともとTensorFlowってのは、GoogleがOSS化したものです。
てことは、わざわざdocker内でTensorFlowを立ち上げなくても、「機械学習のAPI」に処理を回せば、同じことができるし、パフォーマンスも桁外れ、ということになるはず。

で、それを君はやれるのか?
というと、完全文系人間の私には、かなりかなり、敷居が高いのです。:frowning2::raised_hand_tone5:
(これは後の課題、ということで。だれかやってるでしょうね)

上記チュートリアルをGCP上で動かすこと自体は、少し注意する点はありますが、だいたい以下の点に気をつければ、比較的楽にできるでしょう。

インスタンスは、Standard(3.75GiB Mem)を選ぼう

ss 0029-02-07 8.04.07.jpg
ss 0029-02-07 8.07.18.jpg

最初「micro(0.6GiB Mem)」のインスタンスでCentOS7を立ち上げた。dockerのインストールまでは難なくであったが、docker-composeでjijiとTensorFlowを入れるところでハマった。

「pandas ...」のプロセスで、なにやら時間がかかっている様子(パンダってなんすか?:punch:。多分Pythonのモジュールか何か)
(のちにメモリ不足でハングしていたことが判明)
かなり、マシンパワーを消費します。

selinuxはいちおうoff

アクセス権の問題でハマった。

#setenforce 0

でselinuxを切り、

#firewall-cmd --add-service=https --zone=public --permanent

でhttpsポートを開けてやること。

docker-compose.yml

上記のチュートリアルでは、ローカル環境での運用を前提にしているので、httpsのポートが10443になっているが、GCP上で動かす場合、

nginx:
  container_name: jiji_example__nginx
  image: unageanu/jiji-nginx:latest
  links:
    - jiji
  ports:
    - "10443:443" #<--ここを"433:433"にすべし
  volumes:
    - ./cert/server.crt:/etc/nginx/cert/ssl.crt:ro
    - ./cert/server.key:/etc/nginx/cert/ssl.key:ro

にしないといけない。(dicker内部のの10433番は、塞がっているのかなあ?)ローカルでもここは通らない。多分FWの設定で何とかなるのかも。
nginxはプロクシだから、うまくポートフォワードしているはずだが、なぜか?
わからない。

起動

$docker-compose up -d で起動し、$docker ps -aで一覧を調べるわけだが、nginxが起動しないことがある。
起動しなかったら、$docker-compose downを叩いて、一旦全部リムーブ。
docker-compose.ymlの内容を見直す。

まとめ

ss 0029-02-07 8.25.01.jpg

テストを走らせる(collect mode)

ss 0029-02-07 8.23.38.jpg

  • 運用成績

ss 0029-02-07 8.49.33.jpg

 さて学習させる!

  • 1時間足で、ほぼ100%の成績(うそだろ)

ss 0029-02-07 9.15.51.jpg

  • サーバーを走らせる

python server.py を叩いて、テストのエージェントに送信
最適化されたアルゴリズムがここで動く!

ss 0029-02-07 9.17.29.jpg

おろどくべき運用成績

たった2層のNNのはずなのに、驚くべき運用実績!
こりゃ、人間がどれだけ頑張ったって、勝てる道理が無いわ。
Googleの提供する「機械学習API」を利用すれば、マシンパワーを気にせず、1000層でも10000層でもある本格的なDeep Learningのエージェントが作れます!これはMT4では絶対無理なレベルです。

  • PFが6.8! 勝率75%! ただし、10年間で61回しか取引してない。もっと取引回数を増やしてみたいな。

ss 0029-02-07 9.24.40.jpg