okex 0.3.3 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/okex/api_v5.rb +40 -1
- data/lib/okex/client.rb +9 -2
- data/lib/okex/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 633daa1f0495d2dcb85221058ac2b5e5a967416ea139277bb56bf34d88216a80
|
4
|
+
data.tar.gz: 2272c040ebb0bdaa5e1791d5ed94753c06d9c2e11f8a505164fcce8e8badd1f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d96d3b40bbf42de610b2cb02e6bab2f19face0a8a39f8ade8c3a4fc3ea170213f88f83a60bd3a8cfb16feb83703c57f2d593d9ab63731a860760fd34292c07cc
|
7
|
+
data.tar.gz: 947569fb37f6cc68557d79abd6897d05c7522e8148701f4e285873c5cbeb6065f7a075e113cd6f8a131be271a7bfb21049fc70f5a0f2f97b0ea0ed94ac3224ba
|
data/Gemfile.lock
CHANGED
data/lib/okex/api_v5.rb
CHANGED
@@ -69,7 +69,7 @@ class OKEX::ApiV5
|
|
69
69
|
|
70
70
|
def max_size(instrument_id)
|
71
71
|
data = client.get(host, "/api/v5/account/max-size?instId=#{instrument_id}&tdMode=cross")
|
72
|
-
|
72
|
+
|
73
73
|
ret = OKEX::MaxSize.new(-1, -1)
|
74
74
|
|
75
75
|
el = data[0]
|
@@ -87,6 +87,10 @@ class OKEX::ApiV5
|
|
87
87
|
end
|
88
88
|
|
89
89
|
# 设置止损价格
|
90
|
+
# @param inst_id [String] 合约名称
|
91
|
+
# @param posSide [String] 持仓方向
|
92
|
+
# @param sz [Integer] 持仓数量(张)
|
93
|
+
# @param price [Float] 止损价格
|
90
94
|
def set_stop_loss(inst_id, posSide, sz, price)
|
91
95
|
side = (posSide == OKEX::Order::POS_LONG) ? "sell" : "buy"
|
92
96
|
|
@@ -104,6 +108,41 @@ class OKEX::ApiV5
|
|
104
108
|
client.post(host, "/api/v5/trade/order-algo", params)
|
105
109
|
end
|
106
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
|
+
|
116
|
+
return -1 if result.empty?
|
117
|
+
return result[0]["slTriggerPx"].to_f if result.size == 1
|
118
|
+
|
119
|
+
raise "invalid result: #{result.inspect}"
|
120
|
+
end
|
121
|
+
|
122
|
+
# 查询当前止损订单的ID
|
123
|
+
# 可用于后续取消止损订单
|
124
|
+
# @param inst_id [String] 合约名称
|
125
|
+
def algo_order_id(inst_id)
|
126
|
+
result = client.get(host, "/api/v5/trade/orders-algo-pending?instId=#{inst_id}&instType=SWAP&ordType=conditional")
|
127
|
+
|
128
|
+
return "" if result.empty?
|
129
|
+
return result[0]["algoId"] if result.size == 1
|
130
|
+
|
131
|
+
raise "invalid result: #{result.inspect}"
|
132
|
+
end
|
133
|
+
|
134
|
+
# 撤销委托单
|
135
|
+
# @param algo_id [String] 策略委托单ID
|
136
|
+
# @param inst_id [String] 合约ID
|
137
|
+
def cancel_algo_order(algo_id, inst_id)
|
138
|
+
params = {
|
139
|
+
"algoId": algo_id,
|
140
|
+
"instId": inst_id
|
141
|
+
}
|
142
|
+
|
143
|
+
client.post(host, "/api/v5/trade/cancel-algos", [params])
|
144
|
+
end
|
145
|
+
|
107
146
|
private
|
108
147
|
|
109
148
|
attr_reader :client, :host
|
data/lib/okex/client.rb
CHANGED
@@ -23,8 +23,15 @@ module OKEX
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def post(host, path, payload)
|
26
|
-
|
27
|
-
|
26
|
+
if payload.is_a?(Array)
|
27
|
+
_json = payload.map do |hx|
|
28
|
+
gen_payload(hx)
|
29
|
+
end
|
30
|
+
payload_json = "[#{_json.join(",")}]"
|
31
|
+
else
|
32
|
+
payload_json = gen_payload(payload)
|
33
|
+
end
|
34
|
+
|
28
35
|
url = host + path
|
29
36
|
ts = timestamp
|
30
37
|
sig = sign(ts, "POST", path + payload_json)
|
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.7
|
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-
|
11
|
+
date: 2021-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|