okex 0.2.5 → 0.2.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: 6e79f7f281cc49fecf294441cfc91c8a0f7e065204a69fae02c968f48b5fc83a
4
- data.tar.gz: 802b3412745cc52ed7989bf6e16d9e6e61a9d5c962446bb81b29182abcaeeab0
3
+ metadata.gz: 012c9b50e5c4dd3fb5522d0eef07764feb177c23a2aee07e1a847399fb7b7d68
4
+ data.tar.gz: 43f87e76c36c65bf9b81122392b36af8bee0f5125617b28ff2a6e2ae6a36196a
5
5
  SHA512:
6
- metadata.gz: 1f00ee33cb15494a908dba476c5fb1b3eaeea37b3b313bfb5d47a95237ac6117b83b6adae1790bbf62ece997b4f972eb98d77a6326dbb3899da4bb116d96cc06
7
- data.tar.gz: 6a2ddad58a09dfdb945babd65cc78022c427bb6147df57f5c38b5e74438ebf16e75f2746287da0931abfb4e0f643077aeee984f7920ea5954ca47aa75a548783
6
+ metadata.gz: 84533cb2cc12b733a01c29a3f76274e1b179573fa0ad21e2588c87b04e76e9afdca18979c22056b4fa4c75fbec578e7fbb319e198721bedb9150e39e4f819f2a
7
+ data.tar.gz: 839673d67fed38b99dce0b5d5f31df562e56d9617c5e7c87cad1772136b616c60d457d6d9397427372bb0b6fd4168c9b035a8d74fb50b972c9bfc68e48defbce
data/Gemfile.lock CHANGED
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- okex (0.2.3)
4
+ okex (0.2.5)
5
5
  faraday (~> 1.5)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
+ byebug (11.1.3)
10
11
  diff-lcs (1.4.4)
11
12
  faraday (1.5.0)
12
13
  faraday-em_http (~> 1.0)
@@ -47,6 +48,7 @@ PLATFORMS
47
48
 
48
49
  DEPENDENCIES
49
50
  bundler (~> 1.17)
51
+ byebug (~> 11.1)
50
52
  okex!
51
53
  rake (~> 10.0)
52
54
  rspec (~> 3.0)
data/lib/okex.rb CHANGED
@@ -4,8 +4,11 @@ require "okex/api_v5"
4
4
  require "okex/client"
5
5
  require "okex/coin"
6
6
  require "okex/order"
7
+ require "okex/account_order"
8
+ require "okex/trade_order"
7
9
  require "okex/host"
8
10
 
11
+
9
12
  module OKEX
10
13
  class Error < StandardError; end
11
14
  end
@@ -0,0 +1,4 @@
1
+ module OKEX
2
+ class AccountOrder < Order
3
+ end
4
+ end
data/lib/okex/api_v5.rb CHANGED
@@ -8,11 +8,21 @@ class OKEX::ApiV5
8
8
  client.get(host, "/api/v5/public/instruments?instType=SWAP")
9
9
  end
10
10
 
11
- def orders
11
+ def account_orders
12
12
  resp = client.get(host, "/api/v5/account/positions")
13
13
 
14
+ if resp['success']
15
+ return resp['data'].map {|params| OKEX::AccountOrder.new(params)}
16
+ end
17
+
18
+ []
19
+ end
20
+
21
+ def trade_orders(instrument_id)
22
+ resp = client.get(host, "/api/v5/trade/order?instId=#{instrument_id}")
23
+
14
24
  if resp['code'].to_i == 0 && resp['data'].size > 0
15
- return resp['data'].map {|params| OKEX::Order.new(params)}
25
+ return resp['data'].map {|params| OKEX::TradeOrder.new(params)}
16
26
  end
17
27
 
18
28
  []
@@ -31,21 +41,21 @@ class OKEX::ApiV5
31
41
  client.post(host, "/api/v5/trade/order", params)
32
42
  end
33
43
 
34
- def close_long(instid)
35
- close_position(instid, "long")
44
+ def close_long(instrument_id)
45
+ close_position(instrument_id, "long")
36
46
  end
