当前位置: 首页>>代码示例>>Python>>正文


Python VtBarData.exchange方法代码示例

本文整理汇总了Python中vnpy.trader.vtObject.VtBarData.exchange方法的典型用法代码示例。如果您正苦于以下问题:Python VtBarData.exchange方法的具体用法?Python VtBarData.exchange怎么用?Python VtBarData.exchange使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在vnpy.trader.vtObject.VtBarData的用法示例。


在下文中一共展示了VtBarData.exchange方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: onTick

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
    def onTick(self, tick):
        """收到行情TICK推送(必须由用户继承实现)"""
        # 计算K线
        tickMinute = tick.datetime.minute

        if tickMinute != self.barMinute:    
            if self.bar:
                self.onBar(self.bar)

            bar = VtBarData()              
            bar.vtSymbol = tick.vtSymbol
            bar.symbol = tick.symbol
            bar.exchange = tick.exchange

            bar.open = tick.lastPrice
            bar.high = tick.lastPrice
            bar.low = tick.lastPrice
            bar.close = tick.lastPrice

            bar.date = tick.date
            bar.time = tick.time
            bar.datetime = tick.datetime    # K线的时间设为第一个Tick的时间

            self.bar = bar                  # 这种写法为了减少一层访问,加快速度
            self.barMinute = tickMinute     # 更新当前的分钟
        else:                               # 否则继续累加新的K线
            bar = self.bar                  # 写法同样为了加快速度

            bar.high = max(bar.high, tick.lastPrice)
            bar.low = min(bar.low, tick.lastPrice)
            bar.close = tick.lastPrice
开发者ID:QuantFeng,项目名称:vnpy,代码行数:33,代码来源:strategyDualThrust.py

示例2: downloadEquityDailyBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
    def downloadEquityDailyBar(self, symbol):
        """
        下载股票的日行情,symbol是股票代码
        """
        print u'开始下载%s日行情' %symbol
        
        # 查询数据库中已有数据的最后日期
        cl = self.dbClient[DAILY_DB_NAME][symbol]
        cx = cl.find(sort=[('datetime', pymongo.DESCENDING)])
        if cx.count():
            last = cx[0]
        else:
            last = ''
        
        # 开始下载数据
        path = 'api/market/getMktEqud.json'
            
        params = {}
        params['ticker'] = symbol
        if last:
            params['beginDate'] = last['date']
        
        data = self.datayesClient.downloadData(path, params)
        
        if data:
            # 创建datetime索引
            self.dbClient[DAILY_DB_NAME][symbol].ensure_index([('datetime', pymongo.ASCENDING)], 
                                                                unique=True)                

            for d in data:
                bar = VtBarData()
                bar.vtSymbol = symbol
                bar.symbol = symbol
                try:
                    bar.exchange = DATAYES_TO_VT_EXCHANGE.get(d.get('exchangeCD', ''), '')
                    bar.open = d.get('openPrice', 0)
                    bar.high = d.get('highestPrice', 0)
                    bar.low = d.get('lowestPrice', 0)
                    bar.close = d.get('closePrice', 0)
                    bar.date = d.get('tradeDate', '').replace('-', '')
                    bar.time = ''
                    bar.datetime = datetime.strptime(bar.date, '%Y%m%d')
                    bar.volume = d.get('turnoverVol', 0)
                except KeyError:
                    print d
                
                flt = {'datetime': bar.datetime}
                self.dbClient[DAILY_DB_NAME][symbol].update_one(flt, {'$set':bar.__dict__}, upsert=True)            
            
            print u'%s下载完成' %symbol
        else:
            print u'找不到合约%s' %symbol    
开发者ID:BetabrainLEE,项目名称:vnpy,代码行数:54,代码来源:ctaHistoryData.py

示例3: generateVtBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
def generateVtBar(symbol, d):
    """生成K线"""
    l = symbol.split('_')
    bar = VtBarData()
    bar.symbol = l[-2] + l[-1]
    bar.exchange = l[0]
    bar.vtSymbol = '/'.join([bar.symbol, bar.exchange])
    bar.datetime = datetime.datetime.strptime(d['time_open'], '%Y-%m-%dT%H:%M:%S.%f0Z')
    bar.date = bar.datetime.strftime('%Y%m%d')
    bar.time = bar.datetime.strftime('%H:%M:%S')
    bar.open = d['price_open']
    bar.high = d['price_high']
    bar.low = d['price_low']
    bar.close = d['price_close']
    bar.volume = d['volume_traded']
    
    return bar
