Example #1
0
    def testResampleNinjaTraderDay(self):
        # Resample.
        feed = ninjatraderfeed.Feed(ninjatraderfeed.Frequency.MINUTE)
        feed.addBarsFromCSV("spy", common.get_data_file_path("nt-spy-minute-2011.csv"))
        resampledBarDS = resampled.ResampledBarDataSeries(feed["spy"], barfeed.Frequency.DAY)
        resampledFile = os.path.join(common.get_temp_path(), "day-nt-spy-minute-2011.csv")
        resample.resample_to_csv(feed, barfeed.Frequency.DAY, resampledFile)
        resampledBarDS.pushLast()  # Need to manually push the last stot since time didn't change.

        # Load the resampled file.
        feed = csvfeed.GenericBarFeed(barfeed.Frequency.DAY)
        feed.addBarsFromCSV("spy", resampledFile, marketsession.USEquities.getTimezone())
        feed.loadAll()

        self.assertEqual(len(feed["spy"]), 25)
        self.assertEqual(
            feed["spy"][0].getDateTime(),
            dt.localize(datetime.datetime(2011, 1, 3), marketsession.USEquities.getTimezone()),
        )
        self.assertEqual(
            feed["spy"][-1].getDateTime(),
            dt.localize(datetime.datetime(2011, 2, 1), marketsession.USEquities.getTimezone()),
        )

        self.assertEqual(len(resampledBarDS), len(feed["spy"]))
        self.assertEqual(resampledBarDS[0].getDateTime(), dt.as_utc(datetime.datetime(2011, 1, 3)))
        self.assertEqual(resampledBarDS[-1].getDateTime(), dt.as_utc(datetime.datetime(2011, 2, 1)))
    def testResampleNinjaTraderHour(self):
        # Resample.
        feed = ninjatraderfeed.Feed(ninjatraderfeed.Frequency.MINUTE)
        feed.addBarsFromCSV("spy", common.get_data_file_path("nt-spy-minute-2011.csv"))
        resampledBarDS = resampled.ResampledBarDataSeries(feed["spy"], barfeed.Frequency.HOUR)
        resampledFile = os.path.join(common.get_temp_path(), "hour-nt-spy-minute-2011.csv")
        resample.resample_to_csv(feed, barfeed.Frequency.HOUR, resampledFile)
        resampledBarDS.pushLast()  # Need to manually push the last stot since time didn't change.

        # Load the resampled file.
        feed = csvfeed.GenericBarFeed(barfeed.Frequency.HOUR, marketsession.USEquities.getTimezone())
        feed.addBarsFromCSV("spy", resampledFile)
        feed.loadAll()

        self.assertEqual(len(feed["spy"]), 340)
        self.assertEqual(feed["spy"][0].getDateTime(), dt.localize(datetime.datetime(2011, 1, 3, 9), marketsession.USEquities.getTimezone()))
        self.assertEqual(feed["spy"][-1].getDateTime(), dt.localize(datetime.datetime(2011, 2, 1, 1), marketsession.USEquities.getTimezone()))
        self.assertEqual(feed["spy"][0].getOpen(), 126.35)
        self.assertEqual(feed["spy"][0].getHigh(), 126.45)
        self.assertEqual(feed["spy"][0].getLow(), 126.3)
        self.assertEqual(feed["spy"][0].getClose(), 126.4)
        self.assertEqual(feed["spy"][0].getVolume(), 3397.0)
        self.assertEqual(feed["spy"][0].getAdjClose(), None)

        self.assertEqual(len(resampledBarDS), len(feed["spy"]))
        self.assertEqual(resampledBarDS[0].getDateTime(), dt.as_utc(datetime.datetime(2011, 1, 3, 9)))
        self.assertEqual(resampledBarDS[-1].getDateTime(), dt.as_utc(datetime.datetime(2011, 2, 1, 1)))
