もくじ
やりたいこと
GASからbitFlyer API を使い、ビットコインの新規注文を出す
bitFlyer API の注文方法は2種類
単純な指値注文 (LIMIT), 成り行き注文 (MARKET) 以外の、ロジックを含んだ注文を発注することができます。 このような注文は、親注文 (parent order) として扱われます。 特殊注文を利用することで、マーケットの状況に応じて注文を出したり、複数の注文を関連付けたりすることが可能です。
bitFlyer APIの注文には単純な注文(child order)と特殊な注文(parent order)があります。
今回はシンプルな注文(child order)で作成します。
bodyをpayloadで送る
ほぼ公式ガイドのサンプルどおりで問題ありません。
が、body を options に入れる際、
body: body,
のままでは送信されないので、Google Apps Script のお作法どおり、payload に入れる必要があります。
var options = {
method: method,
payload: body, // ← GASの場合、payloadで送る
headers: {
'ACCESS-KEY': key,
'ACCESS-TIMESTAMP': timestamp,
'ACCESS-SIGN': sign,
'Content-Type': 'application/json'
}
};
Google Apps Script サンプルコード(指値注文を出す)
指値で買い注文するサンプルをつくりました。
成功すると、child_order_acceptance_idが返ってきます。
child_order_acceptance_idは、注文受付 ID です。後で注文情報を取得する時などに指定すると、ピンポイントで取得できます。
// APIkeyを設定
var key = '********************';
var secret = '*********************************';
function sendOrder(){
var timestamp = Date.now().toString();
var method = 'POST';
var path = '/v1/me/sendchildorder';
var body = JSON.stringify({
product_code: "BTC_JPY",
child_order_type: "LIMIT",
side: 'BUY',
price: 290000,
size: 0.01
});
var text = timestamp + method + path + body;
var signature = Utilities.computeHmacSha256Signature(text, secret);
var sign = signature.reduce(function(str,chr){
chr = (chr < 0 ? chr + 256 : chr).toString(16);
return str + (chr.length==1?'0':'') + chr;
},'');
var url = 'https://api.bitflyer.jp' + path;
var options = {
method: method,
payload: body, // ← GASの場合、payloadで送る
headers: {
'ACCESS-KEY': key,
'ACCESS-TIMESTAMP': timestamp,
'ACCESS-SIGN': sign,
'Content-Type': 'application/json'
}
};
//送信してレスポンス取得
var response = UrlFetchApp.fetch(url, options);
if( response != null ){
var obj = JSON.parse(response.getContentText());
Logger.log("child_order_acceptance_id(APIの受付ID): "+ obj.child_order_acceptance_id);
}
}
実行結果
bitFlyer Lightning で確認。実際に注文できました。
GAS側のログには、child_order_acceptance_id を出力しています。
まとめ
今回は注文を出して、その注文が受付されたことを確認するところまでできました。
次の記事では、注文した結果(約定したかどうかなど)をAPIで取得してみましょう。
コメント
[…] 【Google Apps ScriptでbitFlyer API】新規注文(指値注文)を出す […]