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

公開日:2018-12-14
最終更新:2018-12-14
※この記事は外部サイト(https://www.doraxdora.com/blog/2018/03/18/...)からのクロス投稿です

今回は注文を出すところをやってみたいと思います。

プログラムは前回のものを流用します。
【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="売り" onclick="sendChildOrder('SELL')"/>  
      <input type="button" value="買い" onclick="sendChildOrder('BUY')"/>  
   </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() {
}
});
}

起動してみる

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

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

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

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

まとめ

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

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

ではでは。

記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
@doraxdoraの技術ブログ 主に Java, C#, Python, Javascript の記事を載せていく予定。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする