精华内容
下载资源
问答
  • ctp:java ctp交易api
  • golang的ctp接口(linux64) 准备 install go install swig 建造 export GOROOT= cd ./src ./make.sh 教程 package main import ( "ctp" "fmt" ) var ( front string = "tcp://asp-sim2-front1.financial-...
  • ctp:ctp超过zmq-源码

    2021-05-07 08:38:39
    ctp over zmq 对上期的ctp协议进行封装,通过zmq获取核心策略服务器的交易指令 核心策略服务器返回: 正值 持对应数量多单 0 空仓 负值 持对应数量空单 由此方便用其他语言及架构开发自动交易策略。 default zmq ...
  • CTP期货API Python包装器 版本:v6.5.1 P1(v6.5.1 20200908) 平台:Linux 64位,Windows 64位 Python需求:x86-64 特别支持PyPy3-3.6 Linux 64bit 灵感来自Lovelylain 安装 在安装ctpwrapper软件包之前,需要...
  • CTP使用

    2021-07-21 11:03:01
    1. CTP介绍 1.1 CTP简介 综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台,CTP平台以“新一代交易所系统”的核心技术为基础...

    1. CTP介绍

    1.1 CTP简介

    综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台,CTP平台以“新一代交易所系统”的核心技术为基础,构建了稳定、高速、开放式的接口,适合程序化交易软件运用和短线炒单客户使用。投资者可直接用CTP的API开发交易程序,连到期货公司的CTP系统交易。

    1.2 API介绍

    Windows版本的API有8个文件,作用分别为:

    • ThostFtdcUserApiDataType.h:定义业务数据类型,用typedef为现有类型创建同义字
    • ThostFtdcUserApiStruct.h:使用ThostFtdcUserApiDataType.h中的数据类型定义业务数据结构,调用api时需要传入这些数据结构
    • ThostFtdcMdApi.h、thostmduserapi_se.lib、thostmduserapi_se.dll:用于获取行情的API,md表示market data
    • ThostFtdcTraderApi.h、thosttraderapi_se.lib、thosttraderapi_se.dll:用于交易操作的API

    1.3 CTP使用

    • 开发前要有期货交易账号、经纪商代码、前置机地址(分为行情和交易),可以在simnow平台【白天才能上】进行模拟开户
    • 使用CTP的API进行开发的投资者,需要进行验证后登录,才能进行查询、交易等操作
    • 行情和交易API中都有两个类,xxxSpi和xxxApi,分别代表着回调和调用,每个Api都有一个与之绑定的Spi
    • Api函数对应各种操作,需要在客户端主动调用,交易所会根据Api调用收到请求,然后回调相应的Spi函数
    • Spi函数对应对应各种响应,需要在客户端需要进行重写,回调函数中的参数携带了交易所返回的信息

    1.4 登录信息

    客户端要调用API接入CTP柜台进行程序化交易,登录时需要以下基本信息:

    • BrokerID:经纪商代码,指期货公司在CTP系统上的编码,四位数。如海通期货是8000
    • TradeFront、MarketFront:TradeFront是CTP系统的交易前置IP地址,用来下单撤单等;MarketFront是行情前置IP地址,用来订阅接收行情
    • InvestorID(UserID,InvestUnitID):投资者代码,指客户在CTP系统上的唯一ID,在期货公司开户后由期货公司分配得到。UserID是操作员代码,InvestUnitID是投资单元代码,普通投资者直接填InvestorID即可
    • Password:开户时设置的密码,需要注意的是开户完首次登录CTP系统需要修改密码
    • AppID:客户终端软件代码
    • AuthCode:客户终端软件认证码

    simnow仿真交易登录信息:InvestorID和InvestorID在官网注册后获得

    • BrokerID:9999
    • IP地址第一组(交易时段):Trade Front:180.168.146.187:10201,Market Front:180.168.146.187:10211
      IP地址第二组(交易时段):Trade Front:180.168.146.187:10202,Market Front:180.168.146.187:10212
      IP地址第三组(交易时段):Trade Front:218.202.237.33:10203,Market Front:218.202.237.33:10213
      IP地址(非交易时段):Trade Front:180.168.146.187:10130,Market Front:180.168.146.187:10131
    • APPID:simnow_client_test
    • AuthCode:0000000000000000

    2. 基础代码

    2.1 行情代码

    在主函数中创建行情API对象,并与MdSpi类进行绑定,MdSpi类中只展示了部分.cpp文件的内容,为了编写方便,该实例直接在回调函数中调用API。

    // main.cpp
    int main(int argc, char* argv[]) {
    	CThostFtdcMdApi* mdapi = CThostFtdcMdApi::CreateFtdcMdApi("./md_file/");
    	MdSpi* mdspi = new MdSpi(mdapi);
    	mdapi->RegisterSpi(mdspi);
    	mdapi->RegisterFront("tcp://180.168.146.187:10131");
    	mdapi->Init();
    	mdapi->Join();
    	return 0;
    }
    
    //MdSpi.cpp
    void MdSpi::OnFrontConnected() {
    	cout << "=========已连接上,请求登录==========" << endl;
    	loginField = new CThostFtdcReqUserLoginField();
    	strcpy(loginField->BrokerID, BROKER_ID.c_str());
    	strcpy(loginField->UserID, NULL_STR.c_str());
    	strcpy(loginField->Password, NULL_STR.c_str());
    	mdapi->ReqUserLogin(loginField, loginRequestID++);
    }
    
    void MdSpi::OnRspUserLogin(CThostFtdcRspUserLoginField* pRspUserLogin, CThostFtdcRspInfoField* pRspInfo,int nRequestID, bool bIsLast) {
    	cout << "==============登录请求响应===============" << endl;
    	if (pRspInfo != nullptr || pRspInfo->ErrorID == 0) {
    		cout << "登陆成功!!!" << endl;
    		cout << "交易日:" << pRspUserLogin->TradingDay << endl;
    		cout << "登陆成功时间:" << pRspUserLogin->LoginTime << endl;
    		cout << "经纪公司代码:" << pRspUserLogin->BrokerID << endl;
    		cout << "用户代码:" << pRspUserLogin->UserID << endl;
    		//订阅行情
    		char* instrumentID[] = { "au2110" };	//订阅一个合约所以数量为1
    		mdapi->SubscribeMarketData(instrumentID, 1);
    	}
    }
    
    void MdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField* pDepthMarketData) {
    	cout << "==============深度行情通知==============" << endl;
    	//cout << " 交易日:" << pDepthMarketData->TradingDay << endl
    	//	<< "合约代码:" << pDepthMarketData->InstrumentID << endl;
    	cout << "最新价:" << pDepthMarketData->LastPrice << endl;
    	cout << "最后修改时间" << pDepthMarketData->UpdateTime << endl;
    	//cout << "最后修改毫秒" << pDepthMarketData->UpdateMillisec << endl
    	//	<< "申买价一:" << pDepthMarketData->BidPrice1 << endl
    	//	<< "申买量一:" << pDepthMarketData->BidVolume1 << endl
    	//	<< "申卖价一:" << pDepthMarketData->AskPrice1 << endl
    	//	<< "申卖量一:" << pDepthMarketData->AskVolume1 << endl
    	//	<< "本次结算价格:" << pDepthMarketData->SettlementPrice << endl
    	//	<< "成交金额:" << pDepthMarketData->Turnover << endl
    	//	<< "持仓量:" << pDepthMarketData->OpenInterest << endl;
    }
    

    2.2 交易代码

    在主函数中创建交易API对象,根据输入数字决定要执行的API函数,TdApi类中只展示了部分.cpp文件的内容,TdSpi类用来实现回调函数,未进行展示。

    // main.cpp
    int main(int argc, char* argv[]) {
    	TdApi* tdApi = new TdApi();
    	while (true)
    	{
    		int x;
    		cout << "0退出;1验证;2登录;3结算确认;4查询持仓;5查询资金;6查询报单;7查询成交;8查询手续费;9报单;10撤单" << endl;
    		cout << "输入:" << endl;
    		cin >> x;
    		if (x == 0) break;
    		else if (x == 1) tdApi->Authenticate();
    		else if (x == 2) tdApi->Login();
    		else if (x == 3) tdApi->Confirm();
    		else if (x == 4) tdApi->QueryPosition();
    		else if (x == 5) tdApi->QueryAccount();
    		else if (x == 6) tdApi->QueryOrder();
    		else if (x == 7) tdApi->QueryTrade();
    		else if (x == 8) {
    			cout << "输入合约代码:";
    			string instrumentID;
    			cin >> instrumentID;
    			tdApi->QueryCommission(instrumentID);
    		}
    		else if (x == 9) {
    			cout << "输入合约代码:";
    			string instrumentID;
    			cin >> instrumentID;
    			cout << "输入报单价格:";
    			double limitPrice;
    			cin >> limitPrice;
    			cout << "输入报单数量:";
    			int volume;
    			cin >> volume;
    			tdApi->InsertOrder(instrumentID, limitPrice, volume);
    		}
    		else if (x == 10) {
    			tdApi->WithdrawOrder();
    		}
    	}
    	return 0;
    }
    
    //TdApi.cpp
    TdApi::TdApi()
    {
    	tdapi = CThostFtdcTraderApi::CreateFtdcTraderApi("./trader_file/");
    	tdspi = new TdSpi();
    	tdapi->RegisterSpi(tdspi);
    	tdapi->SubscribePublicTopic(THOST_TERT_RESTART);
    	tdapi->SubscribePrivateTopic(THOST_TERT_RESTART);
    	//tdapi->RegisterFront("tcp://218.202.237.33:10203");
    	tdapi->RegisterFront("tcp://180.168.146.187:10130");
    	tdapi->Init();
    }
    
    TdApi::~TdApi()
    {
    	tdapi->RegisterSpi(nullptr);
    	tdapi->Release();
    	tdapi = nullptr;
    	delete tdspi;
    	tdspi = nullptr;
    }
    
    int TdApi::Authenticate()
    {
    	CThostFtdcReqAuthenticateField* pReqAuthenticateField = new CThostFtdcReqAuthenticateField();
    	strcpy(pReqAuthenticateField->BrokerID, BROKER.c_str());
    	strcpy(pReqAuthenticateField->UserID, USER_ID.c_str());
    	strcpy(pReqAuthenticateField->AuthCode, AUTH_CODE.c_str());
    	strcpy(pReqAuthenticateField->AppID, APP_ID.c_str());
    	cout << "RequestID:" << nRequestID << endl;
    	return tdapi->ReqAuthenticate(pReqAuthenticateField, nRequestID++);
    }
    
    int TdApi::Login()
    {
    	CThostFtdcReqUserLoginField* pReqUserLoginField = new CThostFtdcReqUserLoginField();
    	strcpy(pReqUserLoginField->BrokerID, BROKER.c_str());
    	strcpy(pReqUserLoginField->UserID, USER_ID.c_str());
    	strcpy(pReqUserLoginField->Password, PASS.c_str());
    	cout << "RequestID:" << nRequestID << endl;
    	return tdapi->ReqUserLogin(pReqUserLoginField, nRequestID++);
    }
    
    int TdApi::Confirm()
    {
    	CThostFtdcSettlementInfoConfirmField* pSettlementInfoConfirm = new CThostFtdcSettlementInfoConfirmField();
    	strcpy(pSettlementInfoConfirm->BrokerID, BROKER.c_str());
    	strcpy(pSettlementInfoConfirm->InvestorID, USER_ID.c_str());
    	cout << "RequestID:" << nRequestID << endl;
    	return tdapi->ReqSettlementInfoConfirm(pSettlementInfoConfirm, nRequestID++);
    }
    
    int TdApi::InsertOrder(string instrumentID, double limitPrice, int volume)
    {
    	CThostFtdcInputOrderField* pInputOrder = new CThostFtdcInputOrderField();
    	strcpy_s(pInputOrder->BrokerID, BROKER.c_str());
    	strcpy_s(pInputOrder->InvestorID, USER_ID.c_str());
    	strcpy_s(pInputOrder->ExchangeID, "SHFE");
    	strcpy_s(pInputOrder->InstrumentID, instrumentID.c_str());
    	pInputOrder->OrderPriceType = THOST_FTDC_OPT_LimitPrice;//限价
    	pInputOrder->Direction = THOST_FTDC_D_Buy;//买
    	pInputOrder->CombOffsetFlag[0] = THOST_FTDC_OF_Open;//开
    	pInputOrder->CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;//投机
    	pInputOrder->LimitPrice = limitPrice;
    	pInputOrder->VolumeTotalOriginal = volume;
    	pInputOrder->TimeCondition = THOST_FTDC_TC_GFD;///当日有效
    	pInputOrder->VolumeCondition = THOST_FTDC_VC_AV;///任意数量
    	pInputOrder->MinVolume = 1;
    	pInputOrder->ContingentCondition = THOST_FTDC_CC_Immediately;
    	pInputOrder->StopPrice = 300.0;
    	pInputOrder->ForceCloseReason = THOST_FTDC_FCC_NotForceClose;
    	pInputOrder->IsAutoSuspend = 0;
    	pInputOrder->IsSwapOrder = 0;
    	cout << "RequestID:" << nRequestID << endl;
    	return tdapi->ReqOrderInsert(pInputOrder, nRequestID++);
    }
    

    2.3 常见问题

    • 客户端程序至少由两个线程组成,一个是应用程序主线程,一个是CTP API工作线程(行情API和交易API为不同的线程),程序与交易系统的通讯是由API工作线程驱动的
    • CTP API提供的接口是线程安全的,可以有多个应用程序线程同时发出请求。SPI提供的接口回调是由API工作线程驱动,即SPI回调函数与API调用函数都在同一个线程中运行
    • 使用行情API时登录的账号密码可都为空,登录后即可使用;使用交易API时需要先验证才能登录,登录后需要进行结算确认才能下单
    • 交易SPI的查询回调函数中,pRspInfo==nullptr或pRspInfo->ErrorID==0都代表查询成功,如果查询记录为空在调用字段的属性时会报空指针异常
    • 报单时有些交易所只支持限价单,有效期类型只支持当日有效,若填别的无任何返回;且有些必填字段并不是必填
    • 不同交易所的合约命名规则不统一:上期所/能源所/大商所(小写+4个数字);中金所(大写+4个数字);郑商所(大写+3个数字)。合约填写的格式错误或合约不存在则无返回结果
    • 交易所代码:上期所(SHFE),大商所(DCE),郑商所(CZCE),中金所(FFEX),能源中心(INE)
    • 下单和撤单成功(仅代表报单操作成功,并不代表一定执行)都会执行OnRtnOrder回调函数,有单成交时执行OnRtnTrade回调函数
    • 有多个字段组合可以唯一确定一笔报单,推荐通过OrderSysID字段,OrderSysID是报单报入到交易所时交易所给编的唯一编号,该字段加上ExchangeID也可以用来确定唯一一笔报单
    • 每次下单可能会收到多次OnRtnOrder函数响应,其流程如下图所示,CTP风控通过引起的OnRtnOrder回调,OrderSysID字段为空,因为订单还没有到达交易所

    在这里插入图片描述

    3. TIP

    3.1 确定报单的唯一性

    • FrontID:CTP后台前置编号
    • SessionID:本次链接编号。登录成功回报会返回上述两个字段的值,这两个编号在本次连接中保持不变
    • OrderRef:报单引用,可自定义或不填。上述三个字段可唯一确定一笔报单
    • ExchangeID:交易所代码
    • OrderSysID:报单报入到交易所时交易所给的唯一编号。上述两个字段也可唯一确定一笔报单

    3.2 报单状态编号OrderStatus
    报单的状态编号由交易所返回,由枚举值标识,常见状态有:

    • a:“未知”,表示CTP已收到客户端报单,正在转发至交易所,对应第一个OnRtnOrder(第二个也可能出现)
    • 3:“未成交还在队列中”,表示报单已通过交易所风险检查,对应第二个OnRtnOrder
    • 1:“部分成交还在队列中”,表示订单部分成交,对应第三个OnRtnOrder
    • 0:“全部成交”,表示订单全部成交,对应第三个OnRtnOrder
    • 5:“撤单”,主动撤单或被动撤单时OnRtnOrder返回的状态,需配合OrderSubmitStatus字段区分是否主动撤单,该字段返回3时代表主动撤单,返回4代表被动撤单

    3.3 查询与交易流控

    使用客户端进行CTP交易时,可能会受到【CTP底层动态库、CTP柜台系统、交易所】对查询和交易的频率限制。

    3.3.1 CTP底层动态库流控

    目前底层动态库中的流控只针对查询,即API中所有以ReqQry开头的函数,此处流控分为两种:

    • 未处理请求超过许可数:此时调用函数返回值为-2。这是因为目前动态库底层设置每次只允许1个查询请求在途,即当前这笔查询请求发出后,在未收到响应前,不能发起下一笔查询请求。该流控使得不能在回调函数中调用多次查询函数
    • 每秒发送请求数超过许可数:此时调用函数返回值为-3。在穿透式版本之前,CTP动态库底层设定了API每秒只允许发出1次查询请求。升级新版本后,每秒允许查询次数由后台设定,在登录回报中传给动态库。该流控是session层面的,也就是说是每个链接内的查询次数受该流控,多个链接的查询次数互不影响,所以是可以多次CreateFtdcTraderApi创建多个session来实现1秒内多次查询

    3.3.2 CTP柜台系统流控

    • 请求数流控:该流控是针对单个session的所有请求(包括查询和交易)。该流控不会有错误信息或错误返回,具体设置只能询问期货公司
    • 报撤单流控:该流控指调用报单、撤单函数时每秒内允许的最大笔数,这两个函数流控是分开计算的。如果触发该流控,则会在相应的错误回调函数中返回“CTP:下单频率限制”。该流控是投资者InvestorID级别的,所以多开session也没法。如果策略高频,真触发该风控,那只能分账户来解决该问题了。不过目前该风控是分交易所和品种的,也就是说如果该值设6,那客户1秒内同时报上期所5笔,大商所5笔,是不会触发到该流控的。
    • 查询流控:查询比较耗时且占资源,所以除了在CTP底层动态库设置了流控,同样也在CTP后台设置了流控。如果触发后台的查询流控,则会回调OnRspError,并提示:“CTP:查询未就绪,请稍后重试”
    • 前置连接数流控:指在CTP中每秒允许的最大API连接请求数。如果超过该流控则会被主动断开连接,回调OnFrontDisconnected。因此用户如果发现自己的程序一连接前置就被断开,则除了版本问题外,有可能是遇到了连接数流控。该流控是针对不同前置地址的
    • 同一用户最大允许在线会话数:这是指同一个UserID在CTP中同时登录在线的最大允许session数,登录成功在线即算1个session,用其他客户端登录在线也计算在内。触发该流控则会在OnRspUserLogin回调中返回“CTP:用户在线会话超出上限”

    3.3.3 交易所流控

    一般是报单时可能会触发该流控,该流控是区分交易所的,有的交易所会有此流控,有的交易所没有,遇到得比较少。受到交易所流控后会触发OnRtnOrder,在StatusMsg中报“CTP:交易所每秒发送请求数超过许可数”或者“CTP:交易所未处理请求超过许可数”。

    展开全文
  • CTP API 使用范例 该项目主要是为帮助生成CTP API测试片段,降低CTP接口的学习难度。 目前仅支持在linux下用gcc编译使用。 安装CppHeaderParser sudo pip install ply sudo pip install CppHeaderParser 安装模板...
  • ctp-auto-trading:ctp交易系统
  • 原生python ctp

    2017-12-15 15:31:43
    原生python ctp 亲测可用,提供与ctp完全一致的接口。
  • 项目已不再维护,全部转移至CTP_Center CTP_DB collect CTP data & store into mongodb
  • ctp 开发库

    2016-10-20 19:33:59
    ctp 开发库
  • CTP API 20180109

    2018-07-28 21:30:14
    上期CTP API 最新版本 20180109 含期货和期权交易功能
  • ctp期货代码

    2019-01-25 20:30:45
    linux ctp期货源码,实测可用,带交易 策略,多线程实现,可后台运行
  • CTP Python API在Windows上由Python3.X系列互不兼容,所以分别编译了Python3.7和Python3.8的版本,在Windows上使用时请安装相应的Python版本,linux上无此问题。该API是用swig方法在官方C ++ API上编译得到的,...
  • vnpy_ctp vn.py框架的CTP底层接口
  • ctp2016新版

    2016-11-23 19:40:20
    期货程序化交易CTP接口
  • 项目已不再维护,全部转移至CTP_Center ctp for matlab mex Usage ####此版本在32位matlab R2014a编译通过,mex使用vs2013 C++。 ####具体参数参照文件注释。 make: 编译项目 server.ini中设置服务器,期商,账号,...
  • CTP结算接口

    2018-03-21 15:46:41
    基于上期所的CTP结算接口,是一个完整的代码demo。包含部署、架构文档等
  • CTP开发手册

    2015-06-07 20:13:33
    CTP开发手册,对于想从事CTP程序化开发的新手,可以参考一下。建议配合CTP官方文档一起看。
  • CTP资料

    2020-11-30 15:25:51
    CTP检查显示的结果如下图所示。 上图是一例右侧颈动脉重度狭窄患者的CTP检查结果,右侧大脑半球供血明显不足 脑组织血液循环动力学的参数: 局部血流速度(regiion cerbral bloodflow, rCBF) 局部脑血容积(region...

    CT脑灌注(CT perfusion,CTP)是评估脑组织血流灌注的一种有效的、直观的方式,是对DSA等血管形态检查的有效补充,主要用于缺血性脑血管病(脑梗塞、短暂性脑缺血发作、烟雾病等)的病情评估。

    扫描方案:第一步,头颅平扫,512*512(4*5mm),螺距(1mm),扫描范围从颅底到颅顶;第二步,灌注成像,在平扫所得的数幅图像中挑选目标层面定为灌注成像的扫描层面,扫描类型:电影(多帧对同一部位按时间序列顺次扫描);512*512(2*10mm),

    CT脑灌注成像的原理:通过追踪对比剂(碘)的位置,从而完成对选定层面的连续动态扫描,以获得所选层面内每一像素的时间-密度曲线(TDC),并根据此曲线通过不同的数据模型转换和计算机伪彩处理得到局部脑血流流量(CBF)、脑血流容量(CBV)、对比剂平均通过时间(MTT)和对比剂峰值时间等血流动力学参数和灌注图像表现,评价脑组织的灌注状态,是一种功能成像。由于脑梗死发生后,病灶脑组织性质发生一定的变化,所以对比剂通过各部分脑组织时,扩散的形态、密度也不尽相同,因此,扫描图像的像素密度也不尽相同。

    CT脑灌注成像使用的数学方法:

    非去卷积法:忽略对比剂的静脉流出,假定在没有对比剂外渗和消除对比剂再循环的情况下,即对比剂首过现象(对比剂由动脉进入毛细血管到达静脉之前一段时间内,没有对比剂进入静脉再次循环的现象)去计算BF、BV、MTT等参数。它又分为瞬间法和斜率法。
     (1)瞬间法(moments method)该法由 Axel 于 1980 年 [2]  首先提出,其理论基础是示踪剂稀释理论。他认为在没有对比剂外渗和消除对比剂再循环的情况下,可根据时间密度曲线计算出脑血容量(CBV )。
    (2)斜率法(slope method)这种方法由 Peters 于 1987 年 [6]  提出,他认为当时间小于最短通过时间时,所有注入的对比剂均留在脑血管内,其前提是假设对比剂从流入动脉开始到最短通过时间这期间没有静脉流出,即 CV(t)= 0,那么脑血流量 CBF=Q(t)最大初始斜率 /Ca(t)的峰值高度。

    去卷积数学模型:主要反映的是注射对比剂后组织器官中存留的对比剂随时间的变化量,其并不用对组织器官的血流动力学状况预先做一些人为的假设,而是根据实际情况综合考虑了流入动脉和流出静脉进行数学计算处理,因此更真实反映组织器官的内部情况。

    总之,非卷积数学方法概念相对简单,便于理解,但易低估BF,注射对比剂进要求注射流率大,增加了操作难度和危险性。而去卷积数学方法计算偏差小,注射速度要求不高(一般4~5ml/s),预计去卷积法将会被广泛应用。

    计算灌注值常用如下几种数学模型:最大斜率法、对比剂平衡原理、去卷积算法。
    其中以Miles等提出的最大斜率法原理最简单,使用也最为广范,但其对对比剂注射流率的高要求在临床应用中往往满足不了(一般要求在8~10ml/s以上),临床常规注射条件下(2~4ml/s)会导致对组织血流量的低估。
    去卷积原理对对比剂注射流率的要求不高,且其未对组织血流灌注模型作过多假设,所得结果与实际生理过程更接近。
    本研究试图以去卷积算法为标准,探讨最大斜率法在低流率注射条件下的准确性,并寻找其改良方法。

     

    CTP检查显示的结果如下图所示。

    上图是一例右侧颈动脉重度狭窄患者的CTP检查结果,右侧大脑半球供血明显不足

    脑组织血液循环动力学的参数:
    局部血流速度(region cerbral blood flow, rCBF)
    平均通过时间(mean transit time,MTT)
    局部脑血容积(region cerebral blood volume,rCBV)
    rCBV = rCBF * MTT

    BF(bloodflow):在单位时间内流经一定量组织血管结构的BF,单位为ml/100 m*min
    BV(blood volume):存在于一定量组织血管结构内的BV,单位为ml/100g
    MTT(Mean transit time):对比剂平均通过时间。血液流经血管结构(动脉、毛细血管、静脉窦、静脉)时,所经过的不同路径的平均时间。主要反应的是血液通过毛细血管的时间,单位为s。
    PS(permeability surface, PS):表面通透性。对比剂由毛细血管内皮进入细胞间隙的单向传送速率,单位为ml/100 g*min。综合了血脑屏障破坏这一因素。
    TTP(Time To Peak):对比剂峰值时间。TDC上从对比剂开始出现到对比剂达到峰值的时间。
    DT(Delay Time):Delay Time is the relative time of contrast arrival for tissue voxels.灌注不足缺血:TTP延长,MTT正常或延长,局部CBF减少,局部CBV正常或轻度减少。


    灌注不足缺血:TTP延长,MTT正常或延长,局部CBF减少,局部CBV正常或轻度减少。
    侧支循环形成:TTP、MTT延长,rCBF增加或者尚可,rCBV正常。
    脑梗死核心梗死区:TTP、MTT延长,rCBF明显减少,rCBV明显减少。
    脑梗死缺血半暗带:TTP、MTT延长,rCBF明显减少,rCBV正常或增加,与rCBF不匹配。
    血流再灌注:MTT、TTP缩短或正常,rCBF正常或轻度增加,rCBV增加。
    过度灌注:rCBF、rCBV均明显增加。
     

     

    Reference:

    百度百科:CT灌注成像
    CT灌注扫描(CTP)是什么检查?有什么作用?
    CT灌注成像ppt演示课件
    (阅读笔记)核磁灌注分析的39步骤
    (阅读笔记)CT灌注扫描时间
    CT脑灌注成像
    CT灌注成像的基本原理及脑部的临床应用

    医线动态‖CT室开展脑灌注成像(CTP)及头颈部动脉血管与脑灌注成像一站式检查(CTA+CTP) 

    磁共振脑(神经)“灌注”DSC技术

    CT脑灌注成像简介

    道阻且长,行则将至;行而不辍,未来可期~~~

     

    展开全文
  • CTP开发文档

    2017-11-15 22:43:51
    ctp api开发接口文档,各种调用说明。涵盖下单、交易、查询,持仓计算等内容
  • CTP 客户端开发指南

    2018-12-08 10:41:02
    CTP client 开发指南,开发CTP时的参考文档。各位金融狗的必备良品。
  • CTP接口文档

    2017-12-06 11:39:14
    CTP接口文档,现国内所有相关类似的交易系统都以此为模板,读懂了其他,期货交易接口都妥妥的
  • CTP封装接口

    2015-09-12 10:16:41
    通过这个封装后的CTP,其他语言也可以轻松实现ctp编程的了。
  • VC++期货CTP量化交易

    2021-07-02 10:26:51
    基于VC++环境下,利用上期CTP系统,开启期货量化交易之旅。 VC++开发环境的搭建、项目目录文件命名规范。通过登录界面学习MFC向导,按钮文本复选框搭建登录界面。CTP接口的介绍认识、CTP接口实现。 进度函数分层架构...
  • CTP-Trader 此项目基于几年前在一家私募时写的CTP交易机的简化版本,主要是用来实现其他语言下达交易信号,利用C++写的交易主机完成交易,包含两个部分: 1、交易主机; 2、下单 最近抽空重新整理了下,并借鉴github...
  • ctp stock file

    2015-04-25 15:25:54
    ctp stock example, simple
  • 使用CTP

    2019-01-20 18:44:01
    使用CTP从Github上下载行情交易 从Github上下载 github上下载wrapper 和 sample 行情 配置行情服务器地址 交易 配置交易服务器地址和账户密码

    从Github上下载

    github上下载wrapper 和 sample

    行情

    配置行情服务器地址

    交易

    配置交易服务器地址和账户密码

    展开全文
  • CTP客户端开发指南
  • ctp 开发文档

    2015-04-14 12:01:31
    CTP客户端开发指南, CTP新版银期转帐TradeApi使用说明, 综合交易平台交易API特别说明, api培训
  • CTP_SAMPLE.zip

    2019-08-03 10:35:43
    C++ CTP接口使用范例,适合初学者研究CTP的使用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,673
精华内容 5,869
关键字:

CTP