vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 9
声望: 0

按照知乎帖子“vn.trader的tick-to-trade延时测试”一文,链接为https://zhuanlan.zhihu.com/p/24242972,想测试一下本机的内部耗时,vnpy为1.8.1版本,在visual studio 2013 (boost为boost_1_68_0版本)编译的时候,出现如下错误:
错误 2 error C2039: “task_time”: 不是“Task”的成员
错误 3 error C2039: “t”: 不是“MdApi”的成员
错误 4 error C2228: “.QuadPart”的左边必须有类/结构/联合
5 IntelliSense: class "Task" 没有成员 "task_time"

原文代码的github链接失效了,所以不知道具体还改了哪些地方,我只改了“vn.trader的tick-to-trade延时测试”一文中提到的内容,不知道为什么会出现这样的错误(boost版本的原因?),请指点一下,谢谢

Member
avatar
加入于:
帖子: 9
声望: 0

在头文件vnctpmd.h中的Task结构体中增加一行声明

//任务结构体
struct Task
{
    int task_name;      //回调函数名称对应的常量
    any task_data;      //数据结构体
    any task_error;     //错误结构体
    int task_id;        //请求id
    bool task_last;     //是否为最后返回
    LONGLONG task_time; //时间
};

增加上面最后一行,“task_time”: 不是“Task”的成员 的错误没有了

下面的错误依然存在:
错误 3 error C2039: “t”: 不是“MdApi”的成员
错误 4 error C2228: “.QuadPart”的左边必须有类/结构/联合
对应的代码段如下:

void MdApi::processRtnDepthMarketData(Task task)
{
    PyLock lock;
    CThostFtdcDepthMarketDataField task_data = any_cast<CThostFtdcDepthMarketDataField>(task.task_data);
    dict data;
    data["HighestPrice"] = task_data.HighestPrice;
    data["BidPrice5"] = task_data.BidPrice5;
    data["BidPrice4"] = task_data.BidPrice4;
    data["BidPrice1"] = task_data.BidPrice1;
    data["BidPrice3"] = task_data.BidPrice3;
    data["BidPrice2"] = task_data.BidPrice2;
    data["LowerLimitPrice"] = task_data.LowerLimitPrice;
    data["OpenPrice"] = task_data.OpenPrice;
    data["AskPrice5"] = task_data.AskPrice5;
    data["AskPrice4"] = task_data.AskPrice4;
    data["AskPrice3"] = task_data.AskPrice3;
    data["PreClosePrice"] = task_data.PreClosePrice;
    data["AskPrice1"] = task_data.AskPrice1;
    data["PreSettlementPrice"] = task_data.PreSettlementPrice;
    data["AskVolume1"] = task_data.AskVolume1;
    data["UpdateTime"] = task_data.UpdateTime;
    data["UpdateMillisec"] = task_data.UpdateMillisec;
    data["AveragePrice"] = task_data.AveragePrice;
    data["BidVolume5"] = task_data.BidVolume5;
    data["BidVolume4"] = task_data.BidVolume4;
    data["BidVolume3"] = task_data.BidVolume3;
    data["BidVolume2"] = task_data.BidVolume2;
    data["PreOpenInterest"] = task_data.PreOpenInterest;
    data["AskPrice2"] = task_data.AskPrice2;
    data["Volume"] = task_data.Volume;
    data["AskVolume3"] = task_data.AskVolume3;
    data["AskVolume2"] = task_data.AskVolume2;
    data["AskVolume5"] = task_data.AskVolume5;
    data["AskVolume4"] = task_data.AskVolume4;
    data["UpperLimitPrice"] = task_data.UpperLimitPrice;
    data["BidVolume1"] = task_data.BidVolume1;
    data["InstrumentID"] = task_data.InstrumentID;
    data["ClosePrice"] = task_data.ClosePrice;
    data["ExchangeID"] = task_data.ExchangeID;
    data["TradingDay"] = task_data.TradingDay;
    data["PreDelta"] = task_data.PreDelta;
    data["OpenInterest"] = task_data.OpenInterest;
    data["CurrDelta"] = task_data.CurrDelta;
    data["Turnover"] = task_data.Turnover;
    data["LastPrice"] = task_data.LastPrice;
    data["SettlementPrice"] = task_data.SettlementPrice;
    data["ExchangeInstID"] = task_data.ExchangeInstID;
    data["LowestPrice"] = task_data.LowestPrice;
    data["ActionDay"] = task_data.ActionDay;

    //保存测试时间
    data["tick_time"] = task.task_time;
    data["frequency_time"] = this->t.QuadPart;
    this->onRtnDepthMarketData(data);
};

问题出在,最后的这三行中,请问这个错误应该如何消除?

Member
avatar
加入于:
帖子: 9
声望: 0

应该还是在.h的头文件里有改动,请问这套代码的新链接在哪里?原来知乎上测试tick-to-trade的代码链接失效了

Member
avatar
加入于:
帖子: 9
声望: 0

知乎文章中 ,没找到底层调用 QueryPerformanceFrequency 函数 的位置,也写在头文件中了么?

Administrator
avatar
加入于:
帖子: 1711
声望: 80

这时候Github的代码仓库历史的重要性就体现出来了!!!

https://github.com/vnpy/vnpy/tree/v1.6/vn.tutorial/tick2trade

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3