okex 0.3.0 → 0.3.4
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/Gemfile.lock +4 -4
- data/README.md +2 -1
- data/lib/okex.rb +5 -1
- data/lib/okex/api_error.rb +13 -0
- data/lib/okex/api_v5.rb +64 -14
- data/lib/okex/balance.rb +2 -0
- data/lib/okex/client.rb +13 -5
- data/lib/okex/coin/usdt.rb +11 -0
- data/lib/okex/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 463b9adff7eb98e1fa712f06153edbc29b80870aede2cd2913681da84f0e5b66
|
|
4
|
+
data.tar.gz: 428d38ce826c5e3e01ddcd43c3a9e8e4e5b2de1d4f41139497ad5beee818b452
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 615e679ffb2f370020af864cdc753bcf7cb836a83e73a127046f09712b1a81a4d20dcbe94643e19177f1c61578fb8e3bfd44f752673fed56ab4208d4eeda7ee0
|
|
7
|
+
data.tar.gz: dc96eacc3985d1889eac587fee049b2c174eca9e245d03e66a4bfb3f1cb8c1871c99cb73ef70f5b418703883f4e6927888c7806492841fb76a71f9b4b43a332a
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
okex (0.
|
|
4
|
+
okex (0.3.4)
|
|
5
5
|
faraday (~> 1.5)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -9,7 +9,7 @@ GEM
|
|
|
9
9
|
specs:
|
|
10
10
|
byebug (11.1.3)
|
|
11
11
|
diff-lcs (1.4.4)
|
|
12
|
-
faraday (1.5.
|
|
12
|
+
faraday (1.5.1)
|
|
13
13
|
faraday-em_http (~> 1.0)
|
|
14
14
|
faraday-em_synchrony (~> 1.0)
|
|
15
15
|
faraday-excon (~> 1.1)
|
|
@@ -24,7 +24,7 @@ GEM
|
|
|
24
24
|
faraday-excon (1.1.0)
|
|
25
25
|
faraday-httpclient (1.0.1)
|
|
26
26
|
faraday-net_http (1.0.1)
|
|
27
|
-
faraday-net_http_persistent (1.
|
|
27
|
+
faraday-net_http_persistent (1.2.0)
|
|
28
28
|
faraday-patron (1.0.0)
|
|
29
29
|
multipart-post (2.1.1)
|
|
30
30
|
rake (10.5.0)
|
|
@@ -41,7 +41,7 @@ GEM
|
|
|
41
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
42
42
|
rspec-support (~> 3.10.0)
|
|
43
43
|
rspec-support (3.10.2)
|
|
44
|
-
ruby2_keywords (0.0.
|
|
44
|
+
ruby2_keywords (0.0.5)
|
|
45
45
|
|
|
46
46
|
PLATFORMS
|
|
47
47
|
ruby
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# okex
|
|
2
2
|
|
|
3
|
-
This is the
|
|
3
|
+
This is the V5 API ruby lib for okex.com
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -20,6 +20,7 @@ Or install it yourself as:
|
|
|
20
20
|
|
|
21
21
|
## Usage
|
|
22
22
|
|
|
23
|
+
Set `OKEX_DEBUG` environment flag to 1 to print debug messages.
|
|
23
24
|
|
|
24
25
|
## Development
|
|
25
26
|
|
data/lib/okex.rb
CHANGED
|
@@ -2,10 +2,14 @@ require "okex/version"
|
|
|
2
2
|
require "okex/api_v3"
|
|
3
3
|
require "okex/api_v5"
|
|
4
4
|
require "okex/client"
|
|
5
|
-
require "okex/coin"
|
|
5
|
+
require "okex/coin/bitcoin"
|
|
6
|
+
require "okex/coin/usdt"
|
|
6
7
|
require "okex/order"
|
|
7
8
|
require "okex/host"
|
|
8
9
|
require "okex/max_size"
|
|
10
|
+
require "okex/api_error"
|
|
11
|
+
require "okex/balance"
|
|
12
|
+
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
module OKEX
|
data/lib/okex/api_v5.rb
CHANGED
|
@@ -14,13 +14,23 @@ class OKEX::ApiV5
|
|
|
14
14
|
url += "?instId=#{inst_id}"
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
data = client.get(host, url)
|
|
18
|
+
|
|
19
|
+
data.map {|params| OKEX::Order.new(params)}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def balance(ccy, round)
|
|
23
|
+
data = client.get(host, "/api/v5/account/balance?ccy=#{ccy}")
|
|
24
|
+
|
|
25
|
+
details = data[0]['details'][0]
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
OKEX::Balance.new(
|
|
28
|
+
details['ccy'],
|
|
29
|
+
dig_round(details, 'cashBal', round),
|
|
30
|
+
dig_round(details, 'avalEq', round),
|
|
31
|
+
dig_round(details, 'frozenBal', round),
|
|
32
|
+
dig_round(details, 'upl', round)
|
|
33
|
+
)
|
|
24
34
|
end
|
|
25
35
|
|
|
26
36
|
def long_swap(instid, amount)
|
|
@@ -58,19 +68,55 @@ class OKEX::ApiV5
|
|
|
58
68
|
end
|
|
59
69
|
|
|
60
70
|
def max_size(instrument_id)
|
|
61
|
-
|
|
71
|
+
data = client.get(host, "/api/v5/account/max-size?instId=#{instrument_id}&tdMode=cross")
|
|
62
72
|
|
|
63
73
|
ret = OKEX::MaxSize.new(-1, -1)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
end
|
|
74
|
+
|
|
75
|
+
el = data[0]
|
|
76
|
+
if el.present? && el['maxBuy'].to_i > 0 && el['maxSell'].to_i > 0
|
|
77
|
+
ret = OKEX::MaxSize.new(el['maxBuy'].to_i, el['maxSell'].to_i)
|
|
69
78
|
end
|
|
70
|
-
|
|
79
|
+
|
|
71
80
|
ret
|
|
72
81
|
end
|
|
73
82
|
|
|
83
|
+
def current_leverage(inst_id)
|
|
84
|
+
data = client.get(host, "/api/v5/account/leverage-info?instId=#{inst_id}&mgnMode=cross")
|
|
85
|
+
|
|
86
|
+
data[0]['lever'].to_i
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# 设置止损价格
|
|
90
|
+
# @param inst_id [String] 合约名称
|
|
91
|
+
# @param posSide [String] 持仓方向
|
|
92
|
+
# @param sz [Integer] 持仓数量(张)
|
|
93
|
+
# @param price [Float] 止损价格
|
|
94
|
+
def set_stop_loss(inst_id, posSide, sz, price)
|
|
95
|
+
side = (posSide == OKEX::Order::POS_LONG) ? "sell" : "buy"
|
|
96
|
+
|
|
97
|
+
params = {
|
|
98
|
+
"instId": inst_id,
|
|
99
|
+
"tdMode": "cross",
|
|
100
|
+
"side": side,
|
|
101
|
+
"posSide": posSide.to_s,
|
|
102
|
+
"sz": sz.to_s,
|
|
103
|
+
"ordType": "conditional",
|
|
104
|
+
"slTriggerPx": price.to_s,
|
|
105
|
+
"slOrdPx": "-1"
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
client.post(host, "/api/v5/trade/order-algo", params)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# 查询当前设置的止损价格
|
|
112
|
+
# @param inst_id [String] 合约名称
|
|
113
|
+
def stop_loss_price(inst_id)
|
|
114
|
+
result = client.get(host, "/api/v5/trade/orders-algo-pending?instId=#{inst_id}&instType=SWAP&ordType=conditional")
|
|
115
|
+
return result[0]["slTriggerPx"].to_i if result.size == 1
|
|
116
|
+
|
|
117
|
+
raise "invalid result: #{result.inspect}"
|
|
118
|
+
end
|
|
119
|
+
|
|
74
120
|
private
|
|
75
121
|
|
|
76
122
|
attr_reader :client, :host
|
|
@@ -84,4 +130,8 @@ class OKEX::ApiV5
|
|
|
84
130
|
|
|
85
131
|
client.post(host, "/api/v5/trade/close-position", params)
|
|
86
132
|
end
|
|
87
|
-
|
|
133
|
+
|
|
134
|
+
def dig_round(obj, key, round)
|
|
135
|
+
obj[key].to_f.round(round)
|
|
136
|
+
end
|
|
137
|
+
end
|
data/lib/okex/balance.rb
ADDED
data/lib/okex/client.rb
CHANGED
|
@@ -12,19 +12,27 @@ module OKEX
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def get(host, path)
|
|
15
|
+
url = host + path
|
|
15
16
|
ts = timestamp
|
|
16
17
|
sig = sign(ts, "GET", path)
|
|
18
|
+
_h = headers(ts, sig)
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
puts "---> GET: url=#{url}, headers=#{_h}" if ENV['OKEX_DEBUG'].to_i > 0
|
|
21
|
+
|
|
22
|
+
_resp(Faraday.get(url, nil, _h))
|
|
19
23
|
end
|
|
20
24
|
|
|
21
25
|
def post(host, path, payload)
|
|
22
26
|
payload_json = gen_payload(payload)
|
|
23
27
|
|
|
28
|
+
url = host + path
|
|
24
29
|
ts = timestamp
|
|
25
30
|
sig = sign(ts, "POST", path + payload_json)
|
|
31
|
+
_h = headers(ts, sig)
|
|
32
|
+
|
|
33
|
+
puts "---> POST: url=#{url}, payload=#{payload_json}, headers=#{_h}" if ENV['OKEX_DEBUG'].to_i > 0
|
|
26
34
|
|
|
27
|
-
_resp(Faraday.post(
|
|
35
|
+
_resp(Faraday.post(url, payload_json, _h))
|
|
28
36
|
end
|
|
29
37
|
|
|
30
38
|
private
|
|
@@ -64,10 +72,10 @@ module OKEX
|
|
|
64
72
|
|
|
65
73
|
code = result['code'].to_i
|
|
66
74
|
if code == 0 && result['msg'].empty?
|
|
67
|
-
return
|
|
68
|
-
else
|
|
69
|
-
return {'success' => false, 'code' => code, 'msg' => result['msg']}
|
|
75
|
+
return result['data']
|
|
70
76
|
end
|
|
77
|
+
|
|
78
|
+
raise OKEX::ApiError.new(code, result['data'], result['msg'])
|
|
71
79
|
end
|
|
72
80
|
end
|
|
73
81
|
end
|
data/lib/okex/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: okex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Zhang
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-07-
|
|
11
|
+
date: 2021-07-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -99,11 +99,14 @@ files:
|
|
|
99
99
|
- bin/console
|
|
100
100
|
- bin/setup
|
|
101
101
|
- lib/okex.rb
|
|
102
|
+
- lib/okex/api_error.rb
|
|
102
103
|
- lib/okex/api_v3.rb
|
|
103
104
|
- lib/okex/api_v5.rb
|
|
105
|
+
- lib/okex/balance.rb
|
|
104
106
|
- lib/okex/client.rb
|
|
105
107
|
- lib/okex/coin.rb
|
|
106
108
|
- lib/okex/coin/bitcoin.rb
|
|
109
|
+
- lib/okex/coin/usdt.rb
|
|
107
110
|
- lib/okex/host.rb
|
|
108
111
|
- lib/okex/max_size.rb
|
|
109
112
|
- lib/okex/order.rb
|