开发者ID:roccox,项目名称:vnpy,代码行数:19,代码来源:dataService.py

示例4: generateVtBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
def generateVtBar(row):
    """生成K线"""
    bar = VtBarData()
    
    bar.symbol = row['code']
    bar.exchange = ''
    bar.vtSymbol = bar.symbol
    bar.open = row['open']
    bar.high = row['high']
    bar.low = row['low']
    bar.close = row['close']
    bar.volume = row['volume']
    bar.datetime = datetime.strptime(row['time_key'], '%Y-%m-%d %H:%M:%S')
    bar.date = bar.datetime.strftime("%Y%m%d")
    bar.time = bar.datetime.strftime("%H:%M:%S")
    
    return bar
开发者ID:KobeZhao,项目名称:vnpy,代码行数:19,代码来源:dataService.py

示例5: downloadFuturesIntradayBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
    def downloadFuturesIntradayBar(self, symbol):
        """下载期货的日内分钟行情"""
        print u'开始下载%s日内分钟行情' %symbol
                
        # 日内分钟行情只有具体合约
        path = 'api/market/getFutureBarRTIntraDay.json'
        
        params = {}
        params['instrumentID'] = symbol
        params['unit'] = 1
        
        data = self.datayesClient.downloadData(path, params)
        
        if data:
            today = datetime.now().strftime('%Y%m%d')
            
            # 创建datetime索引
            self.dbClient[MINUTE_DB_NAME][symbol].ensure_index([('datetime', pymongo.ASCENDING)], 
                                                                      unique=True)                

            for d in data:
                bar = VtBarData()
                bar.vtSymbol = symbol
                bar.symbol = symbol
                try:
                    bar.exchange = DATAYES_TO_VT_EXCHANGE.get(d.get('exchangeCD', ''), '')
                    bar.open = d.get('openPrice', 0)
                    bar.high = d.get('highestPrice', 0)
                    bar.low = d.get('lowestPrice', 0)
                    bar.close = d.get('closePrice', 0)
                    bar.date = today
                    bar.time = d.get('barTime', '')
                    bar.datetime = datetime.strptime(bar.date + ' ' + bar.time, '%Y%m%d %H:%M')
                    bar.volume = d.get('totalVolume', 0)
                    bar.openInterest = 0
                except KeyError:
                    print d
                
                flt = {'datetime': bar.datetime}
                self.dbClient[MINUTE_DB_NAME][symbol].update_one(flt, {'$set':bar.__dict__}, upsert=True)            
            
            print u'%s下载完成' %symbol
        else:
            print u'找不到合约%s' %symbol   
开发者ID:BetabrainLEE,项目名称:vnpy,代码行数:46,代码来源:ctaHistoryData.py

示例6: generateVtBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
def generateVtBar(row):
    """生成K线"""
    bar = VtBarData()
    
    symbol, exchange = row['symbol'].split('.')
    
    bar.symbol = symbol
    bar.exchange = exchangeMapReverse[exchange]
    
    if bar.exchange in ['SSE', 'SZSE']:
        bar.vtSymbol = '.'.join([bar.symbol, bar.exchange])
    else:
        bar.vtSymbol = bar.symbol
        
    bar.open = row['open']
    bar.high = row['high']
    bar.low = row['low']
    bar.close = row['close']
    bar.volume = row['volume']
    
    bar.date = str(row['date'])
    bar.time = str(row['time']).rjust(6, '0')
   
    #将bar的时间改成提前一分钟
    hour=bar.time[0:2]
    minute=bar.time[2:4]
    sec=bar.time[4:6]
    if minute=="00":
        minute="59"
        
        h = int(hour)
        if h == 0:
            h = 24
        
        hour=str(h-1).rjust(2,'0')
    else:
        minute=str(int(minute)-1).rjust(2,'0')
    bar.time=hour+minute+sec
   
    bar.datetime = datetime.strptime(' '.join([bar.date, bar.time]), '%Y%m%d %H%M%S')
    
    return bar
开发者ID:KobeZhao,项目名称:vnpy,代码行数:44,代码来源:dataService.py

示例7: onBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
 def onBar(self, bar):
     """收到Bar推送(必须由用户继承实现)"""
     # 如果当前是一个5分钟走完(分钟线的时间戳是当前分钟的开始时间戳,因此要+1)
     if (bar.datetime.minute + 1) % 5 == 0:
         # 如果已经有聚合5分钟K线
         if self.fiveBar:
             # 将最新分钟的数据更新到目前5分钟线中
             fiveBar = self.fiveBar
             fiveBar.high = max(fiveBar.high, bar.high)
             fiveBar.low = min(fiveBar.low, bar.low)
             fiveBar.close = bar.close
             
             # 推送5分钟线数据
             self.onFiveBar(fiveBar)
             
             # 清空5分钟线数据缓存
             self.fiveBar = None
     else:
         # 如果没有缓存则新建
         if not self.fiveBar:
             fiveBar = VtBarData()
             
             fiveBar.vtSymbol = bar.vtSymbol
             fiveBar.symbol = bar.symbol
             fiveBar.exchange = bar.exchange
         
             fiveBar.open = bar.open
             fiveBar.high = bar.high
             fiveBar.low = bar.low
             fiveBar.close = bar.close
         
             fiveBar.date = bar.date
             fiveBar.time = bar.time
             fiveBar.datetime = bar.datetime 
             
             self.fiveBar = fiveBar
         else:
             fiveBar = self.fiveBar
             fiveBar.high = max(fiveBar.high, bar.high)
             fiveBar.low = min(fiveBar.low, bar.low)
             fiveBar.close = bar.close
开发者ID:QuantFeng,项目名称:vnpy,代码行数:43,代码来源:strategyKingKeltner.py

示例8: onBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
    def onBar(self, bar):
        """收到Bar推送(必须由用户继承实现)"""
        # 如果当前是一个5分钟走完
        if bar.datetime.minute % 5 == 0:
            # 如果已经有聚合5分钟K线
            if self.min5Bar:
                # 将最新分钟的数据更新到目前5分钟线中
                min5Bar = self.min5Bar
                min5Bar.high = max(min5Bar.high, bar.high)
                min5Bar.low = min(min5Bar.low, bar.low)
                min5Bar.close = bar.close

                # 推送5分钟线数据
                self.onFiveBar(min5Bar)

                # 清空5分钟线数据缓存
                self.min5Bar = None
        else:
            # 如果没有缓存则新建
            if not self.min5Bar:
                min5Bar = VtBarData()

                min5Bar.vtSymbol = bar.vtSymbol
                min5Bar.symbol = bar.symbol
                min5Bar.exchange = bar.exchange

                min5Bar.open = bar.open
                min5Bar.high = bar.high
                min5Bar.low = bar.low
                min5Bar.close = bar.close

                min5Bar.date = bar.date
                min5Bar.time = bar.time
                min5Bar.datetime = bar.datetime

                self.min5Bar = min5Bar
            else:
                min5Bar = self.min5Bar
                min5Bar.high = max(min5Bar.high, bar.high)
                min5Bar.low = min(min5Bar.low, bar.low)
                min5Bar.close = bar.close

        # ----------------------------------------------------------------------

        if bar.datetime.minute % 15 == 0:
            # 如果已经有聚合15分钟K线
            if self.min15Bar:
                # 将最新分钟的数据更新到目前5分钟线中
                min15Bar = self.min15Bar
                min15Bar.high = max(min15Bar.high, bar.high)
                min15Bar.low = min(min15Bar.low, bar.low)
                min15Bar.close = bar.close

                # 推送5分钟线数据
                self.onFifteenBar(min15Bar)

                # 清空5分钟线数据缓存
                self.min15Bar = None
        else:
            # 如果没有缓存则新建
            if not self.min15Bar:
                min15Bar = VtBarData()

                min15Bar.vtSymbol = bar.vtSymbol
                min15Bar.symbol = bar.symbol
                min15Bar.exchange = bar.exchange

                min15Bar.open = bar.open
                min15Bar.high = bar.high
                min15Bar.low = bar.low
                min15Bar.close = bar.close

                min15Bar.date = bar.date
                min15Bar.time = bar.time
                min15Bar.datetime = bar.datetime

                self.min15Bar = min15Bar
            else:
                min15Bar = self.min15Bar
                min15Bar.high = max(min15Bar.high, bar.high)
                min15Bar.low = min(min15Bar.low, bar.low)
                min15Bar.close = bar.close

        # ----------------------------------------------------------------------
        # 如果当前是一个30分钟走完
        if bar.datetime.minute % 30 == 0:
            # 如果已经有聚合30分钟K线
            if self.min30Bar:
                # 将最新分钟的数据更新到目前5分钟线中
                min30Bar = self.min30Bar
                min30Bar.high = max(min30Bar.high, bar.high)
                min30Bar.low = min(min30Bar.low, bar.low)
                min30Bar.close = bar.close

                # 推送5分钟线数据
                self.onThirtyBar(min30Bar)

                # 清空5分钟线数据缓存
                self.min30Bar = None
        else:
