本文整理汇总了Python中DataManager.DataManager.trading_dates方法的典型用法代码示例。如果您正苦于以下问题:Python DataManager.trading_dates方法的具体用法?Python DataManager.trading_dates怎么用?Python DataManager.trading_dates使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataManager.DataManager
的用法示例。
在下文中一共展示了DataManager.trading_dates方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TradeManager
# 需要导入模块: from DataManager import DataManager [as 别名]
# 或者: from DataManager.DataManager import trading_dates [as 别名]
class TradeManager(object):
##
## This is the entry point for TradeManager
## TradeManager uses the IndicatorLibrary and the indicators that were passed in through the config file to
## determine if any of the indictors return true.
## It then calls the DataManager with the start and end dates, historical data period and mark out period
## to collect price information for a given symbol.
def __init__(self, config, logger):
self.config = config
self.logger = logger
self.start_date = config.get_value('PORTFOLIO','startdate')
self.end_date = config.get_value('PORTFOLIO', 'enddate')
self.name = self.config.get_value('PORTFOLIO', 'name')
self.prevent_overlaps = {} ## used to disallow same ticker+markout overlapping
## Get the list of indicators from the config file, then start IndicatorLibrary
self.list_of_user_indicators = [s.upper() for s in Util.str_to_list(config.get_value('STRATEGY', 'indicators'))]
if not self.list_of_user_indicators:
self.logger.critical("Unable to determine list of user indicators")
sys.exit(1)
self.strategy = IndicatorLibrary(self.list_of_user_indicators)
self.list_of_markout_periods = []
try:
for x in Util.str_to_list(config.get_value('STRATEGY', 'markout_periods')):
self.list_of_markout_periods.append(int(x))
except:
self.logger.critical("Non integer-type value provided in STRATEGY.markout_periods")
sys.exit(1)
max_markout_periods = max(self.list_of_markout_periods)
max_historical_periods = self.strategy.periods_required()
self.dm = DataManager(logger, self.start_date,self.end_date,max_historical_periods,max_markout_periods)
self.__trade_log_fn()
def __trade_log_fn(self):
strategy_name = self.config.get_value('STRATEGY','name')
ext = self.config.get_value('PORTFOLIO', 'trade_log_file_ext')
self.trade_log_name = ".".join([str(self.start_date),str(self.end_date),self.name,strategy_name,ext])
print self.trade_log_name
self.config.put('trade_log_file_name', self.trade_log_name)
##
## This method calls DataManager to get the future date and price for each markout period for a given symbol
##
def run(self):
with open(self.trade_log_name, 'w') as trade_log:
trade_log.write('date,ticker,mo_period,entry_price,exit_price,exit_date\n')
self.logger.info("Writing to " + self.trade_log_name)
list_of_user_tickers = [s.upper() for s in Util.str_to_list(self.config.get_value("PORTFOLIO", "tickers"))]
if not list_of_user_tickers:
self.logger.critical("Unable to determine list of user-provided tickers")
sys.exit(1)
for trade_date in self.dm.trading_dates():
for ticker in list_of_user_tickers:
if (self.strategy.calc(self.dm, ticker, trade_date)):
today_price = self.dm.get(ticker, trade_date).close
for mo_period in self.list_of_markout_periods:
future_date = self.dm.date_by_offset(trade_date, mo_period)
overlap_key = ticker + str(mo_period)
if overlap_key in self.prevent_overlaps and trade_date <= self.prevent_overlaps[overlap_key]:
continue
self.prevent_overlaps[overlap_key] = future_date
future_price = self.dm.get(ticker, future_date).close
trade_log.write("{0},{1},{2},{3},{4},{5}\n".format(trade_date,ticker,mo_period,today_price,future_price,future_date))
return True