class Binance
Public Class Methods
new(api_key=nil, api_secret=nil, options={})
click to toggle source
# File lib/binance_ruby.rb, line 11 def initialize(api_key=nil, api_secret=nil, options={}) @api_key = api_key @api_secret = api_secret @base_uri = options[:base_uri] ||= 'https://www.binance.com/api' end
Public Instance Methods
aggregate_trade_list(pair)
click to toggle source
# File lib/binance_ruby.rb, line 31 def aggregate_trade_list(pair) opts = {'symbol' => pair} response = get_public 'aggTrades', opts end
cancel_order(opts={})
click to toggle source
# File lib/binance_ruby.rb, line 126 def cancel_order(opts={}) required_opts = %w{ symbol } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 || (opts["orderId"].nil? && opts["origClientOrderId"].nil?) raise ArgumentError.new("Required options not given : symbol and either orderId or origClientOrderId}") end response = delete_private '/order?', opts end
candles(pair, interval)
click to toggle source
# File lib/binance_ruby.rb, line 36 def candles(pair, interval) opts = {'symbol' => pair, 'interval' => interval} response = get_public 'klines', opts end
get_account(opts={})
click to toggle source
Private Data #######
# File lib/binance_ruby.rb, line 66 def get_account(opts={}) response = get_private '/account?', opts end
get_all_orders(opts={})
click to toggle source
# File lib/binance_ruby.rb, line 108 def get_all_orders(opts={}) required_opts = %w{ symbol } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 raise ArgumentError.new("Required options, not given. Input must include #{leftover}") end response = get_private '/allOrders?', opts end
get_open_orders(opts={})
click to toggle source
# File lib/binance_ruby.rb, line 99 def get_open_orders(opts={}) required_opts = %w{ symbol } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 raise ArgumentError.new("Required options, not given. Input must include #{leftover}") end response = get_private '/openOrders?', opts end
get_order(opts={})
click to toggle source
# File lib/binance_ruby.rb, line 90 def get_order(opts={}) required_opts = %w{ symbol } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 || (opts["orderId"].nil? && opts["origClientOrderId"].nil?) raise ArgumentError.new("Required options not given : symbol and either orderId or origClientOrderId}") end response = get_private '/order?', opts end
get_public(method, opts={})
click to toggle source
# File lib/binance_ruby.rb, line 56 def get_public(method, opts={}) url = @base_uri + '/v1/' + method r = self.class.get(url, query: opts) resp = JSON.parse(r.body) end
get_trades(opts={})
click to toggle source
# File lib/binance_ruby.rb, line 117 def get_trades(opts={}) required_opts = %w{ symbol } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 raise ArgumentError.new("Required options, not given. Input must include #{leftover}") end response = get_private '/myTrades?', opts end
order_book(pair)
click to toggle source
# File lib/binance_ruby.rb, line 26 def order_book(pair) opts = {'symbol' => pair} response = get_public 'depth', opts end
server_time()
click to toggle source
Public Data ########
# File lib/binance_ruby.rb, line 21 def server_time response = get_public('time') response["serverTime"] end
set_order(opts={})
click to toggle source
# File lib/binance_ruby.rb, line 81 def set_order(opts={}) opts[:type] == "MARKET" ? required_opts = %w{ symbol side type timeInForce quantity price } : required_opts = %w{ symbol side type quantity } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 raise ArgumentError.new("Required options, not given. Input must include #{leftover}") end response = post_private '/order?', opts end
test_order(opts={})
click to toggle source
Mandatory parameters for order : symbol side type timeInForce quantity price
# File lib/binance_ruby.rb, line 72 def test_order(opts={}) opts[:type] == "MARKET" ? required_opts = %w{ symbol side type timeInForce quantity price } : required_opts = %w{ symbol side type quantity } leftover = required_opts - opts.keys.map(&:to_s) if leftover.length > 0 raise ArgumentError.new("Required options, not given. Input must include #{leftover}") end response = post_private '/order/test?', opts end
ticker_all()
click to toggle source
# File lib/binance_ruby.rb, line 48 def ticker_all response = get_public 'ticker/allPrices' end
ticker_all_order_book()
click to toggle source
# File lib/binance_ruby.rb, line 52 def ticker_all_order_book response = get_public '/ticker/allBookTickers' end
ticker_day(pair)
click to toggle source
interval list : 1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M
# File lib/binance_ruby.rb, line 43 def ticker_day(pair) opts = {'symbol' => pair} response = get_public 'ticker/24hr', opts end
Private Instance Methods
delete_private(method, opts={})
click to toggle source
# File lib/binance_ruby.rb, line 153 def delete_private(method, opts={}) header = {"X-MBX-APIKEY":@api_key } r = self.class.delete(set_request(method, opts), headers: header) resp = JSON.parse(r.body) end
get_private(method, opts={})
click to toggle source
Create request #####
# File lib/binance_ruby.rb, line 141 def get_private(method, opts={}) header = {"X-MBX-APIKEY":@api_key } r = self.class.get(set_request(method, opts), headers: header) resp = JSON.parse(r.body) end
post_private(method, opts={})
click to toggle source
# File lib/binance_ruby.rb, line 147 def post_private(method, opts={}) header = {"X-MBX-APIKEY":@api_key } r = self.class.post(set_request(method, opts), headers: header) resp = JSON.parse(r.body) end
set_request(method, opts={})
click to toggle source
# File lib/binance_ruby.rb, line 159 def set_request(method, opts={}) options = Array.new unless opts.empty? opts.each do |key, value| options << key + "=" + value end data = options.join('&') + '×tamp=' + DateTime.now.strftime('%Q').to_s else data = '×tamp=' + DateTime.now.strftime('%Q').to_s end digest = OpenSSL::Digest.new('sha256') signature = OpenSSL::HMAC.hexdigest(digest, @api_secret, data) url = @base_uri + '/v3' + method + data + "&signature=" + signature return url end