py_ctp
上期技术期货交易 api 之 python 封装,实现接口调用。支持 windows(x86/x64) linux(x64).
更新
v6.7.10.20250422 全函数封装
ctp 接口封装由 ctp_generate 生成
安装
pip install py-ctp==6.7.10.20250425
示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__title__ = 'test py ctp of se'
__author__ = 'HaiFeng'
__mtime__ = '20190506'
from py_ctp.trade import CtpTrade
from py_ctp.quote import CtpQuote
from py_ctp.enums import *
import time
class TestTrade(object):
def __init__(self, addr: str, broker: str, investor: str, pwd: str, appid: str, auth_code: str, proc: str):
self.front = addr
self.broker = broker
self.investor = investor
self.pwd = pwd
self.appid = appid
self.authcode = auth_code
self.proc = proc
self.t = CtpTrade()
self.t.OnConnected = self.on_connect
self.t.OnUserLogin = lambda o, x: print('Trade logon:', x)
self.t.OnDisConnected = lambda o, x: print(x)
self.t.OnRtnNotice = lambda obj, time, msg: print(f'OnNotice: {time}:{msg}')
self.t.OnErrRtnQuote = lambda obj, quote, info: None
self.t.OnErrRtnQuoteInsert = lambda obj, o: None
self.t.OnOrder = lambda obj, o: None
self.t.OnErrOrder = lambda obj, f, info: None
self.t.OnTrade = lambda obj, o: None
self.t.OnInstrumentStatus = lambda obj, inst, stat: None
def on_connect(self, obj):
self.t.ReqUserLogin(self.investor, self.pwd, self.broker, self.proc, self.appid, self.authcode)
def run(self):
self.t.ReqConnect(self.front)
# self.t.ReqConnect('tcp://192.168.52.4:41205')
def release(self):
self.t.ReqUserLogout()
class TestQuote(object):
"""TestQuote"""
def __init__(self, addr: str, broker: str, investor: str, pwd: str):
""""""
self.front = addr
self.broker = broker
self.investor = investor
self.pwd = pwd
self.q = CtpQuote()
self.q.OnConnected = lambda x: self.q.ReqUserLogin(self.investor, self.pwd, self.broker)
self.q.OnUserLogin = lambda o, i: self.q.ReqSubscribeMarketData('rb2409')
def run(self):
self.q.ReqConnect(self.front)
def release(self):
self.q.ReqUserLogout()
if __name__ == "__main__":
front_trade = 'tcp://180.168.146.187:10202'
front_quote = 'tcp://180.168.146.187:10212'
broker = '9999'
investor = ''
pwd = ''
appid = ''
auth_code = ''
proc = ''
if investor == '':
investor = input('invesotr:')
pwd = input('password:')
appid = input('appid:')
auth_code = input('auth code:')
proc = input('product info:')
tt = TestTrade(front_trade, broker, investor, pwd, appid, auth_code, proc)
发布到 PyPI
从 2023 年起,PyPI 不再支持用户名/密码认证,必须使用 API Token 或 Trusted Publishers。
方法一:使用 API Token(推荐)
- 访问 PyPI 并登录
- 进入 Account Settings 页面
- 找到 "API tokens" 部分并点击 "Add API token"
- 为 Token 添加描述(例如:py_ctp release)
- 选择作用域(Scope),通常选择 "Upload packages"
- 点击 "Add token" 并复制生成的 Token
有了 API Token 后,有两种使用方式:
选项 1:使用 .pypirc 配置文件
创建或编辑 ~/.pypirc 文件:
[pypi]
username = __token__
password = pypi-*******************************
将 pypi-******************************* 替换为你刚刚生成的实际 API Token。
然后正常执行发布命令:
rm dist -rf && python setup.py sdist && twine upload dist/*
选项 2:使用命令行参数
rm dist -rf && python setup.py sdist && twine upload -u __token__ -p pypi-******************************* dist/*
方法二:使用 Trusted Publishers(适用于 GitHub Actions 等 CI/CD)
如果你使用 GitHub Actions 或其他 CI/CD 系统,可以配置 Trusted Publishers 实现自动发布。
详细信息请参考官方文档:
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file py_ctp-6.7.10.20250425.tar.gz.
File metadata
- Download URL: py_ctp-6.7.10.20250425.tar.gz
- Upload date:
- Size: 6.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9db3cbe0dd7d494ac096f73797bba9c0da8b9306ba52ca2641acb0dc55ed7edc
|
|
| MD5 |
1e04216a9c686bb92ff35ac997d10e7c
|
|
| BLAKE2b-256 |
0421c28db17d2f5ce9462d8b437e4186666e939fcad8b93e9fab1af235556351
|