【Python】bitflyer の API を使って注文を送信する

2018年3月18日Python,開発

おはようございます。

大分、Pythonを連投してすみません。
今回はやっとのことで注文を出すところをやってみたいと思います。

プログラムは前回のものを流用します。

【Python】bitflyer の API と Tornado のテンプレートを使って注文一覧を表示する

スポンサーリンク

画面の修正

Main.html

注文情報を入力するテキスト等を配置します

    <div style="clear:both; padding-top:10px;">
       <div class="entry_title">
          <div class="pull_left">注文</div>
       </div>
       <div id="executeOrderContainer" class="entry">
          <span>種別:</span>
          <select id="order_type">
             <option value="LIMIT">指値</option>
             <option value="MARKET">成行</option>
          </select>
          <span>数量:</span>
          <input id="order_size" type="text" value="0.01" />
          <span>価格:</span>
          <input id="order_price" type="text" value="600000" />
          <span>期限(分):</span>
          <input id="expire_minute" type="text" value="1" />
          <span></span>
          <input type="button" value="売り"/>
          <input type="button" value="買い"/>
       </div>
    </div>
    

style.css

div.entry {
    width: 94%;
    padding: 10px;
    margin-left: 0px;
    padding-left: 15px;
    border: 1px solid lightgray;
    background-color: #fffbe7
    
}

#executeOrderContainer span {
   margin-left: 10px;
}
input[type=text] {
   width: 100px;
}

プログラムの修正

注文を送信する処理を追加

BfTool.py

class SendChildOrderHandler(RequestHandler):
    """
    注文を送信
    """

    def initialize(self):
        logging.info("SendChildOrderHandler [initialize]")

    def post(self):
        logging.info("SendChildOrderHandler [post]")

        param = json.loads(self.request.body)
        param["product_code"] = "FX_BTC_JPY"
        logging.info(param)

        api = BfApi()
        data = api.send_req(api_path="/v1/me/sendchildorder", http_method="POST", **param)
        self.write(json.dumps(data, ensure_ascii=False))

注文(売り/買い)ボタン押下時の処理を追加

script.js

/**
 * 注文を実行します.
 */
function sendChildOrder(order_side) {

   var param = {
      side : order_side
      , child_order_type : $("#order_type").val()
      , price : $("#order_price").val()
      , size : $("#order_size").val()
      , minute_to_expire : $("#expire_minute").val()
   }

    console.log(param);

   $.ajax({
      url: "http://localhost:8888/sendOrder",
      type: "POST",
      data: JSON.stringify(param),
      success: function(jsonResponse) {
         jsonResponse = jsonResponse.replace( /\\/g , "" );
         var data = JSON.parse(jsonResponse);
         alert("注文を送信しました。\r\n注文番号:" + data.child_order_acceptance_id)
      },
      error: function() {
      }
   });
}

起動してみる

起動後画面

初期表示です。注文を入力する欄が追加されています。

注文を入力してボタンをクリックします。

送信結果

無事に注文が送信されました。
約定しないように大分安い金額で買い注文をしました。

注文一覧更新

注文一覧を更新すると、先ほど送信した注文が表示されます。

まとめ

とりあえず注文するところまでは実装できました。

次はちょっとした仕組みを考えて便利な注文なんかが出せるようにしたいなーと思います。(未定)

ではでは。

 

スポンサーリンク


関連するコンテンツ

2018年3月18日Python,開発Python,Tornado,プログラミング

Posted by doradora