Example #3
0
    def __init__(self, dateTime):
        self.__begin = datetime.datetime(dateTime.year, dateTime.month, 1)

        # Calculate the ending date.
        if dateTime.month == 12:
            self.__end = datetime.datetime(dateTime.year + 1, 1, 1)
        else:
            self.__end = datetime.datetime(dateTime.year, dateTime.month + 1, 1)

        if not dt.datetime_is_naive(dateTime):
            self.__begin = dt.localize(self.__begin, dateTime.tzinfo)
            self.__end = dt.localize(self.__end, dateTime.tzinfo)
Example #4
0
    def __testHourRangeImpl(self, timezone=None):
        freq = bar.Frequency.HOUR

        begin = datetime.datetime(2011, 1, 1, 16)
        end = datetime.datetime(2011, 1, 1, 17)
        if timezone is not None:
            begin = dt.localize(begin, timezone)
            end = dt.localize(end, timezone)

        r = resamplebase.build_range(begin + datetime.timedelta(seconds=120), freq)
        self.assertEqual(r.getBeginning(), begin)
        for i in range(freq):
            self.assertTrue(r.belongs(begin + datetime.timedelta(seconds=i)))
        self.assertFalse(r.belongs(begin + datetime.timedelta(seconds=freq+1)))
        self.assertEqual(r.getEnding(), end)
Example #5
0
    def getBars(self, instrument, frequency, timezone=None, fromDateTime=None, toDateTime=None):
        instrument = normalize_instrument(instrument)
        sql = "select bar.timestamp, bar.open, bar.high, bar.low, bar.close, bar.volume, bar.adj_close, bar.frequency" \
            " from bar join instrument on (bar.instrument_id = instrument.instrument_id)" \
            " where instrument.name = ? and bar.frequency = ?"
        args = [instrument, frequency]

        if fromDateTime is not None:
            sql += " and bar.timestamp >= ?"
            args.append(dt.datetime_to_timestamp(fromDateTime))
        if toDateTime is not None:
            sql += " and bar.timestamp <= ?"
            args.append(dt.datetime_to_timestamp(toDateTime))

        sql += " order by bar.timestamp asc"
        cursor = self.__connection.cursor()
        cursor.execute(sql, args)
        ret = []
        for row in cursor:
            dateTime = dt.timestamp_to_datetime(row[0])
            if timezone:
                dateTime = dt.localize(dateTime, timezone)
            ret.append(bar.BasicBar(dateTime, row[1], row[2], row[3], row[4], row[5], row[6], row[7]))
        cursor.close()
        return ret
Example #6
0
 def __parseDate(self, dateString):
     datetime_format = "%Y-%m-%d %H:%M:%S"
     ret = datetime.datetime.strptime(dateString, datetime_format)
     # Localize the datetime if a timezone was given.
     if self.__timezone:
         ret = dt.localize(ret, self.__timezone)
     return ret
