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 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