<為替分析>11/29 ディープラーニングで為替自動トレード2
以下前回記事の続きです。
今日は
- 1.AI作成
- 2.AIチューニング
- 3.ポートフォリオの作成
- 4.自動取引ツール作成 ←ここ
を書きます。
ちなみに、FXのシステムはバグがあり実際は全然勝てないシステムでした・・・。
tensorflowのグラフでif文使うときは
if flg a + b else a * b
じゃなく
def add(a,b): return a + b def mul(a,b): return a * b tf.cond(flg, add(a+b), mul(a+b))
ってかかないと駄目でした。
上記を理解していなかったせいで、想定しない動きをしていました。
ということで自動売買は現在運用はしていません。
(実弾を使ってテストしたりで1000円くらいかかったのに・・・)
ですが自動売買システム自体は動くようになったので、その経緯を残しておきます。
もくじ
1.ブラウザ自動操作
seleniumを使いました。
webページを取り込んで、htmlを解析して特定の場所にある文章を取ってきたり、特定のボタンを押下したり、なんでもできます
インストールや基本的な文法は以下を見ました。
qiita.com
要素の名前の取得方法を、「Qiitaのログイン画面のユーザー名の要素を取得する」やり方を例に説明します。
とってきたい画面でF12キーを押下すると以下のような開発画面になります。
左下「インスペクター」の左にあるボタンをクリックして、名前を取得したい要素にカーソルを合わせます。
すると、該当するHTMLコードが黒塗りされます。
この場合、ユーザー名のidは"identity"となるので
find_element_by_id("inputName").send_keys("user@user.co.jp")
と入力すれば、ユーザー名のところに"user@user.co.jp"が勝手に入力されます。
また、id等がうまく取得できない場合はxpathが使えます。
調べたい箇所のHTMLコードをを右クリック→コピー→「xpath」とすれば取得できます。
以下のコードは、idで指定した場合と同じ動きをします。
find_element_by_xpath("//*[@id="identity"]").send_keys("user@user.co.jp")
以下のseleniumの逆引き辞書おすすめです。
www.seleniumqref.com
スクショが撮れたり、seleniumでいろいろできるみたいですね!
2.自動起動
Linuxではcrontabというwindowsでいうタスクマネージャーみたいなものがあるようです。
基本的な使い方は以下の記事を参考にして勉強しました。
qiita.com
注意事項は以下です。
pythonのパスが通ってない
python run.py
ではなく、
/home/owner/anaconda3/bin/python run.py
とすると動きました。
パス自体は、コマンドでwhich python
で調べられます。
カレントディレクトリはhome
ディレクトリが
test/hoge.py
test/data/hoge.csv
hoge.pyの中身が
pd.read_csv("data/hoge.csv")
となっているプログラムをcrontabで動かすためにcrontabに
00 15 * * * /home/owner/anaconda3/bin/python test/hoge.py
と登録しても
カレントディレクトリがhomeなので、data/hoge.csvを正しく参照できません。
どうしたらいいかわからなかったので、以下のようなrun.shファイルを作成し
cd test /home/owner/anaconda3/bin/python test/hoge.py
00 15 * * * /home/owner/anaconda3/bin/python test/run.sh
と登録することで
カレントディレクトリを無理やり変えました。
雑記
HTMLとかCSSとかちゃんと知らないとSelenium使えないんだろーなーとか思っていたので、あまり知識がなくても使えてしまうのにびっくりしました。Seleniumの自動操作がちゃんと動いた時感動しました。。
肝心の自動取引AIのほうは、強化学習も試してみるなどもう少し粘りたいです。
AWSに乗せるのも少しやってみたのですが、よく考えたらソースコードに口座のIDとパスワードを埋め込んでいるので怖くてやめました。
今回はヒロセ通商のサイトで自動ログインから売買までを実装しましたので、
ヒロセ通商の自動ログイン〜売買までのソースが欲しいかたはご一報ください。
誤動作などによる責任は取れないため、ご利用は自己責任でお願いします。。