Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# PyCTP
CTP for Python

更新为监管版本

这是程序化期货交易上期ctp接口版本.将其包装为python版本. 支持python3
编译需求:vs2010/gcc
编译方法 python setup.py build
Expand Down
10 changes: 5 additions & 5 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,20 @@
optional['include_dirs'] = ['./v6.3.6_20160606_tradeapi_windows']
optional['library_dirs'] = ['./v6.3.6_20160606_tradeapi_windows']
if '64 bit' in platform.python_compiler():
optional['include_dirs'] = ['./v6.3.6_20160606_tradeapi64_windows']
optional['library_dirs'] = ['./v6.3.6_20160606_tradeapi64_windows']
optional['include_dirs'] = ['./v6.3.15_20190220_tradeapi64_se_windows','v6.3.15_20190220_clientdll64_windows']
optional['library_dirs'] = ['./v6.3.15_20190220_tradeapi64_se_windows','v6.3.15_20190220_clientdll64_windows']
# depend_dynamics = ['thostmduserapi.dll', 'thosttraderapi.dll']
argments = dict(name='PyCTP',
sources=sources,
language='c++',
libraries=['thostmduserapi', 'thosttraderapi'],
libraries=['thostmduserapi_se', 'thosttraderapi_se','WinDataCollect'],
depends=depends)
argments.update(optional)

setup(name='PyCTP',
version='1.0.1',
version='1.1.0',
description='CTP for Python',
long_description='CTP v6.3.6_20160606 for Python',
long_description='CTP v6.3.15_20190220 for Python',
author='Shi Zhuolin',
author_email='shizhuolin@hotmail.com',
url='http://www.pyctp.org/',
Expand Down
22 changes: 20 additions & 2 deletions src/PyCTP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,31 @@
#include "UserApiDataType.h"
#include "MdApi.h"
#include "TraderApi.h"
#include "DataCollect.h"

#define MODULE_NAME "PyCTP"
#define MODULE_DOC "CTP 201612191535 for Python author:http://www.shizhuolin.com shizhuolin@hotmail.com qq:383193853"
#define MODULE_DOC "CTP v6.3.15_20190220 for Python author:http://www.shizhuolin.com shizhuolin@hotmail.com qq:383193853"

///获取AES加密和RSA加密的终端信息
PyObject *METHOD_CTP_GetSystemInfo(PyObject *self, PyObject *args)
{
char pSystemInfo[270];
int nLen;
int ret = CTP_GetSystemInfo(pSystemInfo, nLen);
return Py_BuildValue("{s:y,s:i,s:i}",
"SystemInfo", pSystemInfo,
"nLen", nLen,
"ret", ret);
}

static PyMethodDef PyCTPMethods[] = {
{"CTP_GetSystemInfo", METHOD_CTP_GetSystemInfo, METH_NOARGS, "获取AES加密和RSA加密的终端信息"},
{nullptr} /* Sentinel */
};

//设置模块
#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef PyCTP_Module = {PyModuleDef_HEAD_INIT, MODULE_NAME, MODULE_DOC, -1};
static struct PyModuleDef PyCTP_Module = {PyModuleDef_HEAD_INIT, MODULE_NAME, MODULE_DOC, -1, PyCTPMethods};
#endif

//初始化模块
Expand Down
6 changes: 3 additions & 3 deletions src/UserApiStruct.cpp
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
#include "stdafx.h"
#include "UserApiStruct.h"

//字符编码转换
//数据类型转换(不包含数据结构转换)
//�ַ�����ת��
//��������ת��(���������ݽṹת��)
//char <=> c
//char* <=> y
//int <=> i
//short <=> h
//double<=> d
//bool => pybool => p => int(0/1)
//char*中文=>PyCTP_PyCTP_PyUnicode_DecodeGB2312
//char*����=>PyCTP_PyCTP_PyUnicode_DecodeGB2312
//struct <=> dict

#define PyCTP_PyDict_FromStruct_BEGIN(_in_name, _in_format) \
Expand Down
1 change: 1 addition & 0 deletions src/test_PyCTP.py
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,7 @@ def __main__():
Password = b''
ExchangeID = b'SHFE'
InstrumentID = b'cu1610'
print('终端信息:', PyCTP.CTP_GetSystemInfo())
trader = PyCTP_Trader.CreateFtdcTraderApi(b'_tmp_t_')
market = PyCTP_Market.CreateFtdcMdApi(b'_tmp_m_')
print('连接前置', trader.Connect(b'tcp://180.168.146.187:10000'))
Expand Down
24 changes: 24 additions & 0 deletions v6.3.15_20190220_api_clientdatacollectdll_linux64/DataCollect.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef DATA_COLLECT_H
#define DATA_COLLECT_H

#define DLL_EXPORT __declspec(dllexport)

#if defined(IS_WINCOLLECT_LIB) && defined(WIN32)
#ifdef LIB_DATA_COLLECT_API_EXPORT
#define DATA_COLLECT_API_EXPORT __declspec(dllexport)
#else
#define DATA_COLLECT_API_EXPORT __declspec(dllimport)
#endif
#else
#define DATA_COLLECT_API_EXPORT
#endif


///获取AES加密和RSA加密的终端信息
///@pSystemInfo 出参 空间需要调用者自己分配 至少270个字节
///@nLen 出参 获取到的采集信息的长度
///采集信息内可能含有‘\0’ 建议调用者使用内存复制
DATA_COLLECT_API_EXPORT int CTP_GetSystemInfo(char* pSystemInfo, int& nLen);


#endif
Binary file not shown.
Loading