示例#1
0
class TestGetSpread(TestUnitSetUpPrepare):
    def test_get_spread(self):
        """
        #Test save position using data in db
        #can use production database or another database for test
        """
        try:
            statement = Statement.objects.get(date='2015-01-29')
        except ObjectDoesNotExist:
            self.skipTest("Please use 'Unittest' for testing.\n")
            raise ObjectDoesNotExist()

        trade_summary = TradeSummary.objects.filter(statement=statement).first()
        filled_order_manager = FilledOrder.objects.filter(trade_summary=trade_summary)
        underlying_symbols = filled_order_manager.values_list('underlying__symbol', flat=True).distinct()
        underlying_symbols = [symbol for symbol in underlying_symbols if symbol]  # drop none

        print underlying_symbols

        future_symbols = filled_order_manager.values_list('future__symbol', flat=True).distinct()
        future_symbols = [symbol for symbol in future_symbols if symbol]  # drop none

        forex_symbols = filled_order_manager.values_list('forex__symbol', flat=True).distinct()
        forex_symbols = [symbol for symbol in forex_symbols if symbol]  # drop none

        print 'Underlying...'
        for underlying_symbol in underlying_symbols:
            open_filled_orders = filled_order_manager.filter(
                Q(underlying__symbol=underlying_symbol) & Q(pos_effect='TO OPEN')
            )
            if open_filled_orders.exists():
                self.spread = Spread(filled_orders=open_filled_orders)

                self.spread.name = self.spread.get_name()
                print 'Underlying: %s' % self.spread.get_underlying()
                print 'Name: %s' % self.spread.name
                print 'Spread: %s' % self.spread.get_spread()
                print ''

        print '-' * 80 + '\n'

        print 'Future...'
        for future_symbol in future_symbols:
            open_filled_orders = filled_order_manager.filter(
                Q(future__symbol=future_symbol) & Q(pos_effect='TO OPEN')
            )

            if open_filled_orders.exists():
                self.spread = Spread(filled_orders=open_filled_orders)

                self.spread.name = self.spread.get_name()
                print 'Future: %s' % self.spread.get_future()
                print 'Name: %s' % self.spread.name
                print 'Spread: %s' % self.spread.get_spread()
                print ''

        print '-' * 80 + '\n'

        print 'Forex...'
        for forex_symbol in forex_symbols:
            print forex_symbol
            open_filled_orders = filled_order_manager.filter(
                Q(forex__symbol=forex_symbol) & Q(pos_effect='TO OPEN')
            )

            if open_filled_orders.exists():
                self.spread = Spread(filled_orders=open_filled_orders)

                self.spread.name = self.spread.get_name()
                print 'Forex: %s' % self.spread.get_forex()
                print 'Name: %s' % self.spread.name
                print 'Spread: %s' % self.spread.get_spread()
                print ''