Bitcoin 裁定取引と自動取引 abitra.netのブログ

Bitcoinの自動売買のあれこれ

TMシグナルインジゲーター用のバイナリーオプション自動売買プログラムの構築準備

自分用メモ

"TMシグナルインジゲーター"のバックテストがある程度完了したのでバイナリーオプション(ハイローオーストラリア)自動売買プログラム構築に入っています。
今までのバイナリーオプションの自動売買プログラムは基本即エントリーの自動売買のロジックを行ってきたので次足を考慮したプログラムを考えていませんでした。
※プログラム自体の作成はしたことあったのですが今迄のロジックは即エントリーの方が成果が良かったので使ってないし、ちゃんと組んでこなかったといった感じ。

自動売買プログラムのロジック前提

最初は即プログラム同様に事前にブラウザ立ち上げておいてエントリーのアラートを把握してエントリーってのを考えていましたが今回のTMシグナルインジゲータの様な次足エントリー場合は事前ブラウザは必要ないのかなーと。
プログラム書いてる途中で思ったのでプログラムロジックの方向転換。


簡単に書くと
■今まで
事前にブラウザ立ち上げて待機 => MT4などでエントリーのタイミング => エントリー


■今回のパターン
MT4でエントリーのタイミング把握 => ブラウザ立ち上げ => エントリー

エントリー足の15-20秒前に把握出来ればブラウザ立ち上げてエントリーでも間に合うんうじゃね?といった考え。


基本は事前にブラウザ立ち上げて待機している方が良いかと考えますが時々不具合起こすといいますかブラウザを立ち上げっぱなしにしているとページが固まったり、何かしらの不具合が発生するんですよね。
その対策として適当なタイミングでブラウザを落として立ち上げたりといった処理をいれていました。
もしかしたら運用PCのスペック問題の可能性もあるのですがブラウザ立ち上げっぱなしも完璧ではない。
※運用PCはノートパソコンですがメモリも8gでcore i 7(古い)のでブラウザ動かす程度であれば問題ないとは考えますが。。。なぜかブラウザ立ち上げっぱなしだと時々ブラウザで不具合起きるんですよねー


なので今回は次足なのでその都度立ち上げで良いような気がしてます。(実際運用してみないと何ともですので運用して追って報告します。)

次足エントリーの都度ブラウザ立ち上げエントリーの問題

都度ブラウザ立ち上げで問題になってくるのがMT4の時間とブラウザの起動時間。
運用をイメージした時にエントリータイミングがきていざエントリーのタイミングってなったとしてもブラウザが起動中ってのは頂けない。
アラートのタイミングの把握は難しいのですが自動売買のブラウザ起動時間は測定出来るので早速テスト。

ブラウザ起動してエントリーするまでの時間テスト

実際にブラウザを自動売買プログラムで動かしてエントリーするまでの時間を把握してその時間分を考慮してMT4及びアラートデータの取得のタイミングを計る。

自動売買のバックテスト

実際のブラウザ起動からエントリーまでの実時間を測定

処理内容
  1. ブラウザ起動
  2. クイックデモ選択
  3. 取引を始める選択
  4. HighLowタブ選択
  5. 15分選択
  6. 全ての資産を選択
  7. 通貨ペア入力 ※一括入力ではなく一文ずつ入力しています。
  8. 通貨ペア選択
  9. 終了時刻の2番目を選択
  10. 金額入力 ※一括入力ではなく一文ずつ入力しています。
  11. High or lowを選択
  12. 今すぐ購入を選択


f:id:hogehoge_kato:20190713010443g:plain



この流れを自動売買プログラムにて構築してブラウザ起動から今すぐ購入選択までのベンチマークを記録しています。

適当に何回か実行して様子をみる。

ブラウザは2種類
Firefox, Chrome

実際の自動売買の実行時間

Firefoxの場合
他でブラウザ起動していない状態
処理概要 12.370185199892148s
処理概要 11.762579799862579s
処理概要 11.181782899890095s


他でブラウザ起動した状態
処理概要 11.221059600124136s
処理概要 13.282766799908131s
処理概要 13.061269599944353s

※ffヘッドレストモードではエントリーが出来ない?


Chrome
他でブラウザ起動した状態
処理概要 11.068493400001898s
処理概要 10.834517000010237s
処理概要 10.724587799981236s
※テスト中に止まったりすることが何度かあった。

chromeヘッドレストモードではエントリーが出来ない?

実際に自動売買プログラムを動かしての結果

●ブラウザ起動からエントリーまでの時間は色々な条件で何度か試しましたがChromeの方が早いです。
平均して1-1.5秒程FirefoxよりもChromeの方が早いです。


Chromeは時々エラーを起こして処理が止まります。
要素確認などの処理をいれているのですが無視されるのか止まります。


FirefoxChromeよりもエントリー時間までの処理は遅いのですがテスト中は止まったりする事は少ない。


●最速タイムを目指す為に要素確認などの処理を除いた場合はどうなのか? => さほど処理時間に影響はない。
要素確認と似たよう対策としてクリックするタイミングを各1秒又は0.1秒程開けて検証したらどうなのか?なども考えたのですが、さすがに各処理に1秒などの余裕を持たせるとエントリー処理までに20秒とか必要になりそうなので違うのかなーと。
一応各クリック処理などの前にfind_elementでHTMLタグの存在は確認出来ているはずなので大丈夫とは考えていますがどうなんでしょうかね?


ヘッドレストモードで実行すれば負荷少なそうだし早くなるかも?と考えましたがエントリー途中で止まってエントリー出来ませんでした。
理由は分かりませんが今すぐ購入前に選択するHighボタン又はLowボタンを選択する所で処理が落ちます。
誰かか詳しいかたいればコメント下さいませ。


Firefoxはもしかして事前にアプリ立ち上げておけば少しは実行速度早くなるかも?と考えてFierfoxを立ち上げた状態でも自動売買プログラムを実行してみましたが対して変わりません。(むしろ少し遅くなるw)

バイナリーオプション(ハイローオーストラリア)の自動売買プログラムのブラウザ結論

Chromeの方がエントリーまでの時間は早いが何度かプログラムが止まったりと安定に欠けるのでバイナリーオプションの自動売買プログラムで利用するブラウザはFirefoxに決定。


エントリーする時間の15秒前前後にMT4のアラート情報を取得させます。


今の所都度立ち上げを行う前提のロジックであればFirefoxですが将来はChromeを使っているかもしれません。 エラー処理が出来るブラウザであれば正直どれでも一緒の様なきもします。

他に良い方法など御座いましたらお気軽にコメント下さいませ。