okcoin-ruby 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +22 -3
- data/lib/okcoin-ruby.rb +1 -0
- data/lib/okcoin/rest.rb +139 -4
- data/lib/okcoin/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b23eec84532c011d040c6fa7728ab5efa39b8c18
|
4
|
+
data.tar.gz: f8783b2a32993bc2233aceffff7dfd3c127d65e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27a39fe575d4fb49380fb79df027636dfef5c15d89bd56ddf681fa2fb195ed0094fd7e206102710ca63d7beaf18a0995c8342f64e681e9e5e533716bd3eefff5
|
7
|
+
data.tar.gz: 346ca36c63f846445c6dfba035ca206ce469900a0674a018904a4bfaa900504dbb84123078916c0d1d94e430f919893e124e1308f4ed5da290f1d98964d3f0e5
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -12,7 +12,7 @@ BTC 15y2a3FKLW89qoDniDMRwsdhrZeHJA1Det
|
|
12
12
|
Add these gems into your Gemfile:
|
13
13
|
|
14
14
|
```ruby
|
15
|
-
gem 'okcoin-ruby'
|
15
|
+
gem 'okcoin-ruby', '~> 0.0.6'
|
16
16
|
gem 'celluloid-websocket-client', :github => 'ilyacherevkov/celluloid-websocket-client'
|
17
17
|
```
|
18
18
|
|
@@ -30,6 +30,8 @@ okcoin = Okcoin::Rest.new api_key: ENV['OKCOIN_APIKEY'], secret_key: ENV['OKCOIN
|
|
30
30
|
|
31
31
|
Make requests
|
32
32
|
|
33
|
+
[See OKCoin REST API reference](https://www.okcoin.com/about/rest_api.do)
|
34
|
+
|
33
35
|
Spot Price
|
34
36
|
```ruby
|
35
37
|
okcoin.spot_ticker(pair: "btc_usd")
|
@@ -43,11 +45,26 @@ Spot Trade
|
|
43
45
|
```ruby
|
44
46
|
okcoin.spot_userinfo
|
45
47
|
okcoin.spot_trade(pair: "btc_usd", type: "buy", price:240, amount:1)
|
48
|
+
# max 5 orders in spot_batch_trade per request
|
49
|
+
okcoin.batch_spot_trade(pair: "btc_usd", type: "buy", orders_data: [{price:3,amount:5,type:'sell'},{price:3,amount:3,type:'buy'},{price:3,amount:3}])
|
50
|
+
# max 3 order_ids in spot_cancel per request
|
51
|
+
okcoin.spot_cancel(pair: "btc_usd", order_id: "1234, 2345, 3456")
|
52
|
+
# -1 returns all unfilled orders, otherwise return the order specified
|
53
|
+
okcoin.spot_order_info(pair: "btc_usd", order_id: -1)
|
54
|
+
# max 50 orders per request
|
55
|
+
spot_orders_info(pair: "btc_usd", type: 0, order_id: "12345, 2345, 3456")
|
46
56
|
```
|
47
57
|
|
48
58
|
Futures Price
|
49
59
|
```ruby
|
50
|
-
okcoin.futures_orderbook(pair: "btc_usd",
|
60
|
+
okcoin.futures_orderbook(pair: "btc_usd", contract_type: "this_week", items_no: 50, merge: 0)
|
61
|
+
okcoin.futures_trades(pair: "btc_usd", contract_type: "this_week")
|
62
|
+
okcoin.futures_index(pair: "btc_usd")
|
63
|
+
okcoin.exchange_rate
|
64
|
+
okcoin.futures_estimated_price(pair: "btc_usd")
|
65
|
+
okcoin.futures_trades_history(pair: "btc_usd", date: nil, since: nil)
|
66
|
+
okcoin.futures_kandlestick(pair: "btc_usd", type: "30min", contract_type: "this_week", size: 50, since: nil)
|
67
|
+
okcoin.futures_hold_amount(pair: "btc_usd", contract_type: "this_week")
|
51
68
|
```
|
52
69
|
|
53
70
|
Futures Trade
|
@@ -57,10 +74,12 @@ okcoin.futures_trade(pair: "btc_usd", amount: 1, type: 1, contract_type: "this_w
|
|
57
74
|
okcoin.futures_cancel(pair: "btc_usd", contract_type: "this_week", order_id: 12345)
|
58
75
|
okcoin.futures_order_info(order_id: 12345, symbol: "btc_usd", contract_type: "this_week", status: nil, current_page: nil, page_length: nil)
|
59
76
|
okcoin.futures_position(pair: "btc_usd", contract_type: "this_week")
|
77
|
+
okcoin.futures_explosive(pair: "btc_usd", contract_type: "this_week", status: 0, current_page: 1, page_length: 50)
|
78
|
+
# status - 0: open liquidation orders of last 7 days; 1: filled liquidation orders of last 7 days
|
60
79
|
```
|
61
80
|
|
62
81
|
### 2. WebSocket Example
|
63
|
-
|
82
|
+
[See OKCoin WebSocket API reference](https://www.okcoin.com/about/ws_api.do)
|
64
83
|
```ruby
|
65
84
|
okcoin = Okcoin::WS.new api_key: ENV['OKCOIN_APIKEY'], secret_key: ENV['OKCOIN_SECRET']
|
66
85
|
okcoin.userinfo
|
data/lib/okcoin-ruby.rb
CHANGED
data/lib/okcoin/rest.rb
CHANGED
@@ -9,7 +9,9 @@ class Okcoin
|
|
9
9
|
end
|
10
10
|
|
11
11
|
public
|
12
|
+
|
12
13
|
# Spot Price API
|
14
|
+
|
13
15
|
def spot_ticker(pair: "btc_usd")
|
14
16
|
query = { "symbol" => pair }
|
15
17
|
get_request(url: "/v1/ticker.do", query: query)
|
@@ -44,7 +46,7 @@ class Okcoin
|
|
44
46
|
|
45
47
|
def spot_trade(pair:, type:, price:, amount:)
|
46
48
|
post_data = initial_post_data
|
47
|
-
|
49
|
+
|
48
50
|
post_data["symbol"] = pair
|
49
51
|
post_data["type"] = type
|
50
52
|
post_data["amount"] = amount
|
@@ -53,13 +55,131 @@ class Okcoin
|
|
53
55
|
post_request post_data: post_data, action: "/v1/trade.do"
|
54
56
|
end
|
55
57
|
|
58
|
+
def spot_batch_trade(pair:, type:, orders_data:)
|
59
|
+
post_data = initial_post_data
|
60
|
+
|
61
|
+
post_data["symbol"] = pair
|
62
|
+
post_data["type"] = type
|
63
|
+
post_data["orders_data"] = orders_data
|
64
|
+
|
65
|
+
post_request post_data: post_data, action: "/v1/batch_trade.do"
|
66
|
+
end
|
67
|
+
|
68
|
+
def spot_cancel(pair:, order_id:)
|
69
|
+
post_data = initial_post_data
|
70
|
+
|
71
|
+
post_data["symbol"] = pair
|
72
|
+
post_data["order_id"] = order_id
|
73
|
+
|
74
|
+
post_request post_data: post_data, action: "/v1/cancel_order.do"
|
75
|
+
end
|
76
|
+
|
77
|
+
def spot_order_info(pair:, order_id:)
|
78
|
+
post_data = initial_post_data
|
79
|
+
|
80
|
+
post_data["symbol"] = pair
|
81
|
+
post_data["order_id"] = order_id
|
82
|
+
|
83
|
+
post_request post_data: post_data, action: "/v1/order_info.do"
|
84
|
+
end
|
85
|
+
|
86
|
+
def spot_orders_info(pair:, type:, order_id:)
|
87
|
+
post_data = initial_post_data
|
88
|
+
|
89
|
+
post_data["symbol"] = pair
|
90
|
+
post_data["order_id"] = order_id
|
91
|
+
post_data["type"] = type
|
92
|
+
|
93
|
+
post_request post_data: post_data, action: "/v1/orders_info.do"
|
94
|
+
end
|
95
|
+
|
96
|
+
def spot_withdraw(pair: 'btc_usd', trade_pwd:, withdraw_address:, withdraw_amount:, chargefee: 0.0001)
|
97
|
+
post_data = initial_post_data
|
98
|
+
|
99
|
+
post_data['symbol'] = pair
|
100
|
+
post_data['chargefee'] = chargefee
|
101
|
+
post_data['trade_pwd'] = trade_pwd
|
102
|
+
post_data['withdraw_address'] = withdraw_address
|
103
|
+
post_data['withdraw_amount'] = withdraw_amount
|
104
|
+
post_request post_data: post_data, action: "/v1/withdraw.do"
|
105
|
+
end
|
106
|
+
|
107
|
+
def spot_cancel_withdraw(pair: 'btc_usd', withdraw_id:)
|
108
|
+
post_data = initial_post_data
|
109
|
+
|
110
|
+
post_data['symbol'] = pair
|
111
|
+
post_data['withdraw_id'] = withdraw_id
|
112
|
+
post_request post_data: post_data, action: "/v1/cancel_withdraw.do"
|
113
|
+
end
|
114
|
+
|
115
|
+
def spot_withdraw_info(pair: 'btc_usd', withdraw_id:)
|
116
|
+
post_data = initial_post_data
|
117
|
+
|
118
|
+
post_data['symbol'] = pair
|
119
|
+
post_data['withdraw_id'] = withdraw_id
|
120
|
+
post_request post_data: post_data, action: "/v1/withdraw_info.do"
|
121
|
+
end
|
122
|
+
|
123
|
+
# type 0:deposits 1 :withdraw
|
124
|
+
def spot_account_records(pair: 'btc_usd', type: 1, current_page: 1, page_length: 50)
|
125
|
+
post_data = initial_post_data
|
126
|
+
|
127
|
+
post_data['symbol'] = pair
|
128
|
+
post_data['type'] = type
|
129
|
+
post_data['current_page'] = current_page
|
130
|
+
post_data['page_length'] = page_length
|
131
|
+
|
132
|
+
post_request post_data: post_data, action: "/v1/account_records.do"
|
133
|
+
end
|
134
|
+
|
56
135
|
# Futures Price API
|
57
|
-
|
58
|
-
|
136
|
+
|
137
|
+
def futures_ticker(pair: "btc_usd", contract_type: "this_week")
|
138
|
+
query = { "symbol" => pair, "contract_type" => contract_type }
|
139
|
+
get_request(url: "/v1/future_ticker.do", query: query)
|
140
|
+
end
|
141
|
+
|
142
|
+
def futures_orderbook(pair: "btc_usd", contract_type: "this_week", items_no: 50, merge: 0)
|
143
|
+
query = { "symbol" => pair, "contract_type" => contract_type, "size" => items_no, "merge" => merge }
|
59
144
|
get_request(url: "/future_depth.do", query: query)
|
60
145
|
end
|
61
146
|
|
147
|
+
def futures_trades(pair: "btc_usd", contract_type: "this_week")
|
148
|
+
query = { "symbol" => pair, "contract_type" => since }
|
149
|
+
get_request(url: "/v1/trades.do", query: query)
|
150
|
+
end
|
151
|
+
|
152
|
+
def futures_index(pair: "btc_usd")
|
153
|
+
query = { "symbol" => pair }
|
154
|
+
get_request(url: "/v1/future_index.do", query: query)
|
155
|
+
end
|
156
|
+
|
157
|
+
def exchange_rate
|
158
|
+
get_request(url: "/v1/exchange_rate.do")
|
159
|
+
end
|
160
|
+
|
161
|
+
def futures_estimated_price(pair: "btc_usd")
|
162
|
+
query = { "symbol" => pair }
|
163
|
+
get_request(url: "/v1/future_estimated_price.do", query: query)
|
164
|
+
end
|
165
|
+
|
166
|
+
def futures_trades_history(pair: "btc_usd", date:, since:)
|
167
|
+
query = { "symbol" => pair, "date" => date, "since" => since }
|
168
|
+
get_request(url: "/v1/future_trades_history.do", query: query)
|
169
|
+
end
|
170
|
+
|
171
|
+
def futures_kandlestick(pair: "btc_usd", type: "30min", contract_type: "this_week", size: 50, since: nil)
|
172
|
+
query = { "symbol" => pair, "type" => type, "contract_type" => contract_type, "size" => size, "since" => since }
|
173
|
+
get_request(url: "/v1/future_kline.do", query: query)
|
174
|
+
end
|
175
|
+
|
176
|
+
def futures_hold_amount(pair: "btc_usd", contract_type: "this_week")
|
177
|
+
query = { "symbol" => pair, "contract_type" => contract_type }
|
178
|
+
get_request(url: "/v1/future_hold_amount.do", query: query)
|
179
|
+
end
|
180
|
+
|
62
181
|
# Futures Trading API
|
182
|
+
|
63
183
|
def futures_userinfo
|
64
184
|
post_data = initial_post_data
|
65
185
|
post_request post_data: post_data, action: "/v1/future_userinfo.do"
|
@@ -109,13 +229,28 @@ class Okcoin
|
|
109
229
|
post_request post_data: post_data, action: "/v1/future_position.do"
|
110
230
|
end
|
111
231
|
|
232
|
+
def futures_explosive(pair:, contract_type:, status:, current_page:, page_length:)
|
233
|
+
post_data = initial_post_data
|
234
|
+
post_data["symbol"] = pair
|
235
|
+
post_data["contract_type"] = contract_type
|
236
|
+
post_data["status"] = status
|
237
|
+
post_data["current_page"] = current_page
|
238
|
+
post_data["page_length"] = page_length
|
239
|
+
|
240
|
+
post_request post_data: post_data, action: "/v1/future_explosive.do"
|
241
|
+
end
|
242
|
+
|
112
243
|
private
|
113
244
|
|
245
|
+
def logger
|
246
|
+
@logger ||= Object.const_defined?(:Rails) ? Rails.logger : Logger.new(STDOUT)
|
247
|
+
end
|
248
|
+
|
114
249
|
def handle_timeouts
|
115
250
|
begin
|
116
251
|
yield
|
117
252
|
rescue => ex
|
118
|
-
|
253
|
+
logger.info("Okcoin: An error of type #{ex.class} happened, message is #{ex.message}. Retrying...")
|
119
254
|
sleep TIMEOUT
|
120
255
|
retry
|
121
256
|
end
|
data/lib/okcoin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: okcoin-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Cherevkov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.4.8
|
107
107
|
signing_key:
|
108
108
|
specification_version: 4
|
109
109
|
summary: A ruby library for okcoin.com
|