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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30adc1b436dc4b0e5d299b64567da2e425c83d8b631c8e73d5c5cf116e3d45aa
4
- data.tar.gz: 756dd71409995a737c20a5acf06b9c4478b1e91735ef1ab34345a8b3aef9051f
3
+ metadata.gz: 46ba525661005cec7d3f40cf9391e09964e9ff9cde7c21717efa6991dd2b4d9c
4
+ data.tar.gz: 47fb2e5caec6039559bcebf4c5397be2e66525c7f2f06bf02ee5e8a928b25311
5
5
  SHA512:
6
- metadata.gz: aae50477ae52399c19a0f14944a97e8d08182e196e34c436ebbb03c344807acf144e433834ce5894e4d0b36e7e9dba9f396d67ff40ae01c0741427d9e3442c47
7
- data.tar.gz: 307e1223e5e804412cb7d4ec770edebcee1ba25b65bd46e38b5bd92fc6a95729a22cd39dec8eae1034d91b748482ea834107d8f3a766178f97bafc8155fc56a6
6
+ metadata.gz: 40c95b78c042c77674d0c030b06a7b1636cb94784c7e47819006fd617522cfef333731e29b3a02f83878dad4937023f36cfd0cc6673a0494cffbf8052533c977
7
+ data.tar.gz: d673a85cee82d1e6514fece15211ef1b64188e792b2feb02b7d5eb0ee94d71d25d35c35757eb8ab2f4ea647b69cf82d8562766b208d0174c2548081c31eee7e1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- okex (0.3.1)
4
+ okex (0.3.6)
5
5
  faraday (~> 1.5)
6
6
 
7
7
  GEM
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
- payload_json = gen_payload(payload)
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
@@ -1,3 +1,3 @@
1
1
  module OKEX
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.6"
3
3
  end
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.2
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-25 00:00:00.000000000 Z
11
+ date: 2021-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler