iqfeed 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: ab00bbc36a39e1ba9ae4380e9b8350d4efe7f4a2
4
- data.tar.gz: 0b21acd28f6586eb632fa9ac4cb7d112d87a0525
3
+ metadata.gz: d9a5732711acddad58af500f795a22f517a78e4d
4
+ data.tar.gz: 625324d3a604df18134948be9ebb2c36cc1c2c9a
5
5
  SHA512:
6
- metadata.gz: 3b71dcce8162cd538433502c2960431863aab7dea2c2aa7920b487f9eacde9bc739822b2eb1d0db06d6d2cb5c865d95d81b144d620eb5303d6215f00eee45389
7
- data.tar.gz: 4f3d054e0c6d8facb36bcbad5512109ee5e2f4158d977eaf89407252d10a09631b174fefc66884472da93ae554132d9649cbc3313759ef75693f0e487ca60993
6
+ metadata.gz: 37c304f5ced067eb423feeced9dbd78c57e60fe4bb00ee3875e8524f4ad1513fe04567c5ae1194b19e37e5aacb00cece12016d81651f74acc2f0bf81461cb878
7
+ data.tar.gz: a7442421fcf84337ee33176f944f2e174e9e50d05a4296328ad68f7986d0b1c66eeb27c0ee8bcea0caf17980ba82beed59e8dba19d38a11c797d48591ad633dd
data/lib/iqfeed.rb CHANGED
@@ -1,3 +1,5 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+
1
3
  require 'iqfeed/version'
2
4
  require 'iqfeed/level1_client'
3
5
  require 'iqfeed/history_client'
@@ -122,9 +122,9 @@ module Iqfeed
122
122
  procs = []
123
123
  exception = nil
124
124
 
125
- procs[0] = Proc.new{|line| IQ::Tick.parse(line)}
126
- procs[1] = Proc.new{|line| IQ::OHLC.parse(line)}
127
- procs[2] = Proc.new{|line| IQ::DWM.parse(line)}
125
+ procs[0] = Proc.new{|line| Iqfeed::Tick.parse(line)}
126
+ procs[1] = Proc.new{|line| Iqfeed::OHLC.parse(line)}
127
+ procs[2] = Proc.new{|line| Iqfeed::DWM.parse(line)}
128
128
 
129
129
  while line = @socket.gets
130
130
  fields = line.match(/^([^,]+),(.*)/)
@@ -3,39 +3,51 @@ require 'observer'
3
3
 
4
4
  module Iqfeed
5
5
  class Level1Observer
6
- attr_accessor :symbol
6
+ attr_accessor :symbol, :bid, :ask
7
7
 
8
8
  def initialize(symbol)
9
9
  @symbol = symbol
10
10
  end
11
11
 
12
12
  def update(tick)
13
- puts tick.to_s
13
+ @bid = tick.bid if @bid.nil? && tick.type =~ /(t|b)/
14
+ @bid = tick.bid if tick.type =~ /b/
15
+ @ask = tick.ask if @ask.nil? && tick.type =~ /(t|a)/
16
+ @ask = tick.ask if tick.type =~ /a/
17
+ puts tick.to_s(@bid, @ask) if tick.sym == @symbol && tick.type =~ /t/
14
18
  end
15
19
  end
16
20
 
17
21
  class Level1Tick
18
- attr_accessor :type, :time_stamp, :last_price, :total_volume, :last_size, :bid, :ask
22
+ attr_accessor :type, :time_stamp, :last_price, :total_volume, :last_size, :bid, :ask, :sym
19
23
  def self.parse(line)
20
24
  fields = line.split(',')
21
25
  tick = Level1Tick.new
22
26
  tick.type = fields[17]
27
+ tick.sym = fields[1]
23
28
  tick.bid = fields[10]
24
29
  tick.ask = fields[11]
25
30
  tick.last_price = fields[3]
26
31
  tick.last_size = fields[7]
27
32
  tick.total_volume = fields[6]
28
33
  tick.time_stamp = fields[65]
29
- tick.type =~ /t/ ? tick : nil
34
+ tick.type =~ /(t|a|b)/ ? tick : nil
30
35
  end
31
36
 
32
- def to_s
33
- # if (@type =~ /b/)
34
- # "Bid: #{@bid_size}@#{@bid}"
35
- # elsif (@type =~ /a/)
36
- # "Ask: #{@ask_size}@#{@ask}"
37
+ def to_s(bid, ask)
37
38
  if (@type =~ /t/)
38
- "Timestamp:#{@time_stamp} LastPrice:#{@last_price} LastSize:#{@last_size} TotalVolume:#{@total_volume} Bid:#{@bid} Ask:#{@ask}"
39
+ if @last_price == @bid
40
+ operation = 'SELL'
41
+ elsif @last_price == @ask
42
+ operation = 'BUY'
43
+ elsif @last_price == bid
44
+ operation = 'SELL'
45
+ elsif @last_price == ask
46
+ operation = 'BUY'
47
+ else
48
+ operation = 'UNKNOWN'
49
+ end
50
+ "Symbol: #{@sym} TS:#{@time_stamp} Size:#{@last_size} Price:#{@last_price} Bid:#{@bid} Ask:#{@ask} #{operation}"
39
51
  # elsif (@type =~ /T/)