Example #7
0
    def testUnrealized(self):
        barFeed = self.loadIntradayBarFeed()
        strat = TestStrategy(barFeed, 1000)
        strat.setExitOnSessionClose(False)

        # 3/Jan/2011 205300 - Enter long
        # 3/Jan/2011 205400 - entry gets filled at 127.21
        # 3/Jan/2011 210000 - last bar

        strat.addPosEntry(
            dt.localize(datetime.datetime(2011, 1, 3, 20, 53), pytz.utc),
            strat.enterShort,
            StrategyTestCase.TestInstrument,
            1,
            True,
        )
        strat.run()
        self.assertTrue(strat.getEnterOkEvents() == 1)
        self.assertTrue(strat.getExitOkEvents() == 0)
        self.assertTrue(strat.getEnterCanceledEvents() == 0)
        self.assertTrue(strat.getExitCanceledEvents() == 0)

        self.assertEqual(strat.getActivePosition().getUnrealizedReturn(127.21), 0)
        self.assertEqual(strat.getActivePosition().getUnrealizedNetProfit(127.21), 0)

        self.assertEqual(round(strat.getActivePosition().getUnrealizedReturn(127.21 / 2), 4), 0.5)
        self.assertEqual(round(strat.getActivePosition().getUnrealizedNetProfit(127.21 / 2), 4), 127.21 / 2)

        self.assertEqual(strat.getActivePosition().getUnrealizedReturn(127.21 * 2), -1)
        self.assertEqual(strat.getActivePosition().getUnrealizedNetProfit(127.21 * 2), -127.21)
    def testFeedWithQuandl(self):
        class RowFilter(csvfeed.RowFilter):
            def includeRow(self, dateTime, values):
                return dateTime.year == 2013

        feed = csvfeed.Feed("Date", "%Y-%m-%d", maxLen=40, timezone=marketsession.USEquities.timezone)
        feed.setRowFilter(RowFilter())
        feed.setTimeDelta(datetime.timedelta(hours=23, minutes=59, seconds=59))
        feed.addValuesFromCSV(common.get_data_file_path("quandl_gold_2.csv"))

        for col in ["USD", "GBP", "EUR"]:
            self.assertEqual(len(feed[col]), 0)

        dispatcher = observer.Dispatcher()
        dispatcher.addSubject(feed)
        dispatcher.run()

        for col in ["USD", "GBP", "EUR"]:
            self.assertEqual(len(feed[col]), 39)

        self.assertEqual(feed["USD"][-1], 1333.0)
        self.assertEqual(feed["GBP"][-1], 831.203)
        self.assertEqual(feed["EUR"][-1], 986.75)
        self.assertFalse(dt.datetime_is_naive(feed["USD"].getDateTimes()[-1]))
        self.assertEqual(feed["USD"].getDateTimes()[-1], dt.localize(datetime.datetime(2013, 9, 29, 23, 59, 59), marketsession.USEquities.timezone))
Example #9
0
def get_slot_datetime(dateTime, frequency):
	ts = dt.datetime_to_timestamp(dateTime)
	slot = ts / frequency
	slotTs = (slot + 1) * frequency - 1
	ret = dt.timestamp_to_datetime(slotTs, False)
	if not dt.datetime_is_naive(dateTime):
		ret = dt.localize(ret, dateTime.tzinfo)
	return ret
Example #10
0
	def __parseDate(self, dateString):
		ret = datetime.datetime.strptime(dateString, "%Y-%m-%d")
		# Time on Yahoo! Finance CSV files is empty. If told to set one, do it.
		if self.__dailyBarTime != None:
			ret = datetime.datetime.combine(ret, self.__dailyBarTime)
		# Localize the datetime if a timezone was given.
		if self.__timezone:
			ret = dt.localize(ret, self.__timezone)
		return ret
Example #11
0
    def _parseDate(self, dateString):
        ret = datetime.datetime.strptime(dateString, self.__dateTimeFormat)

        if self.__dailyBarTime is not None:
            ret = datetime.datetime.combine(ret, self.__dailyBarTime)
        # Localize the datetime if a timezone was given.
        if self.__timezone:
            ret = dt.localize(ret, self.__timezone)
        return ret
Example #12
0
 def __parseDate(self, dateString):
     dt_, d_ = parse_date(dateString)
     # Time on Yahoo! Finance CSV files is empty. If told to set one, do it.
     if self.__dailyBarTime != None:
         dt_ = datetime.datetime.combine(dt_, self.__dailyBarTime)
     # Localize the datetime if a timezone was given.
     if self.__timezone:
         dt_ = dt.localize(dt_, self.__timezone)
     return dt_, d_
Example #13
0
 def __parseDate(self, dateString):
     ret = parse_date(dateString,self.__frequency)
     # Time on Yahoo! Finance CSV files is empty. If told to set one, do it.
     if self.__frequency == bar.Frequency.DAY and self.__dailyBarTime is not None:
         ret = datetime.datetime.combine(ret, self.__dailyBarTime)
     # Localize the datetime if a timezone was given.
     if self.__timezone:
         ret = dt.localize(ret, self.__timezone)
     return ret
Example #14
0
 def __parseDate(self, dateString):
     ret = parse_date(dateString)
     # Time on Google Finance CSV files is empty. If told to set one, do it.
     if self.__dailyBarTime is not None:
         ret = datetime.datetime.combine(ret, self.__dailyBarTime)
     # Localize the datetime if a timezone was given.
     if self.__timezone:
         ret = dt.localize(ret, self.__timezone)
     return ret
Example #15
0
 def __parseDate(self, dateString):
     ret = self.parse_date(dateString)
     # Time on Yahoo! Finance CSV files is empty. If told to set one, do it.
     #mid 下面这个过程将ret带h:m:s的时间弄成无h:m:s,使只能测试日线
     if(False):
         if self.__dailyBarTime is not None:
             ret = datetime.datetime.combine(ret, self.__dailyBarTime)
     
     # Localize the datetime if a timezone was given.
     if self.__timezone:
         ret = dt.localize(ret, self.__timezone)
     return ret
Example #16
0
    def __init__(self, dateTime, frequency):
        assert isinstance(frequency, int)
        assert frequency > 1
        assert frequency < bar.Frequency.DAY

        ts = int(dt.datetime_to_timestamp(dateTime))
        slot = int(ts / frequency)
        slotTs = slot * frequency
        self.__begin = dt.timestamp_to_datetime(slotTs, not dt.datetime_is_naive(dateTime))
        if not dt.datetime_is_naive(dateTime):
            self.__begin = dt.localize(self.__begin, dateTime.tzinfo)
        self.__end = self.__begin + datetime.timedelta(seconds=frequency)
Example #17
0
    def parseBar(self, csvRowDict):
        tid = int(csvRowDict["id"])
        price = float(csvRowDict["price"])
        amount = float(csvRowDict["amount"])
        tradeType = csvRowDict["type"]

        dateTime = base.tid_to_datetime(tid)
        # Localize the datetime if a timezone was given.
        if self.__timezone:
            dateTime = dt.localize(dateTime, self.__timezone)

        return TradeBar(dateTime, price, amount, tradeType)
Example #18
0
 def parseRow(self, csvRowDict):
     dateTime = datetime.datetime.strptime(csvRowDict[self.__dateTimeColumn], self.__dateTimeFormat)
     # Localize the datetime if a timezone was given.
     if self.__timezone is not None:
         if self.__timeDelta is not None:
             dateTime += self.__timeDelta
         dateTime = dt.localize(dateTime, self.__timezone)
     # Convert the values
     values = {}
     for key, value in csvRowDict.items():
         if key != self.__dateTimeColumn:
             values[key] = self.__converter(key, value)
     return (dateTime, values)
Example #19
0
    def parseBar(self, csvRowDict):
        unixTime = int(csvRowDict["unixtime"])
        price = float(csvRowDict["price"])
        amount = float(csvRowDict["amount"])

        dateTime = dt.timestamp_to_datetime(unixTime)
        dateTime = self.__unixTimeFix.fixDateTime(dateTime)

        # Localize the datetime if a timezone was given.
        if self.__timezone:
            dateTime = dt.localize(dateTime, self.__timezone)

        return TradeBar(dateTime, price, amount)
Example #20
0
 def includeBar(self, bar_):
     ret = DateRangeFilter.includeBar(self, bar_)
     if ret and (bar_.getFrequency() == bar.Frequency.MINUTE):
         # Check day of week
         barDay = bar_.getDateTime().weekday()
         if barDay > 4:
             return False
         # Check time
         barTime = dt.localize(bar_.getDateTime(), CHINAEquitiesRTH.timezone).time()
         if barTime < self.__fromTime:
             return False
         if barTime > self.__toTime:
             return False
     return ret
Example #21
0
	def includeBar(self, bar_):
		ret = DateRangeFilter.includeBar(self, bar_)
		if ret:
			# Check day of week
			barDay = bar_.getDateTime().weekday()
			if barDay > 4:
				return False

			# Check time
			barTime = dt.localize(bar_.getDateTime(), USEquitiesRTH.timezone).time()
			if barTime < self.__fromTime:
				return False
			if barTime > self.__toTime:
				return False
		return ret
