matlab ctp 交易接口,C++ 连接上期所CTP交易行情接口

CTP相关接口和文档下载:

相关库文件以及头文件如下:

82da1a34a5dc91af1e23256ed4a910c5.png

遇到的问题:

1.运行直接退出了,是因为没有包含两个dll文件,以为只需要引入lib即可。

2.OnFrontConnected 这个回调函数一直进不去,花了很长时间,发现是因为写的是控制台程序,在main函数中直接return 0;

所以服务端来不及返回,程序已经退出,要在return 0之前加上system("pause"); 即可   真是低级的错误。。。。

3.LNK2019    无法解析的外部符号 "public: static class CThostFtdcTraderApi * __cdecl CThostFtdcTraderApi::CreateFtdcTraderApi(char const *)" (?CreateFtdcTraderApi@CThostFtdcTraderApi@@SAPEAV1@PEBD@Z),该符号在函数 "public: void __cdecl CTraderHandler::connect(void)" (?connect@CTraderHandler@@QEAAXXZ) 中被引用    Ctp.Prox    C:\Users\viruser.v-desktop\source\repos\Ctp.Prox\Ctp.Prox\CTraderHandler.obj

这是链接错误,编译本身没错,原因是因为lib文件都是32位的,但是项目设置了64位,导致不兼容,设置成32位即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个期货CTP交易下单的C demo。您需要安装CTP API并正确配置环境后,使用以下代码即可进行期货下单: ``` #include <stdio.h> #include <string.h> #include <Windows.h> #include "ThostFtdcTraderApi.h" class CTraderSpi : public CThostFtdcTraderSpi { public: virtual void OnFrontConnected() { printf(">>> Front connected.\n"); CThostFtdcReqUserLoginField req; memset(&req, 0, sizeof(req)); strcpy(req.BrokerID, "经纪商代码"); strcpy(req.UserID, "投资者账户"); strcpy(req.Password, "用户密码"); m_pTraderApi->ReqUserLogin(&req, 0); } virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { if (pRspInfo != NULL && pRspInfo->ErrorID != 0) { printf(">>> Error: login failed, errno = %d, err msg = %s.\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg); return; } printf(">>> Login success.\n"); CThostFtdcInputOrderField req; memset(&req, 0, sizeof(req)); strcpy(req.BrokerID, "经纪商代码"); strcpy(req.InvestorID, "投资者账户"); strcpy(req.InstrumentID, "期货合约代码"); strcpy(req.UserID, "投资者账户"); req.Direction = THOST_FTDC_D_Buy; req.OffsetFlag = THOST_FTDC_OF_Open; req.LimitPrice = 5000; req.VolumeTotalOriginal = 1; req.OrderPriceType = THOST_FTDC_OPT_LimitPrice; req.TimeCondition = THOST_FTDC_TC_GFD; req.VolumeCondition = THOST_FTDC_VC_AV; req.MinVolume = 1; req.ContingentCondition = THOST_FTDC_CC_Immediately; req.ForceCloseReason = THOST_FTDC_FCC_NotForceClose; req.IsAutoSuspend = 0; m_pTraderApi->ReqOrderInsert(&req, 0); } virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { if (pRspInfo != NULL && pRspInfo->ErrorID != 0) { printf(">>> Error: insert order failed, errno = %d, err msg = %s.\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg); return; } printf(">>> Insert order success.\n"); } void SetTraderApi(CThostFtdcTraderApi *pTraderApi) { m_pTraderApi = pTraderApi; } private: CThostFtdcTraderApi *m_pTraderApi; }; int main() { CThostFtdcTraderApi *pTraderApi = CThostFtdcTraderApi::CreateFtdcTraderApi(); CTraderSpi *pTraderSpi = new CTraderSpi(); pTraderSpi->SetTraderApi(pTraderApi); pTraderApi->RegisterSpi(pTraderSpi); pTraderApi->SubscribePublicTopic(THOST_TERT_RESTART); pTraderApi->SubscribePrivateTopic(THOST_TERT_RESTART); pTraderApi->RegisterFront("交易前置地址"); pTraderApi->Init(); pTraderApi->Join(); return 0; } ``` 您只需要将代码中的经纪商代码、投资者账户、用户密码、期货合约代码、交易前置地址修改为您自己的信息即可进行期货下单操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值