iqfeed 0.0.1 → 0.0.2

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