仮想通貨の自動売買プログラムを作る⑦:成行注文+x に指値注文を入れてループする

仮想通貨の自動売買プログラムを作る過程を紹介しています。

はじめて仮想通貨の自動売買プログラムを作った過程 [Bitflyer/BTC-FX/C#]

さて、成行注文も入れれるようになり、それが確約した値段も調べられるようになったので、今回はボタン一つで以下の一連の処理をすべてまとめて実行するようにしていきます。

  1. 成行注文を入れる (枚数は変更できるようにする)
  2. 成行注文が確約した値段を確認する
  3. 確約した値段 + x で指値注文を入れる (x は後で変えられるようにする)
  4. 指値注文が通るのを待つ。完了したら再度 1. から繰り返す。

この処理用のボタンと利確する価格を設定するUI を作る

今回の一連の処理に必要な UI を追加していきます。ひとまずこんな感じで作成。

bitFlyerAPIAutoBuyBuyProgram001

あとはこの発注ボタンを押すと、「成り行き注文⇒値段調べる⇒値段+x で指値を入れる⇒指値がとったら最初から繰り返す」となるように実装する

自動売買プログラムに C# コードを書き込む

最初の成行注文を入れるところとその確約価格を調べるところのコードはここまでの作業でできているので、ほぼコピペするだけ。確約価格が取れたらそれに今回のテキストボックスの値を足して指値注文を入れる。

指値注文を入れるコードは成行注文とほぼ同じ。送り込む BODY の内容の MARKET と記載されている箇所を LIMIT に変更するだけ。あと、値段指定も忘れずに。

これが指値注文を入れる関数。

注文 ID から取得できる child_order_state の値から指値注文の状態を確認できる。(以下 bitFlyer Api documentation より)

  • ACTIVE: オープンな注文の一覧を取得します。
  • COMPLETED: 全額が取引完了した注文の一覧を取得します。
  • CANCELED: お客様がキャンセルした注文です。
  • EXPIRED: 有効期限に到達したため取り消された注文の一覧を取得します。
  • REJECTED: 失敗した注文です。

指値を入れたら、状態を確認して、Active の場合にはまだ注文が通っていないのでしばらくして再確認。COMPLETED になったらまた成行注文を入れるところからスタート。それ以外の場合にはエラーを返してループを終了。

作ったボタンをクリックしたらこれを実行するようにコードを追加。

これで出来上がり。ボタンを押したら最高値まできっちりと利確していってくれるはず!

自動売買プログラムの作成状況

今の状態のプログラムの見た目がこれ。

bitFlyerAPIAutoBuyBuyProgram002

コードはこんな状態。長くなってきたので全部を張り付けるのはそろそろやめる予定。。

これで値上がり中は確実に利確していけるはず。

目的とした実装はこれでいいが、流しっぱなしにすると取引状況が追いにくい。後から見て取引履歴がちゃんとわかるようにしたり、放置を前提としてちょっと見た目をきれいにしたい。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする