Class: Bter::Trade
- Inherits:
-
Object
- Object
- Bter::Trade
- Defined in:
- lib/bter/trading.rb
Instance Attribute Summary collapse
-
#key ⇒ Object
Returns the value of attribute key.
-
#secret ⇒ Object
Returns the value of attribute secret.
Instance Method Summary collapse
- #active_orders ⇒ Object
-
#buy(pair, amount) ⇒ Object
abstract the trade to buy and sell.
- #cancel_order(order_id) ⇒ Object
- #get_info ⇒ Object
- #get_rate(pair) ⇒ Object
-
#initialize ⇒ Trade
constructor
A new instance of Trade.
- #logging(p) ⇒ Object
- #order_status(order_id) ⇒ Object
- #sell(pair, amount) ⇒ Object
- #sign ⇒ Object
- #trade(*params) ⇒ Object
- #trade_request(method, params = nil) ⇒ Object
Constructor Details
#initialize ⇒ Trade
Returns a new instance of Trade.
7 8 9 |
# File 'lib/bter/trading.rb', line 7 def initialize @logging = false end |
Instance Attribute Details
#key ⇒ Object
Returns the value of attribute key.
5 6 7 |
# File 'lib/bter/trading.rb', line 5 def key @key end |
#secret ⇒ Object
Returns the value of attribute secret.
5 6 7 |
# File 'lib/bter/trading.rb', line 5 def secret @secret end |
Instance Method Details
#active_orders ⇒ Object
56 57 58 59 |
# File 'lib/bter/trading.rb', line 56 def active_orders query = trade_request "orderlist" info = JSON.parse query, {:symbolize_names => true} end |
#buy(pair, amount) ⇒ Object
abstract the trade to buy and sell
67 68 69 70 |
# File 'lib/bter/trading.rb', line 67 def buy(pair, amount) pair_rate = get_rate(pair) trade({:pair => pair, :type => "BUY", :rate => pair_rate, :amount => amount}) end |
#cancel_order(order_id) ⇒ Object
82 83 84 85 |
# File 'lib/bter/trading.rb', line 82 def cancel_order(order_id) query = trade_request "cancelorder", [{:id => order_id}] info = JSON.parse query, {:symbolize_names => true} end |
#get_info ⇒ Object
51 52 53 54 |
# File 'lib/bter/trading.rb', line 51 def get_info query = trade_request "getfunds" info = JSON.parse query, {:symbolize_names => true} end |
#get_rate(pair) ⇒ Object
87 88 89 |
# File 'lib/bter/trading.rb', line 87 def get_rate(pair) Public.new.ticker(pair).values_at(:last).flatten end |
#logging(p) ⇒ Object
11 12 13 14 15 |
# File 'lib/bter/trading.rb', line 11 def logging(p) if p == :on @logging = true end end |
#order_status(order_id) ⇒ Object
77 78 79 80 |
# File 'lib/bter/trading.rb', line 77 def order_status(order_id) query = trade_request "getorder", [{:id => order_id}] info = JSON.parse query, {:symbolize_names => true} end |
#sell(pair, amount) ⇒ Object
72 73 74 75 |
# File 'lib/bter/trading.rb', line 72 def sell(pair, amount) pair_rate = get_rate(pair) trade({:pair => pair, :type => "SELL", :rate => pair_rate, :amount => amount}) end |
#sign ⇒ Object
45 46 47 48 49 |
# File 'lib/bter/trading.rb', line 45 def sign hmac = OpenSSL::HMAC.new(@secret,OpenSSL::Digest::SHA512.new) @params = @params.collect {|k,v| "#{k}=#{v}"}.join('&') signed = hmac.update @params end |
#trade(*params) ⇒ Object
61 62 63 64 |
# File 'lib/bter/trading.rb', line 61 def trade(*params) query = trade_request "placeorder", params info = JSON.parse query, {:symbolize_names => true} end |
#trade_request(method, params = nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/bter/trading.rb', line 17 def trade_request(method, params=nil) if params.nil? @params = {:method => method} else @params = {:method => method} params.each do |param| @params.merge!(param) end end request = Typhoeus::Request.new( "https://bter.com/api/1/private/#{method}", method: :post, body: @params, headers: { Key: @key, Sign: sign } ) if @logging RequestLogger.error_log(request) end hydra = Typhoeus::Hydra.hydra hydra.queue(request) hydra.run response = request.response if @logging RequestLogger.info_log(response.code, response.total_time, response.headers_hash) end response.body end |