okex 0.3.2 → 0.3.6
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 +58 -17
- 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: 46ba525661005cec7d3f40cf9391e09964e9ff9cde7c21717efa6991dd2b4d9c
|
4
|
+
data.tar.gz: 47fb2e5caec6039559bcebf4c5397be2e66525c7f2f06bf02ee5e8a928b25311
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40c95b78c042c77674d0c030b06a7b1636cb94784c7e47819006fd617522cfef333731e29b3a02f83878dad4937023f36cfd0cc6673a0494cffbf8052533c977
|
7
|
+
data.tar.gz: d673a85cee82d1e6514fece15211ef1b64188e792b2feb02b7d5eb0ee94d71d25d35c35757eb8ab2f4ea647b69cf82d8562766b208d0174c2548081c31eee7e1
|
data/Gemfile.lock
CHANGED
data/lib/okex/api_v5.rb
CHANGED
@@ -59,22 +59,6 @@ class OKEX::ApiV5
|
|
59
59
|
client.post(host, "/api/v5/trade/order", params)
|
60
60
|
end
|
61
61
|
|
62
|
-
# # 开多带止损
|
63
|
-
# def long_swap_stop(instid, amount, stop_price)
|
64
|
-
# params = {
|
65
|
-
# "instId": instid,
|
66
|
-
# "tdMode": "cross",
|
67
|
-
# "side": "buy",
|
68
|
-
# "posSide": "long",
|
69
|
-
# "ordType": "conditional",
|
70
|
-
# "sz": amount.to_s,
|
71
|
-
# "slTriggerPx": stop_price.to_s,
|
72
|
-
# "slOrdPx": "-1", # 执行市价止损
|
73
|
-
# }
|
74
|
-
|
75
|
-
# client.post(host, "/api/v5/trade/order-algo", params)
|
76
|
-
# end
|
77
|
-
|
78
62
|
def close_long(instrument_id)
|
79
63
|
close_position(instrument_id, "long")
|
80
64
|
end
|
@@ -102,6 +86,63 @@ class OKEX::ApiV5
|
|
102
86
|
data[0]['lever'].to_i
|
103
87
|
end
|
104
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
|
+
|
116
|
+
return -1 if result.empty?
|
117
|
+
return result[0]["slTriggerPx"].to_i 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
|
+
|
105
146
|
private
|
106
147
|
|
107
148
|
attr_reader :client, :host
|
@@ -119,4 +160,4 @@ class OKEX::ApiV5
|
|
119
160
|
def dig_round(obj, key, round)
|
120
161
|
obj[key].to_f.round(round)
|
121
162
|
end
|
122
|
-
end
|
163
|
+
end
|
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.6
|
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-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|