Modified get_environment to provide multiple fields.

This commit is contained in:
fawce
2014-12-07 08:26:13 -05:00
parent eaea8e5317
commit 0411627169
3 changed files with 38 additions and 2 deletions
+22
View File
@@ -136,6 +136,28 @@ class TestMiscellaneousAPI(TestCase):
concurrent=True,
)
def test_get_environment(self):
expected_env = {
'arena': 'backtest',
'data_frequency': 'minute',
'start': pd.Timestamp('2006-01-03 14:31:00+0000', tz='UTC'),
'end': pd.Timestamp('2006-01-04 21:00:00+0000', tz='UTC'),
'capital_base': 100000.0,
'platform': 'zipline'
}
def initialize(algo):
self.assertEqual('zipline', algo.get_environment())
self.assertEqual(expected_env, algo.get_environment('*'))
def handle_data(algo, data):
pass
algo = TradingAlgorithm(initialize=initialize,
handle_data=handle_data,
sim_params=self.sim_params)
algo.run(self.source)
def test_get_open_orders(self):
def initialize(algo):
+13 -2
View File
@@ -545,8 +545,19 @@ class TradingAlgorithm(object):
self.add_history(bars, freq, 'volume')
@api_method
def get_environment(self):
return self._environment
def get_environment(self, field='platform'):
env = {
'arena': self.sim_params.arena,
'data_frequency': self.sim_params.data_frequency,
'start': self.sim_params.first_open,
'end': self.sim_params.last_close,
'capital_base': self.sim_params.capital_base,
'platform': self._environment
}
if field == '*':
return env
else:
return env[field]
def add_event(self, rule=None, callback=None):
"""
+3
View File
@@ -396,6 +396,9 @@ class SimulationParameters(object):
self.data_frequency = data_frequency
self.sids = sids
# copied to algorithm's environment for runtime access
self.arena = 'backtest'
self._update_internal()
def _update_internal(self):