40
52
  # "extendedTrade"
41
53
  # elsif !@type.nil?
@@ -1,3 +1,3 @@
1
1
  module Iqfeed
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,7 +1,7 @@
1
- require '../lib/history_client'
1
+ require '../iqfeed'
2
2
 
3
- o = IQ::HistoryObserver.new
4
- c = IQ::HistoryClient.new
3
+ o = Iqfeed::HistoryObserver.new
4
+ c = Iqfeed::HistoryClient.new
5
5
  c.open
6
6
  # 2 hours of tick history
7
7
  c.get_daily_range({:symbol => '@EU#', :from => Time.now - 3600*24, :to => Time.now}, o)
@@ -1,7 +1,7 @@
1
- require '../lib/history_client'
1
+ require '../iqfeed'
2
2
 
3
- o = IQ::HistoryObserver.new
4
- c = IQ::HistoryClient.new
3
+ o = Iqfeed::HistoryObserver.new
4
+ c = Iqfeed::HistoryClient.new
5
5
  c.open
6
6
  c.get_ohlc_range({:symbol => '@EU#', :duration => 300, :from => Time.now - 200 * 3600, :to => Time.now}, o)
7
7
  c.run
@@ -0,0 +1,8 @@
1
+ require '../iqfeed'
2
+
3
+ o = Iqfeed::HistoryObserver.new
4
+ c = Iqfeed::HistoryClient.new
5
+ c.open
6
+
7
+ c.get_tick_range({:symbol => '@EU#', :from => Time.now - 10 * 3600, :to => Time.now}, o)
8
+ c.run
@@ -0,0 +1,18 @@
1
+ require '../iqfeed'
2
+
3
+ o1 = Iqfeed::Level1Observer.new("@EU#")
4
+ o2 = Iqfeed::Level1Observer.new("@BP#")
5
+ o3 = Iqfeed::Level1Observer.new("@CD#")
6
+ o4 = Iqfeed::Level1Observer.new("@AD#")
7
+ o5 = Iqfeed::Level1Observer.new("@JY#")
8
+ o6 = Iqfeed::Level1Observer.new("@SF#")
9
+ c = Iqfeed::Level1Client.new
10
+
11
+ c.open
12
+ c.add(o1)
13
+ c.add(o2)
14
+ c.add(o3)
15
+ c.add(o4)
16
+ c.add(o5)
17
+ c.add(o6)
18
+ c.run
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iqfeed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-15 00:00:00.000000000 Z
11
+ date: 2014-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -56,14 +56,11 @@ files:
56
56
  - lib/iqfeed/history_client.rb
57
57
  - lib/iqfeed/level1_client.rb
58
58
  - lib/iqfeed/version.rb
59
- - sample/fileclient.rb
60
- - sample/history_daily_range.rb
61
- - sample/history_ohlc_range.rb
62
- - sample/history_tick_range.rb
63
- - sample/level1_online.rb
64
- - sample/range_bar.rb
65
- - sample/volume_bar.rb
66
- - tools/history.rb
59
+ - lib/sample/history_daily_range.rb
60
+ - lib/sample/history_ohlc_range.rb
61
+ - lib/sample/history_tick_range.rb
62
+ - lib/sample/level1_online.rb
63
+ - lib/tools/history.rb
67
64
  homepage: ''
68
65
  licenses:
69
66
  - MIT
data/sample/fileclient.rb DELETED
@@ -1,8 +0,0 @@
1
- require '../lib/file_client'
2
-
3
- o = IQ::FileObserver.new("")
4
- c = IQ::FileClient.new
5
-
6
- c.open
7
- c.add(o)
8
- c.run
@@ -1,8 +0,0 @@
1
- require '../lib/history_client'
2
-
3
- o = IQ::HistoryObserver.new
4
- c = IQ::HistoryClient.new
5
- c.open
6
- # 2 hours of tick history
7
- c.get_tick_range({:symbol => '@EU#', :from => Time.now - 10 * 3600, :to => Time.now}, o)
8
- c.run
@@ -1,8 +0,0 @@
1
- require '../lib/level1_client'
2
-
3
- o = IQ::Level1Observer.new("@EU#")
4
- c = IQ::Level1Client.new
5
-
6
- c.open
7
- c.add(o)
8
- c.run
data/sample/range_bar.rb DELETED
@@ -1,8 +0,0 @@
1
- require '../lib/file_client'
2
- require '../lib/range_bar'
3
-
4
- o = IQ::RangeBarObserver.new(0.0010)
5
- c = IQ::FileClient.new
6
- c.open
7
- c.add(o)
8
- c.run
data/sample/volume_bar.rb DELETED
@@ -1,8 +0,0 @@
1
- require '../lib/file_client'
2
- require '../lib/volume_bar'
3
-
4
- o = IQ::VolumeBarObserver.new(10)
5
- c = IQ::FileClient.new
6
- c.open
7
- c.add(o)
8
- c.run