Example #22
0
	def testIntradayExitOnClose_BuyOnLastBar(self):
		barFeed = self.loadIntradayBarFeed()
		strat = TestStrategy(barFeed, 1000)
		strat.setExitOnSessionClose(True)

		# 3/Jan/2011 20:59:00 - Enter long
		# 3/Jan/2011 21:00:00 - Entry gets canceled.

		strat.addPosEntry(dt.localize(datetime.datetime(2011, 1, 3, 20, 59), pytz.utc), strat.enterLong, StrategyTestCase.TestInstrument, 1, True)
		strat.run()

		self.assertTrue(strat.getEnterOkEvents() == 0)
		self.assertTrue(strat.getExitOkEvents() == 0)
		self.assertTrue(strat.getEnterCanceledEvents() == 1)
		self.assertTrue(strat.getExitCanceledEvents() == 0)
		self.assertTrue(round(strat.getBroker().getCash(), 2) == 1000)
Example #23
0
    def testIntradayExitOnClose_BuyOnPenultimateBar(self):
        barFeed = self.loadIntradayBarFeed()
        strat = DummyStrategy(barFeed, 1000)
        strat.setExitOnSessionClose(True)

        # 3/Jan/2011 20:58:00 - Enter long
        # 3/Jan/2011 20:59:00 - entry gets filled
        # 3/Jan/2011 21:00:00 - exit gets filled.

        strat.addPosEntry(dt.localize(datetime.datetime(2011, 1, 3, 20, 58), pytz.utc), strat.enterLong, StrategyTestCase.TestInstrument, 1, True)
        strat.run()

        assert strat.getEnterOkEvents() == 1
        assert strat.getExitOkEvents() == 1
        assert strat.getEnterCanceledEvents() == 0
        assert strat.getExitCanceledEvents() == 0
        assert round(strat.getBroker().getCash(), 2) == round(1000 + 127.05 - 127.07, 2)
Example #24
0
    def __parseDateTime(self, dateTime):
        ret = None
        if self.__frequency == pyalgotrade.bar.Frequency.MINUTE:
            ret = parse_datetime(dateTime)
        elif self.__frequency == pyalgotrade.bar.Frequency.DAY:
            ret = datetime.datetime.strptime(dateTime, "%Y%m%d")
            # Time on CSV files is empty. If told to set one, do it.
            if self.__dailyBarTime is not None:
                ret = datetime.datetime.combine(ret, self.__dailyBarTime)
        else:
            assert(False)

        # According to NinjaTrader documentation the exported data will be in UTC.
        ret = pytz.utc.localize(ret)

        # Localize bars if a market session was set.
        if self.__timezone:
            ret = dt.localize(ret, self.__timezone)
        return ret
Example #25
0
    def testUnrealized(self):
        strat = self.createStrategy(True)

        # 3/Jan/2011 205300 - Enter long
        # 3/Jan/2011 205400 - entry gets filled at 127.21
        # 3/Jan/2011 210000 - last bar

        strat.addPosEntry(dt.localize(datetime.datetime(2011, 1, 3, 20, 53), pytz.utc), strat.enterShort, BaseTestCase.TestInstrument, 1, True)
        strat.run()
        self.assertEqual(strat.enterOkCalls, 1)
        self.assertEqual(strat.exitOkCalls, 0)
        self.assertEqual(strat.enterCanceledCalls, 0)
        self.assertTrue(strat.exitCanceledCalls == 0)

        entryPrice = 127.21
        lastPrice = strat.getFeed().getCurrentBars()[BaseTestCase.TestInstrument].getClose()

        self.assertEqual(strat.getActivePosition().getUnrealizedReturn(), (entryPrice - lastPrice) / entryPrice)
        self.assertEqual(strat.getActivePosition().getReturn(), (entryPrice - lastPrice) / entryPrice)
        self.assertEqual(strat.getActivePosition().getUnrealizedNetProfit(), entryPrice - lastPrice)
        self.assertEqual(strat.getActivePosition().getPnL(), entryPrice - lastPrice)
 def testLocalizeAndFilter(self):
     timezone = marketsession.USEquities.getTimezone()
     # The prices come from NinjaTrader interface when set to use 'US Equities RTH' session template.
     prices = {
         dt.localize(datetime.datetime(2011, 3, 9, 9, 31), timezone): 132.35,
         dt.localize(datetime.datetime(2011, 3, 9, 16), timezone): 132.39,
         dt.localize(datetime.datetime(2011, 3, 10, 9, 31), timezone): 130.81,
         dt.localize(datetime.datetime(2011, 3, 10, 16), timezone): 129.92,
         dt.localize(datetime.datetime(2011, 3, 11, 9, 31), timezone): 129.72,
         dt.localize(datetime.datetime(2011, 3, 11, 16), timezone): 130.84,
     }
     barFeed = ninjatraderfeed.Feed(ninjatraderfeed.Frequency.MINUTE, timezone)
     barFeed.addBarsFromCSV("spy", common.get_data_file_path("nt-spy-minute-2011-03.csv"))
     for dateTime, bars in barFeed:
         price = prices.get(bars.getDateTime(), None)
         if price is not None:
             self.assertTrue(price == bars.getBar("spy").getClose())
