用Python的交易员 wrote:
这个是1.0老版本的代码了,目前已经停止支持,如果一定要用可以去www.github.com/vnpy/vnpy下载1.9.2-LTS分支的代码
这个代码原来是安装VNPY2.1.8时下载的。谢谢指导!
在调用CsvToMgDB.py时出现错误:
line 59, in <module>
loadMC12Csv('j0000.csv',MINUTE_DB_NAME,'j0000')
NameError: name 'MINUTE_DB_NAME' is not defined
请问怎么解决?
VNPY2.1.8,CsvToMgDB.py源码:
import csv
from datetime import datetime,timedelta
from time import time
import pymongo
from vnpy.trader.setting import SETTINGS #VN 2.1.8版本的写法
from vnpy.trader.constant import * #VN 2.0版本的写法
from vnpy.trader.object import BarData #VN 2.0版本的写法
def loadMC12Csv(fileName,dbName,symbol):
"""将MC12版本Csv导出的历史数据插入MongoDB数据库中"""
import csv
start = time()
print(u'开始读取CSV文件%s中的数据插入到%s的%s中:'%(fileName,dbName,symbol))
#锁定集合并创建索引
client = pymongo.MongoClient(globalSetting['mongoHost'],globalSetting['mongoPort'])
collection = client[dbName][symbol]
collection.ensure_index([('datetime',pymongo.ASCENDING)],unique=True)
#读取数据和插入数据库
reader = csv.DictReader(file(fileName,'r'))
for d in reader:
bar = VtBarData()
bar.vtSymbol = symbol
bar.symbol = symbol
bar.open = float(d['Open'])
bar.high = float(d['High'])
bar.low = float(d['Low'])
bar.close = float(d['Close'])
bar.date = datetime.strptime(d['Date'].split(' ')[0],'%Y/%m/%d').strftime('%Y%m%d')
"""日期格式可能有问题"""
bar.time = d['Time']
bar.datetime = datetime.strptime(bar.date + ' ' + bar.time,'%Y/%m/%d %H:%M:%S')
bar.volume = d['Volume']
flt = {'datetime':bar.datetime}
collection.update_one(flt,{'$set':bar._dict_},upsert=True)
print(u'插入完毕,耗时:%s:'% (time()-start))
loadMC12Csv('j0000.csv',MINUTE_DB_NAME,'j0000') #出现错误的代码
CsvToMgDB_Exaple.py出现NameError: name 'BtBaseData' is not defined,怎么解决?
VNPY2.1.8中CsvToMgDB_Exaple.py源码如下:
EMPTY_STRING = ''
EMPTY_UNICODE = u''
EMPTY_INT = 0
EMPTY_FLOAT = 0.0
TICK_DB_NAME = 'VnTrader_Tick_Db'
DAILY_DB_NAME = 'VnTrader_Daily_Db'
MINUTE_DB_NAMW = 'VnTrader_1Min_Db'
class VtBarData(BtBaseData): #该语句出现错误提示。BtBaseData
"""K线数据"""
def int(self):
"""Constructor"""
super(VtBarData,self).int()
self.vtSymbol = EMPTY_STRING #品种代码,交易所
self.symbol = EMPTY_STRING #品种代码
slef.exchange = EMPTY_STRING #交易所
self.open = EMPTY_FLOAT
self.high = EMPTY_FLOAT
self.low = EMPTY_FLOAT
self.close = EMPTY_FLOAT
self.date = EMPTY_STRING #日期
self.time = EMPTY_STRING #时间
self.datetime = NONE #datetime时间对象
self.volume = EMPTY_INT #成交量
self.openInterest = EMPTY_INT #持仓量
好的,我试试。谢谢!
(求助)使用VN Trader 2.1.8的“CTA回测”,出现如下的错误提示,怎么回事?
策略回测失败,触发异常:
Traceback (most recent call last):
File "d:\vnstudio\lib\site-packages\vnpy\app\cta_backtester\engine.py", line 180, in run_backtesting
engine.run_backtesting()
File "d:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 313, in run_backtesting
for ix, i in enumerate(range(0, total_size, batch_size)):
ValueError: range() arg 3 must not be zero