Programming performance/JasonWoof Ruby
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Language: ruby
Experience level with ruby: beginner
Time taken: 50 minutes
Notes: The code is crappy for two reasons: 1) I don't know ruby very well, 2) I was racing. I spent a bunch of time looking up how to do basic things like read a line. A skilled ruby programmer could probably do this in 15 minutes.
#!/usr/bin/ruby $verbose = false $bank = 10000.00 $stocks = [] file = File.new('gspc.txt') file.readline data = file.readlines $last_close = data.pop.split(/[ \n]/)[6].to_f data = data.reverse data.each do |line| words = line.split(/[ \n]/) $close = words[6].to_f if $verbose print "bank: #{$bank.to_s}\n" print "close: #{$close.to_s}\n"; print 'change: ' + ((($close - $last_close) / $last_close) * 100.0).to_s + "%\n" end if ($close - $last_close) / $last_close < -0.03 $stocks.push([$close, ($bank / 10) / $close]) if $verbose print 'bought ' + (($bank / 10) / $close).to_s + " shares at #{$close}\n" print 'bank: ' + $bank.to_s + "\n" end $bank *= 0.9; end thresh = $close / 1.06 new_stocks = []; $stocks.each do |row| held_close = row[0] held_count = row[1] if(held_close <= thresh) $bank += held_count * $close; if $verbose print "sold #{held_count} shares that were bought at #{held_close.to_s}\n" print "bank: #{$bank}\n" end else new_stocks.push [held_close, held_count] end end $stocks = new_stocks $last_close = $close end $stocks.each do |row| held_close = row[0] held_count = row[1] $bank += held_count * $close; end print 'bank: ' + $bank.to_s + "\n" exit;