Example #27
0
    def __build_bar(self,barMsg, identifier,frequency):
        # "StartDate": "3/19/2014"
        # "StartTime": "9:55:00 AM"
        # "EndDate": "3/19/2014"
        # "EndTime": "10:00:00 AM"
        # "UTCOffset": 0
        # "Open": 31.71
        # "High": 31.71
        # "Low": 31.68
        # "Close": 31.69
        # "Volume": 2966
        # "Trades": 19
        # "TWAP": 31.6929
        # "VWAP": 31.693

        #Note date/time is local time not market time
        #Also for some weird reason IB is sending bars with finished in the date so why not just ignore

        ts = 0

        try:
            (offset, tz) = self.__marketCloseTime(self.__marketOptions['currency'])
            if len(barMsg.date) == 8:   #it's not a unix timestamp it's something like 20150812 (YYYYMMDD) which means this was a daily bar
                date = datetime.datetime.strptime(barMsg.date,'%Y%m%d')

                
                date = date + offset
                date = tz.localize(date)
                ts = int((date - datetime.datetime(1970,1,1,tzinfo=pytz.utc)).total_seconds()) #probably going to have timezone issues

            else:
                ts = int(barMsg.date)
            startDateTime = dt.localize(datetime.datetime.fromtimestamp(ts,tz),tz)
            self.__currentBarStamp = ts
            return bar.BasicBar(startDateTime, float(barMsg.open), float(barMsg.high), float(barMsg.low), float(barMsg.close), int(barMsg.volume), None, frequency)
        except:
            return None
Example #28
0
def us_equities_datetime(*params):
	ret = datetime.datetime(*params)
	ret = dt.localize(ret, marketsession.USEquities.getTimezone())
	return ret
