class ItBitSDK::Trading::Order

Public Instance Methods

cancel!(id, wallet_id) click to toggle source
# File lib/it_bit_sdk/trading/order.rb, line 52
def cancel!(id, wallet_id)
  send_request(:delete, "/wallets/#{wallet_id}/orders/#{id}")
  self.status = :cancelling
  return self
rescue RestClient::UnprocessableEntity
  return nil
end
create!(wallet_id, side, instrument, amount, price, options = {}) click to toggle source
# File lib/it_bit_sdk/trading/order.rb, line 22
def create!(wallet_id, side, instrument, amount, price, options = {})
  params = {
    side: side,
    instrument: instrument.to_s.upcase,
    amount: amount.to_d.to_s('F'),
    price: price.to_d.to_s('F'),
    type: options[:type] || :limit,
    currency: options[:currency].try(:upcase) || 'XBT'
  }
  %w(metadata client_order_identifier).each do |a|
    params[a.camelize(:lower)] = options[a.to_sym] if options[a.to_sym]
  end

  order = ::ItBitSDK::Order.new(params: send_request(:post, "/wallets/#{wallet_id}/orders", params))
  retries = 0
  while options[:wait] && order.status == :submitted
    sleep 0.2
    begin
      order = order(order.id, wallet_id)
    rescue StandardError => e
    end
    retries += 1
    if retries > 5000 # Wait 15 minutes for the order to be accepted.
      raise StandardError.new(
        "Timed out waiting for #{base_path} ##{order.id}")
    end
  end
  return order
end
order(id, wallet_id) click to toggle source
# File lib/it_bit_sdk/trading/order.rb, line 18
def order(id, wallet_id)
  ::ItBitSDK::Order.new(params: send_request(:get, "/wallets/#{wallet_id}/orders/#{id}"))
end
orders(wallet_id, opts = {}) click to toggle source
# File lib/it_bit_sdk/trading/order.rb, line 7
def orders(wallet_id, opts = {})
  params = {}
  params[:instrument] = opts[:instrument].upcase if opts[:instrument]
  params[:page] = opts[:page].to_i if opts[:page]
  params[:perPage] = opts[:per_page].to_i if opts[:per_page]
  params[:status] = opts[:status] if opts[:status]

  send_request(:get, "/wallets/#{wallet_id}/orders", params)
    .collect { |o| ::ItBitSDK::Order.new(params: o) }
end