やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

ビットコインの自動売買プログラムを作る①APIいじってみる〜

bitflyerのAPIを使ってビットコインの売買が結構かんたんにできちゃいます。

以下のページから使いたいAPIを探します。 全部日本語で書いてあるので、嬉しいですね。

ビットコイン取引所【bitFlyer Lightning】

こちらでサンプルコードが載っているので、ほぼまんまコピペで簡単にAPIを使えちゃえます。
これは至れり尽くせり。

ビットコイン取引所【bitFlyer Lightning】

sendchildorder.rb

require "net/http"
require "uri"
require "openssl"
require "./key"

key = API_KEY
secret = API_SECRET

timestamp = Time.now.to_i.to_s
method = "POST"
uri = URI.parse("https://api.bitflyer.jp")
uri.path = "/v1/me/sendchildorder"
body = '{
  "product_code": "BTC_JPY",
  "child_order_type": "LIMIT",
  "side": "BUY",
  "price": 740000,
  "size": 0.001,
  "minute_to_expire":1200 ,
  "time_in_force": "GTC"
}'

text = timestamp + method + uri.request_uri + body
sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret, text)

options = Net::HTTP::Post.new(uri.request_uri, initheader = {
  "ACCESS-KEY" => key,
  "ACCESS-TIMESTAMP" => timestamp,
  "ACCESS-SIGN" => sign,
  "Content-Type" => "application/json"
});
options.body = body

https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
response = https.request(options)
puts response.body

key.rb

API_KEY = "XXXXXXXXXX"
API_SECRET = "XXXXXXXXXXXXXXXXXXXX"

これで740,000円で買い注文が出せました。

調整する部分は

 "product_code": "BTC_JPY",  # BTCとJPY
  "child_order_type": "LIMIT", # 指値注文
  "side": "BUY", # 買い注文
  "price": 740000, # 740,000円
  "size": 0.001, # 0.001BTC
  "minute_to_expire":1200 , # 有効期限 1200分
  "time_in_force": "GTC" 

の部分だけです。

これをうまいことチューニングするだけで果たして儲かるのでしょうか〜

次回は、価格がどんな風に動いているのか、できるだけ細かくログを取ってみます