okex 0.3.2 → 0.3.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/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
|