MCPcopy Create free account
hub / github.com/dabeaz-course/practical-python / MarketSimulator

Class MarketSimulator

Work/Data/stocksim.py:123–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

121 round(self.low,2),self.volume]
122
123class MarketSimulator(object):
124 def __init__(self):
125 self.stocks = { }
126 self.prices = { }
127 self.time = 0
128 self.observers = []
129 def register(self,observer):
130 self.observers.append(observer)
131
132 def publish(self,record):
133 for obj in self.observers:
134 obj.update(record)
135 def add_history(self,filename):
136 hist = read_history(filename)
137 for record in hist:
138 if record[0] not in self.stocks:
139 self.stocks[record[0]] = StockTrack(record[0])
140 self.stocks[record[0]].add_data(record)
141
142 def reset(self,time):
143 self.time = time
144 for s in self.stocks.values():
145 s.reset(time)
146
147 # Run forever. Dt is in seconds
148 def run(self,dt):
149 for s in self.stocks:
150 self.prices[s] = self.stocks[s].price
151 self.publish(self.stocks[s].make_record())
152 while self.time < 1000:
153 for s in self.stocks:
154 self.stocks[s].incr(dt/60.0) # Increment is in minutes
155 if self.stocks[s].price != self.prices[s]:
156 self.prices[s] = self.stocks[s].price
157 self.publish(self.stocks[s].make_record())
158 time.sleep(dt)
159 self.time += (dt/60.0)
160
161
162class BasicPrinter(object):

Callers 1

stocksim.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected