Sha256: 6ec156bcf813eac50505fba295a7a278c58855a37d6055a9904a3668e390a4ba
Contents?: true
Size: 1.22 KB
Versions: 2
Compression:
Stored size: 1.22 KB
Contents
require 'ruby-trade' TradeAmount = 20_000 InitialPrice = 10.0 Distance = 2.0 MaxDistance = 4 MinTime = 30 TimeVariance = 600 class Slammer include RubyTrade::Client def self.level1; @level1; end def self.on_connect *args puts "Connected." setup_next_shot end def self.setup_next_shot time_gap = MinTime + rand(TimeVariance) puts "Firing in #{time_gap} seconds..." this = self order = nil EM.add_timer time_gap do shift = Distance + rand(MaxDistance) is_sell = rand < 0.5 amount = TradeAmount base_price = this.level1 ? this.level1["last"] : InitialPrice base_price = InitialPrice if base_price.nil? or base_price == 0.0 if is_sell price = base_price * (1.0 - shift / 100) puts "Selling #{amount} at %.2f" % price order = sell amount, at: price else price = base_price * (1.0 + shift / 100) puts "Buying #{amount} at %.2f" % price order = buy amount, at: price end EM.add_timer 0.1 do puts "cancelling" order.cancel! this.setup_next_shot end end end def self.on_tick level1 @level1 = level1 end end Slammer.connect_to "127.0.0.1", as: "Slammer", ai: true
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ruby-trade-0.3 | examples/slammer.rb |
ruby-trade-0.2 | examples/slammer.rb |