#.........这里部分代码省略.........
开发者ID:porfavor,项目名称:vnpy,代码行数:103,代码来源:strategyBaseMultiFreq.py

示例9: VtBarData

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
# 创建MongoDB连接
client = pymongo.MongoClient('localhost', 27017)
collection = client[DAILY_DB_NAME][vtSymbol]
collection.create_index('datetime')

print u'MongoDB连接成功'

# 将数据插入历史数据库
for row in data.iterrows():
    date = row[0]
    data = row[1]
    
    bar = VtBarData()
    bar.vtSymbol = vtSymbol
    bar.symbol = symbol
    bar.exchange = exchange
    bar.date = date
    bar.datetime = datetime.strptime(date, '%Y-%m-%d')
    bar.open = data['open']
    bar.high = data['high']
    bar.low = data['low']
    bar.close = data['close']
    bar.volume = data['volume']
    
    flt = {'datetime': bar.datetime}
    collection.update_one(flt, {'$set':bar.__dict__}, upsert=True)

print u'数据插入完成'


# 开发交易策略
开发者ID:cydrain,项目名称:Coding_Practice,代码行数:33,代码来源:method_vnpy.py

示例10: downloadFuturesDailyBar

# 需要导入模块: from vnpy.trader.vtObject import VtBarData [as 别名]
# 或者: from vnpy.trader.vtObject.VtBarData import exchange [as 别名]
    def downloadFuturesDailyBar(self, symbol):
        """
        下载期货合约的日行情,symbol是合约代码,
        若最后四位为0000(如IF0000),代表下载连续合约。
        """
        print u'开始下载%s日行情' %symbol
        
        # 查询数据库中已有数据的最后日期
        cl = self.dbClient[DAILY_DB_NAME][symbol]
        cx = cl.find(sort=[('datetime', pymongo.DESCENDING)])
        if cx.count():
            last = cx[0]
        else:
            last = ''
        
        # 主力合约
        if '0000' in symbol:
            path = 'api/market/getMktMFutd.json'
            
            params = {}
            params['contractObject'] = symbol.replace('0000', '')
            params['mainCon'] = 1
            if last:
                params['startDate'] = last['date']
        # 交易合约
        else:
            path = 'api/market/getMktFutd.json'
            
            params = {}
            params['ticker'] = symbol
            if last:
                params['startDate'] = last['date']
        
        # 开始下载数据
        data = self.datayesClient.downloadData(path, params)
        
        if data:
            # 创建datetime索引
            self.dbClient[DAILY_DB_NAME][symbol].ensure_index([('datetime', pymongo.ASCENDING)], 
                                                                      unique=True)                

            for d in data:
                bar = VtBarData()
                bar.vtSymbol = symbol
                bar.symbol = symbol
                try:
                    bar.exchange = DATAYES_TO_VT_EXCHANGE.get(d.get('exchangeCD', ''), '')
                    bar.open = d.get('openPrice', 0)
                    bar.high = d.get('highestPrice', 0)
                    bar.low = d.get('lowestPrice', 0)
                    bar.close = d.get('closePrice', 0)
                    bar.date = d.get('tradeDate', '').replace('-', '')
                    bar.time = ''
                    bar.datetime = datetime.strptime(bar.date, '%Y%m%d')
                    bar.volume = d.get('turnoverVol', 0)
                    bar.openInterest = d.get('openInt', 0)
                except KeyError:
                    print d
                
                flt = {'datetime': bar.datetime}
                self.dbClient[DAILY_DB_NAME][symbol].update_one(flt, {'$set':bar.__dict__}, upsert=True)            
            
                print u'%s下载完成' %symbol
        else:
            print u'找不到合约%s' %symbol
开发者ID:BetabrainLEE,项目名称:vnpy,代码行数:67,代码来源:ctaHistoryData.py


注:本文中的vnpy.trader.vtObject.VtBarData.exchange方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。