okex 0.2.5 → 0.2.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: 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