module RubyTrade::Client::ClassMethods

Public Instance Methods

buy(*args;) click to toggle source
# File lib/client.rb, line 158
def buy *args; @@child.buy(*args); end
cash() click to toggle source
# File lib/client.rb, line 160
def cash; @@child.cash; end
child=(child) click to toggle source

hook so we can call child methods

# File lib/client.rb, line 146
def child= child
  @@child = child
end
connect_to(server, args) click to toggle source
# File lib/client.rb, line 163
def connect_to server, args
  feed_port = args[:feed_port] || DEFAULT_FEED_PORT
  order_port = args[:order_port] || DEFAULT_ORDER_PORT

  if not args[:as]
    raise "Need to specify a username: connect_to \"...\", as: \"username\""
  end

  @zmq_context = EM::ZeroMQ::Context.new 1

  EM.run do
    @feed = @zmq_context.socket ZMQ::SUB

    puts "Listening to feed on #{server}:#{feed_port}"
    @feed.connect "tcp://#{server}:#{feed_port}"
    @feed.subscribe

    @feed.on :message do |part|
      begin
        self.process_message JSON.parse part.copy_out_string
      ensure
        part.close
      end
    end

    ConnectionClient.setup args, self

    puts "Connecting to order server #{server}:#{order_port}"
    EM.connect server, order_port, ConnectionClient

    Signal.trap("INT") { EM.stop }
    Signal.trap("TERM") { EM.stop }
  end
end
on_connect(*args;) click to toggle source
# File lib/client.rb, line 139
def on_connect *args; end
on_dividend(*args;) click to toggle source
# File lib/client.rb, line 143
def on_dividend *args; end
on_fill(*args;) click to toggle source
# File lib/client.rb, line 141
def on_fill *args; end
on_partial_fill(*args;) click to toggle source
# File lib/client.rb, line 142
def on_partial_fill *args; end
on_tick(*args;) click to toggle source
# File lib/client.rb, line 140
def on_tick *args; end
process_message(data) click to toggle source

Called when we receive feed data

# File lib/client.rb, line 151
def process_message data
  case data["action"]
  when "tick"
    self.on_tick data["level1"]
  end
end
sell(*args;) click to toggle source
# File lib/client.rb, line 159
def sell *args; @@child.sell(*args); end
stock() click to toggle source
# File lib/client.rb, line 161
def stock; @@child.stock; end