データサイエンス

gekkoでneuralnet動かしてヒストリカルデータを取得してみた

投稿日:

gekkoを動かしてローカルでuiを動かして、

そしてgekko-neuralnetをbacktestで動かすということをやってみた。 インストール手順など非常に充実しているしコミュニティーも大きいのでググっても結構ヒットするので導入も比較的スムーズでした。最初sqliteでてこづりましたが、目的のbacktestとかも回せて、gekko でデータを取得してbacktestして結果を見るというところまでは回せて満足です。ただ、node gekko --uiでローカル起動してdata importerで取引所のデータを取得するわけですが、どうやらuiを落とすとデータも揮発してしまうようです。てっきりdbに保存されていくのだと思いきや、そこはソースを追ってはっきりさせたいところです。

 

npm install sqlite3@3.1.4

が動かなかったら

npm install sqlite3

でバージョン気にせず持ってきても動いたので、よしとする。

https://kotaeta.com/60513969

exchangeフォルダでも

[bash]cd exchange
npm install --only=production
cd ..[/bash]

することを忘れると、localdataのimporterで取引所のリストが現れずに

[bash]<span>TypeError: Cannot read property 'markets' of undefined at a.currencies (VM100 app.9aa8dda3.js:1)</span>[/bash]

のようなエラーが出るのだが、すでにgithubでチケットが上がっていたが、落ち着いてインストール手順を踏んでおけば

エラーが起きることはなかった、ということがわかった。exchangeフォルダでのnpm installはbrokder(取引所)の依存ライブラリをインストールしてくるようです。

(こういう手間は1段階にするとユーザーの手間が省ける、というユーザー目線のコメントを備忘録として残す)

 

StopLossというindicatorを知らないと怒られる。確かにありません。途中、いろいろ調べるも適当な検索結果は得られずにいた。しかし、その中でもStopLossについておそらく別の実装を紹介したこの動画(Gekko Trading Bot - Adding a Stop Loss)はきになるのでここに記しておく。

[bash]

node gekko --backtest --config config.js

Gekko encountered an error and can't continue

Error:I do not know the indicator StopLoss

[/bash]

なんとかStopLoss.jsを検索することができたので早速追加してみたところ。見事、動きました!

 

uiでも動かしてみたら、10%の利益でいい感じでした。素晴らしい。

 

gekkoですがデータ取得や全体のアーキテクチャーは好きな方です。

dbにデータ保存できたら素敵なのですが、これによればconfig.candleWriter = { enabled: true }をenableにすれば初期のdbにデータ保存してくれる模様です。私もconfig.candleWriter = { enabled: true }はtrueになっていたnなっていたんその記事で紹介されていた幾つかの問題を取り除いたgekkoバージョンをリリースしている人がいて、それが最初にも紹介した動画をとっているだった。面白い。

 

データ取得に関しては、sqliteだとプロセスdbなので、スケールしないのでせめてpostgresqlに変更して、config.adapterをpostgresqlに変更するだけで大丈夫です。macの場合はbrew install postgresqlでインストール、createuser, createdbで任意のdbを作り、それをconfig.jsに指定し最後に

[bash]node gekko --config config.js --import[/bash]

すれば、うまく動きました。そしてデータの確認は

[bash]
#起動
postgres -D /usr/local/var/postgres
#確認(gekkoユーザー、gekkoデータベースを作成した場合)
psql -U gekko gekko
#スキーマ確認
\d
#スキーマ確認詳細
\d gekko
List of relations
Schema | Name | Type | Owner
--------+---------------------------------+----------+-------
public | binance_candles_usdt_btc | table | gekko
public | binance_candles_usdt_btc_id_seq | sequence | gekko

#データの内容を表示
gekko=> select * from binance_candles_usdt_btc limit 10;
id | start | open | high | low | close | vwp | volume | trades
----+------------+---------+---------+---------+---------+------------------+-----------+--------
1 | 1556668800 | 5321.94 | 5322.64 | 5320 | 5322.25 | 5321.07734390704 | 6.530035 | 83
2 | 1556669400 | 5322.98 | 5324.02 | 5321.99 | 5323.45 | 5323.39355478779 | 5.818021 | 89
3 | 1556669460 | 5324.02 | 5324.98 | 5322.22 | 5324.31 | 5323.41727624135 | 12.520041 | 180
4 | 1556669520 | 5323.22 | 5324.99 | 5322.22 | 5322.83 | 5323.67684241936 | 12.676107 | 162
5 | 1556669580 | 5322.83 | 5323.86 | 5319.99 | 5321.37 | 5322.19738993096 | 11.619957 | 120

[/bash]

 

以上

 

 

-データサイエンス

Copyright© CTOを目指す日記 , 2024 All Rights Reserved.