ビットコインFXの自動売買BOTのアルゴリズムを考える

さてここまでの記事で、あなたはpythonを使って以下のことが出来るようになりました。

1)Crytowatchから価格情報を取得
2)Bitflyerからティッカー情報を取得
3)Bitflyerに買い注文・売り注文を出す
4)Bitflyerに出した注文の状況を確認する
5)Bitflyerに出した注文をキャンセルする

あとは、これを基本的な最低限のプログラミング構文(if文/for文/while文)と組み合わせるだけで、自動売買BOTを作ることができます。

・自動売買BOTを作る上で最低限必要な構文

今回はついに、動かしておくだけで自動的に売買の判断をして、エントリーと利確・損切をしながら動き続けるBOTの作成に取り掛かります。

売買ロジックを考える

具体的なプログラムに着手する前に考えなければならないのは、売買のロジック(アルゴリズム)です。

BOTに安定した自動売買をさせるためには、なるべくシンプルなロジックを考えなければなりません。これは初心者にとって特に大事なことです。ルールが少なければ少ないほど、想定外のエラーや例外を招く可能性が低くなり、安定性が高くなります。

また「エントリーの条件」「手仕舞いの条件」が、明確に数字(= APIで取得可能な数値データ)を使って定義できるかどうか?を考えることも大事です。数字で定義できないようなエントリーや利確・損切の条件は、自動売買BOTでは使えません。

今回の売買ロジック

今回は練習として、1分足を使って、以下のような超絶シンプルなルールを考えます。

買いの場合

1)3本連続で陽線が続いている
2)3本連続で始値と終値が上がっている
3)3本目の足の終値付近で指値の「買い」注文を出す
4)次の足で注文が約定しなければキャンセルする
5)約定したら、終値が1つ前の足の終値を下回ったところで決済する

売りの場合

1)3本連続で陰線が続いている
2)3本連続で始値と終値が下がっている
3)3本目の足の終値付近で指値の「売り」注文を出す
4)次の足で注文が約定しなければキャンセルする
5)約定したら、終値が1つ前の足の終値を上回ったところで決済する

注意

これは「利益を出す」ためのロジックではありません。あくまでアルゴリズムの実装の練習用です。このロジックだけでは全く勝てないでしょう。

この章では最小限の資金(0.01BTC単位)で、プログラミングの勉強として実装していきますが、損を出したくない方は、読むだけにして実際に動かすのは辞めてください。

ロジックの解説

エントリー条件

今回の売買ロジックでは、いわゆる酒田五法の「赤三兵」(3回連続の陽線)を買いのシグナル、「三羽鳥」(3回連続の陰線)を売りのシグナルとしてエントリーする自動売買BOTを考えます。

・酒田五法の「三兵」

実際の売買BOTでは、もっとエントリーの条件を絞りこむべきですが、今回はテストなので、なるべく頻繁に売買シグナルが点灯するようにします。

また本当であれば、最低限の実装として、1時間足の移動平均線の傾きを見て、その流れに逆らわない方向でのみエントリーする仕様にしたいところです。ですが、今回は練習なので、今まで勉強した内容だけで実装することを優先します。移動平均線の判定はBOTの中に組み込みません。

利確・損切の条件

今回は売買ロジックをシンプルにするために、手仕舞いの条件を「利確」「損切」に場合分けして考えることはしません。

一律に「終値が前の足から1度でも下がったら(上がったら)手仕舞う」とだけ定義します。これで長くポジションを持つことはなくなるので、儲からないですが、あまり大きな損失が出ることもないでしょう。

今後は、pythonでテクニカル指標やオシレーターを使う方法や、バックテストで過去の成績を検証する方法などもお伝えしていくので楽しみにしながら読み進めてください。

次回:Bitflyerのローソク足の情報を取得する

「ビットコインFXの自動売買BOTのアルゴリズムを考える」への4件のフィードバック

  1. こんばんは。いつもこのブログにお世話になってます。
    プログラミング未経験ながらもおかげ様で少しずつ成長している気がします。

    内容とは全然関係ありませんが黒三兵の別名は三羽烏(カラス)なので時間の空いた時にでも直しておくといいかもです。

    1. コメントありがとうございます。
      本当ですね、漢字が違うんですね、全然知りませんでした(笑)
      ご指摘ありがとうございますm(__)m

  2. はじめまして。
    ここまで作るのってどういう過程で行なったか教えていただけませんか?
    頭の中にしたいことや作りたいことはあるんですけど、どうも再現ができなくて。
    エラー地獄は少し慣れたんですが、みなさんどうやって自分のしたいことを実現なさってるのかがどうしても知りたくて
    お忙しいところ恐縮ですが、よろしければお願いします

    1. ありがとうございます。
      やりたいことにもよるので一概には言えませんが、…(1)自分のスキルでできる範囲の一番シンプルなアルゴリズムをまずは実装して、少しずつ肉付けして複雑にしていくパターンか、あるいは、(2)ある程度の完成度のある具体的なコードを読み込んで理解してから自分流にカスタマイズしていくか、大きく分けると、どちらかが多いんじゃないかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です