Example #29
0
    def __build_bar(self, barMsg, identifier, frequency, currency):
        # "StartDate": "3/19/2014"
        # "StartTime": "9:55:00 AM"
        # "EndDate": "3/19/2014"
        # "EndTime": "10:00:00 AM"
        # "UTCOffset": 0
        # "Open": 31.71
        # "High": 31.71
        # "Low": 31.68
        # "Close": 31.69
        # "Volume": 2966
        # "Trades": 19
        # "TWAP": 31.6929
        # "VWAP": 31.693

        #Note date/time is local time not market time
        #Also for some weird reason IB is sending bars with finished in the date so why not just ignore
        if self.__debug:
            now = dt.datetime.now().strftime('%Y%m%d %H:%M:%S')
            print(
                '%s[LiveFeed __build_bar] **********************************' %
                (now))
            print('%s[LiveFeed __build_bar] starting try catch sentence' %
                  (now))
        ts = 0

        try:
            (offset, tz) = self.__marketCloseTime(currency)
            if self.__debug:
                print('%s[LiveFeed __build_bar] Offset: %s and tz: %s ' %
                      (now, offset, tz))

            if len(
                    barMsg.date
            ) == 8:  #it's not a unix timestamp it's something like 20150812 (YYYYMMDD) which means this was a daily bar
                if self.__debug:
                    print(
                        '%s[LiveFeed __build_bar] msg.date==8 it is not a unix timestamp it is something like 20150812 (YYYYMMDD) which means this was a daily bar'
                        % (now, ))

                date = datetime.datetime.strptime(barMsg.date, '%Y%m%d')
                if self.__debug:
                    print('%s[LiveFeed __build_bar] date:  %s ' % (now, date))

                date = date + offset
                if self.__debug:
                    print('%s[LiveFeed __build_bar] date+offset: %s  ' %
                          (now, date))

                date = tz.localize(date)
                if self.__debug:
                    print(
                        '%s[LiveFeed __build_bar] date+offset+localize: %s  ' %
                        (now, date))

                ts = int(
                    (date - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).
                    total_seconds())  #probably going to have timezone issues
                if self.__debug:
                    print('%s[LiveFeed __build_bar]timestamp date: %s ' %
                          (now, ts))

            else:
                if self.__debug:
                    print('%s[LiveFeed __build_bar] msg.date!=8' % (now, ))

                ts = int(barMsg.date)
                if self.__debug:
                    print('%s[LiveFeed __build_bar] timestamp date: %s ' %
                          (now, ts))

            startDateTime = localize(datetime.datetime.fromtimestamp(ts, tz),
                                     tz)
            if self.__debug:
                print('%s[LiveFeed __build_bar] strtDateTime: %s' %
                      (now, startDateTime))

            self.__currentBarStamp = ts
            if self.__debug:
                print(
                    '%s[LiveFeed __build_bar] time: %s, Open: %d ,High: %d, Low: %d, Close: %d, Volume: %d, frequency: %s'
                    % (now, startDateTime, float(
                        barMsg.open), float(barMsg.high), float(barMsg.low),
                       float(barMsg.close), int(barMsg.volume), frequency))

            return bar.BasicBar(startDateTime, float(barMsg.open),
                                float(barMsg.high), float(barMsg.low),
                                float(barMsg.close), int(barMsg.volume), None,
                                frequency)
        except Exception as e:
            if self.__debug:
                print('%s[LiveFeed __build_bar] Exception error:  %s ' %
                      (now, e))
                print(
                    '%s[LiveFeed __build_bar] ====EXIT====EXIT=====EXIT========================== '
                    % (now, ))
            return None
Example #30
0
def to_market_datetime(dateTime):
    timezone = pytz.timezone('Asia/Shanghai')
    return dt.localize(dateTime, timezone)
Example #31
0
def to_market_datetime(dateTime, exchange):
    timezone = MARKET_TIMEZONES.get(exchange)
    if timezone is None:
        raise Exception("No timezone available to localize datetime for exchange %s" % (exchange))
    return dt.localize(dateTime, timezone)
Example #32
0
import hbClient as hbc
import json
from liveApi.liveUtils import *
from pyalgotrade.utils import dt
import datetime
import os

broker = hbc.hbTradeClient()
client = broker.getClient()

sdate = dt.localize(datetime.datetime(2018, 2, 3, 22, 16), localTz)
edate = dt.localize(datetime.datetime(2018, 2, 4, 15, 00), localTz)
stime = int(dt.datetime_to_timestamp(sdate))
sdir = 'tradeOrders-%s' % sdate.strftime('%m%d_%H%M')
print stime, sdate, sdir
try:
    os.mkdir(sdir)
except:
    pass


@hbc.tryForever
def getTradeOrder(x):
    symbol = x['base-currency'] + x['quote-currency']
    tradeInfo = client.get(
        '/v1/order/orders', **{
            'symbol': symbol,
            'states': 'partial-canceled,filled',
            'types': 'buy-limit,sell-limit',
            'start-date': sdate.strftime('%Y-%m-%d'),
            'end-date': edate.strftime('%Y-%m-%d')