def testLiveBrokerDonchianAlgorithm2014WithMemoryDataProvider(self):
        feed = DynamicFeed(self.db, self.codes, maxLen=self.maxLen)
        days = feed.getAllDays()

        dataProvider = MemoryDataProvider()
        dataProvider.persistCash(cash=self.initialCash)
        for day in days:
            fromDate = day - timedelta(days=self.maxLen)
            toDate = day + timedelta(days=5)
            feed = DynamicFeed(self.db,
                               self.codes,
                               fromDateTime=fromDate,
                               toDateTime=toDate,
                               maxLen=self.maxLen)
            feed.positionFeed(day)

            broker = PytradeBroker(feed,
                                   cash=dataProvider.loadCash(),
                                   orders=dataProvider.loadOrders(),
                                   shares=dataProvider.loadShares())
            self.runDonchianAlgorithm(broker, feed, self.donchianEntry,
                                      self.donchianExit, self.riskFactor)

            dataProvider.persistCash(cash=broker.getAvailableCash())
            dataProvider.persistShares(shares=broker.getAllShares())
            dataProvider.persistOrders(orders=broker.getAllActiveOrders())

        self.assertEqual(broker.getEquity(), 36922.16)
    def testLiveBrokerDonchianAlgorithm2014WithoutDataProvider(self):
        feed = DynamicFeed(self.db, self.codes, maxLen=self.maxLen)
        days = feed.getAllDays()

        cash = self.initialCash
        shares = {}
        orders = {}
        for day in days:
            fromDate = day - timedelta(days=self.maxLen)
            toDate = day + timedelta(days=5)
            feed = DynamicFeed(self.db,
                               self.codes,
                               fromDateTime=fromDate,
                               toDateTime=toDate,
                               maxLen=self.maxLen)
            feed.positionFeed(day)

            broker = PytradeBroker(feed,
                                   cash=cash,
                                   orders=orders,
                                   shares=shares)
            self.runDonchianAlgorithm(broker, feed, self.donchianEntry,
                                      self.donchianExit, self.riskFactor)

            cash = broker.getAvailableCash()
            shares = broker.getAllShares()
            orders = broker.getAllActiveOrders()

        self.assertEqual(broker.getEquity(), 36922.16)
    def testLiveBrokerDonchianAlgorithmWithSpecificDatesAndSQLiteDataProvider(self):
        username = "******"
        utc = pytz.utc
        days = [
            utc.localize(datetime.datetime(2014, 2, 7)),
            utc.localize(datetime.datetime(2014, 2, 11)),
            utc.localize(datetime.datetime(2014, 9, 18)),
            utc.localize(datetime.datetime(2014, 10, 23)),
            utc.localize(datetime.datetime(2014, 10, 28)),
            utc.localize(datetime.datetime(2014, 12, 31))]

        dataProvider = SQLiteDataProvider(self.db)
        dataProvider.createSchema()
        dataProvider.initializeUser(username, self.initialCash)

        for day in days:
            fromDate = day - timedelta(days=self.maxLen)
            toDate = day + timedelta(days=5)
            feed = DynamicFeed(self.db, self.codes, fromDateTime=fromDate, toDateTime=toDate, maxLen=self.maxLen)
            feed.positionFeed(day)

            broker = PytradeBroker(feed, cash=dataProvider.loadCash(username), orders=dataProvider.loadOrders(username), shares=dataProvider.loadShares(username))
            self.runDonchianAlgorithm(broker, feed, self.donchianEntry, self.donchianExit, self.riskFactor)

            dataProvider.persistCash(username, broker.getAvailableCash())
            dataProvider.persistShares(username, broker.getAllShares())
            dataProvider.persistOrders(username, broker.getAllActiveOrders())

        self.assertEqual(broker.getEquity(), 36922.16)
Ejemplo n.º 4
0
    def initializeBroker(self, username):
        assert self.__feed is not None
        assert self.__dataProvider is not None
        assert username is not None

        self.__broker = PytradeBroker(
            feed=self.__feed,
            cash=self.__dataProvider.loadCash(username),
            orders=self.__dataProvider.loadOrders(username),
            shares=self.__dataProvider.loadShares(username))