def ready_position_set(self, symbol, investment, date='2015-01-29'): """ get filled orders from db :param symbol: str :param investment: str """ query = Q() if investment == 'underlying': query = Q(underlying__symbol=symbol) elif investment == 'future': query = Q(future__symbol=symbol) elif investment == 'forex': query = Q(forex__symbol=symbol) filled_orders = FilledOrder.objects.filter( Q(trade_summary__date=date) & query) if filled_orders.exists(): self.filled_orders = filled_orders.all() self.position_set = PositionSet() self.manager = PositionSetManager(self.position_set) else: self.skipTest( "Use 'Unittest' for testing existing db testing (Empty PositionSet).\n" ) raise ObjectDoesNotExist()
def setUp(self): TestSetUpDB.setUp(self) # set date self.date = '2015-04-28' # create underlying self.underlying = Underlying(symbol='AAPL', company='APPLE INC') # create position set self.position_set = PositionSet() self.position_set.underlying = self.underlying self.position_set.name = 'EQUITY' self.position_set.spread = 'LONG_STOCK' self.position_set.start_date = datetime.strptime( '2015-04-13', '%Y-%m-%d').date() self.position_set.stop_date = datetime.strptime( '2015-04-28', '%Y-%m-%d').date() self.position_set.save() # create position opinion self.position_opinion = self.create_opinion( date=Profiler.move_bday(self.date, 1), position_set=self.position_set, direction='BULL') # create profiler now self.profiler = Profiler(position_set=self.position_set, date=self.date)
def create_position_sets(self, date=''): """ Take a list of open orders and make a list of position sets group open filled orders by using underlying or future or forex :return: list of PositionSet """ for query in self.queries: filled_orders = self.open_orders.filter(query) # save filled order into position set and all foreign keys if filled_orders.exists(): position_set = PositionSet() position_set.manager.filled_orders = filled_orders position_set.save() position_set.manager.update_foreign_keys(date=date) self.open_sets.append(position_set) return self.open_sets