37
47
 
38
- def close_short(instid)
39
- close_position(instid, "short")
48
+ def close_short(instrument_id)
49
+ close_position(instrument_id, "short")
40
50
  end
41
51
 
42
52
  private
43
53
 
44
54
  attr_reader :client, :host
45
55
 
46
- def close_position(instid, direction)
56
+ def close_position(instrument_id, direction)
47
57
  params = {
48
- "instId": instid,
58
+ "instId": instrument_id,
49
59
  "mgnMode": "cross",
50
60
  "posSide": direction
51
61
  }
data/lib/okex/client.rb CHANGED
@@ -60,7 +60,14 @@ module OKEX
60
60
  end
61
61
 
62
62
  def _resp(result)
63
- JSON.parse(result.body)
63
+ result = JSON.parse(result.body)
64
+
65
+ code = result['code'].to_i
66
+ if code == 0 && result['msg'].empty?
67
+ return {'success' => true, 'data' => result['data']}
68
+ else
69
+ return {'success' => false, 'code' => code, 'msg' => result['msg']}
70
+ end
64
71
  end
65
72
  end
66
73
  end
data/lib/okex/order.rb CHANGED
@@ -30,6 +30,11 @@ module OKEX
30
30
  dig("liqPx").to_f
31
31
  end
32
32
 
33
+ # 最新成交价
34
+ def last_price
35
+ dig("last").to_f
36
+ end
37
+
33
38
  # 持仓方向
34
39
  def position_side
35
40
  side = dig("posSide")
@@ -38,11 +43,34 @@ module OKEX
38
43
  end
39
44
  end
40
45
 
46
+ def long?
47
+ position_side == POS_LONG
48
+ end
49
+
50
+ def short?
51
+ position_side == POS_SHORT
52
+ end
53
+
54
+ # 开仓方向名称
55
+ def position_name
56
+ case position_side
57
+ when POS_SHORT
58
+ '空'
59
+ when POS_LONG
60
+ '多'
61
+ end
62
+ end
63
+
41
64
  # 未实现收益
42
65
  def upl
43
66
  dig("upl").to_f
44
67
  end
45
68
 
69
+ # 持仓张数
70
+ def pos
71
+ dig("pos").to_i
72
+ end
73
+
46
74
  private
47
75
 
48
76
  def dig(key)
@@ -0,0 +1,24 @@
1
+ module OKEX
2
+ class TradeOrder < Order
3
+
4
+ # 预估强平价
5
+ def est_liq_price
6
+ dig("liqPx").to_f
7
+ end
8
+
9
+ # 最新成交价
10
+ def last_price
11
+ dig("fillPx").to_f
12
+ end
13
+
14
+ # 未实现收益
15
+ def upl
16
+ dig("pnl").to_f
17
+ end
18
+
19
+ # 持仓张数
20
+ def pos
21
+ dig("sz").to_i
22
+ end
23
+ end
24
+ end
data/lib/okex/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OKEX
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
data/okex.gemspec CHANGED
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency "bundler", "~> 1.17"
39
39
  spec.add_development_dependency "rake", "~> 10.0"
40
40
  spec.add_development_dependency "rspec", "~> 3.0"
41
+ spec.add_development_dependency "byebug", "~> 11.1"
41
42
 
42
43
  spec.add_runtime_dependency "faraday", "~> 1.5"
43
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: okex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Zhang
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '11.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '11.1'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: faraday
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +99,7 @@ files:
85
99
  - bin/console
86
100
  - bin/setup
87
101
  - lib/okex.rb
102
+ - lib/okex/account_order.rb
88
103
  - lib/okex/api_v3.rb
89
104
  - lib/okex/api_v5.rb
90
105
  - lib/okex/client.rb
@@ -92,6 +107,7 @@ files:
92
107
  - lib/okex/coin/bitcoin.rb
93
108
  - lib/okex/host.rb
94
109
  - lib/okex/order.rb
110
+ - lib/okex/trade_order.rb
95
111
  - lib/okex/version.rb
96
112
  - okex.gemspec
97
113
  homepage: https://github.com/daqing/okex