Class: MyTradeWizard::StockTradingSystem

Inherits:
TradingSystem show all
Includes:
WatchLists
Defined in:
lib/mytradewizard/stock_trading_system.rb

Constant Summary

Constants included from WatchLists

WatchLists::DOW30, WatchLists::NAZ100, WatchLists::SP500

Constants included from DateTime

DateTime::HR

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from TradingSystem

#account=, #fetch_positions, #place_market_order

Methods included from TechnicalIndicator

#SMA

Methods included from DateTime

#friday, #wait_until

Constructor Details

#initializeStockTradingSystem

Returns a new instance of StockTradingSystem.



11
12
13
14
15
16
# File 'lib/mytradewizard/stock_trading_system.rb', line 11

def initialize
  super
  @watch_list = MyTradeWizard::WatchList.new
  @position_size = 5000
  @data = nil
end

Instance Attribute Details

#position_size=(value) ⇒ Object (writeonly)

Sets the attribute position_size

Parameters:

  • value

    the value to set the attribute position_size to.



9
10
11
# File 'lib/mytradewizard/stock_trading_system.rb', line 9

def position_size=(value)
  @position_size = value
end

#watch_listObject

Returns the value of attribute watch_list.



8
9
10
# File 'lib/mytradewizard/stock_trading_system.rb', line 8

def watch_list
  @watch_list
end

Instance Method Details

#buyObject



38
39
40
# File 'lib/mytradewizard/stock_trading_system.rb', line 38

def buy
  place_market_order "BUY", @position_size/close(t).floor, @stock.contract
end

#close(day) ⇒ Object



34
35
36
# File 'lib/mytradewizard/stock_trading_system.rb', line 34

def close(day)
  @data.day(day).close
end

#days(daily_range) ⇒ Object



30
31
32
# File 'lib/mytradewizard/stock_trading_system.rb', line 30

def days(daily_range)
  @data.days(daily_range)
end

#preload(days, stock) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/mytradewizard/stock_trading_system.rb', line 18

def preload(days, stock)
  @stock = stock
  @data = MyTradeWizard::Yahoo.OHLC(stock.symbol, days)
  if @data.length < days
    puts "ERROR: Only #{@data.length}/#{days} days of data for #{stock.symbol}"
  end
end

#sell(position) ⇒ Object



42
43
44
# File 'lib/mytradewizard/stock_trading_system.rb', line 42

def sell(position)
  place_market_order "SELL", position.size, @stock.contract
end

#tObject



26
27
28
# File 'lib/mytradewizard/stock_trading_system.rb', line 26

def t
  @data.today
end