通知设置 新通知
ptrade运行的策略全部不见了 | 国金证券
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 65 次浏览 • 2026-08-14 12:06
正常运行和已停止的都不见了。
在回测页面里面能看到之前的写的策略。
客服回应说 服务器内存不足造成,重启环境之后,上报给他们可以找回。
不过问题是策略已经停止了,找回正常运行的策略也是要自己启动,还不如我自己重新新建策略,重新启动得了。
所以使用ptrade,最后把平时的输出日志保存为文件,自动存储到研究的jupyter notebook下面。
这样就能够在策略重启,无故消失的情况下,找回丢失的日志。
查看全部
正常运行和已停止的都不见了。
在回测页面里面能看到之前的写的策略。
客服回应说 服务器内存不足造成,重启环境之后,上报给他们可以找回。
不过问题是策略已经停止了,找回正常运行的策略也是要自己启动,还不如我自己重新新建策略,重新启动得了。
所以使用ptrade,最后把平时的输出日志保存为文件,自动存储到研究的jupyter notebook下面。
这样就能够在策略重启,无故消失的情况下,找回丢失的日志。
华泰QMT下载 | 华泰支持迅投QMT了
QMT • 李魔佛 发表了文章 • 0 个评论 • 160 次浏览 • 2026-08-03 10:41
华泰迅投QMT系统是专门为专业交易客户打造的集合策略投研、交易执行、行情展示、风控管理为一体的综合投研交易终端。策略研究包括数据管理、策略研究、策略风控等功能;支持组合交易、算法交易、对冲交易、机构风格下单等高效的交易功能,满足不同投资者的多样化交易需求。
QMT下载地址:
https://inst.htsc.com/helpOnline?productId=60&moduleCode=1
它支持自定义编程模块,可以自己编程下单。
接口文档:https://qmt.ptradeapi.com
查看全部
华泰迅投QMT系统是专门为专业交易客户打造的集合策略投研、交易执行、行情展示、风控管理为一体的综合投研交易终端。策略研究包括数据管理、策略研究、策略风控等功能;支持组合交易、算法交易、对冲交易、机构风格下单等高效的交易功能,满足不同投资者的多样化交易需求。
QMT下载地址:
https://inst.htsc.com/helpOnline?productId=60&moduleCode=1
它支持自定义编程模块,可以自己编程下单。
接口文档:https://qmt.ptradeapi.com
miniQMT停用后,外部调用QMT内部函数的路子
QMT • 李魔佛 发表了文章 • 0 个评论 • 714 次浏览 • 2026-07-02 08:56
但办法总比困难多,其中一个方法是在QMT里开一个HTTP的REST API服务,外部可以调用这个HTTP API,达到下单,撤单,查询持仓,获取行情等所有在QMT下所需要的功能。
目前QMT内置的python版本为3.6.8,你可以在里面安装各种第三方web框架,fastapi,django,flask等。而QMT原来内置了tornado,就不需要额外安装其他第三方库了。文末提供完整源码地址。
导入所需要的库
from tornado.web import Application, RequestHandler, HTTPError
from tornado.ioloop import IOLoop
程序核心就是在QMT的init函数里面就启动我们的HTTP服务,端口PORT随意。
PORT = 10086
ACCOUNT_ID = '你的QMT账号'
def init(ContextInfo):
try:
ContextInfo.accountID = ACCOUNT_ID
app = make_app()
app.ContextInfo = ContextInfo
app.accountID = ContextInfo.accountID
app.listen(PORT, address='0.0.0.0') # 如果只在本地网络,可以设置为127.0.0.1
logger.info(f"QMT HTTP Server 启动于 http://0.0.0.0:{PORT} (全部API已加载)")
IOLoop.current().start()
except Exception as e:
logger.exception(f"server start failed: {e}")
make_app里提供的注册路由。
============= 路由注册 =============
def make_app():
return Application([
# 原有兼容路由
(r"/api/holding", HoldingHandler),
(r"/api/money/total", TotalMoneyHandler),
(r"/api/money/available", AvailableMoneyHandler),
(r"/api/order/buy", BuyHandler),
(r"/api/order/sell", SellHandler),
(r"/api/order/deal", DealHandler),
..... 省略若干
# 数据查询
(r"/api/data/stock_name", StockNameHandler),
(r"/api/data/open_date", OpenDateHandler),
(r"/api/data/last_volume", LastVolumeHandler),
(r"/api/data/bar_timetag", BarTimetagHandler),
(r"/api/data/tick_timetag", TickTimetagHandler),
(r"/api/data/sector", SectorHandler),
(r"/api/data/industry", IndustryHandler),
(r"/api/data/stock_list_in_sector", StockListInSectorHandler),
(r"/api/data/history_data", HistoryDataHandler),
(r"/api/data/market_data", MarketDataHandler),
(r"/api/data/market_data_ex", MarketDataExHandler),
(r"/api/data/full_tick", FullTickHandler),
每个API实现一个原QMT的函数,所以有非常多的API端点。
当然这些函数我都让AI帮我对着QMT的文档实现的。
接口文档:https://qmt.ptradeapi.com/QMT_Python_API_Doc.html
然后FullTickHandler的实现如下:
# ContextInfo.get_full_tick() - 获取分笔数据
class FullTickHandler(BaseHandler):
def post(self):
data = json.loads(self.request.body)
stocks = data.get('stocks', '')
if not stocks:
raise HTTPError(400, "need args stocks")
code_list = [s.strip() for s in stocks.split(',')]
ret = safe_call(self.ctx().get_full_tick, code_list)
if not ret:
raise HTTPError(500, "获取分笔行情失败")
self.write(json.dumps(ret, ensure_ascii=False, default=str))
这里核心就是执行QMT的get_full_tick,把数据作为response返回。请求使用POST,传入股票代码,返回股票tick数据。
在QMT里启动后,等待外部程序调用。
上面是把完整代码复制到QMT里,然后在实盘里面启动。
然后在你外部的程序里面写个简单的HTTP请求,就能调用QMT里面的API了。
如果你的电脑有公网IP,还可以不同电脑去远程调用QMT里面的函数,
这里加入一个任意TOKEN,和QMT里面一致就行,这样请求的header带上,避免其他人调用你的API操作你账号。如果只在本地运行,可以把最开始的监听地址0.0.0.0改为127.0.0.1
TOKEN = "123456789"
class QMTClient:
def __init__(self, base_url="http://127.0.0.1:10086"):
self.base = base_url
self.session = requests.Session()
self.session.headers.update({"Content-Type": "application/json; charset=utf-8"})
self.session.headers.update({"X-Token": TOKEN})
def _req(self, method, path, **kwargs):
url = f"{self.base}{path}"
try:
resp = self.session.request(method, url, timeout=10, **kwargs)
resp.raise_for_status()
return resp.json()
except requests.RequestException as e:
return {"error": str(e), "status_code": getattr(e.response, 'status_code', 500)}
def get_full_tick(self, stocks):
return self._req('POST', f'/api/data/full_tick', json={
"stocks": stocks})
client = QMTClient()
print(client.get_full_tick('600000.SH'))
client = QMTClient()
print(client.get_full_tick('600000.SH'))
QMT里可以看到对应的调用记录
外部程序的返回的结果:
然后按葫芦画瓢,让AI对着文档把剩余的函数都实现了即可。
比如要下单功能,就实现
# passorder(23) - 买入下单(封装passorder)
class BuyHandler(BaseHandler):
def post(self):
try:
data = json.loads(self.request.body)
stock = data['stock']
price = float(data['price'])
volume = int(data['volume'])
pr_type = data.get('prType', 11)
order_ref = passorder(23, 1101, self.acc(), stock, pr_type, price, volume, 'qmt', 2, self.ctx())
self.write(json.dumps({
"status": "success", "action": "buy", "stock": stock,
"order_ref": str(order_ref) if order_ref else"unknown"
}, ensure_ascii=False))
except Exception as e:
logger.exception("买入下单异常")
raise HTTPError(400, f"下单失败: {str(e)}")
然后在外部你的策略代码里面加入:
client = QMTClient()
client.buy_stock("600000.SZ", 6.80, 100)
即可完成下单,然后可以通过API查询持仓,获取最新状态。这样就不用把你策略嵌入到QMT里。
完整源码在github: https://github.com/Rockyzsu/QMT,(不确定是否AI封装的函数全部正确,会偶尔更新一下)
或者关注公众号"可转债量化分析",后台回复关键字:QMT封装
查看全部
但办法总比困难多,其中一个方法是在QMT里开一个HTTP的REST API服务,外部可以调用这个HTTP API,达到下单,撤单,查询持仓,获取行情等所有在QMT下所需要的功能。
目前QMT内置的python版本为3.6.8,你可以在里面安装各种第三方web框架,fastapi,django,flask等。而QMT原来内置了tornado,就不需要额外安装其他第三方库了。文末提供完整源码地址。
导入所需要的库
from tornado.web import Application, RequestHandler, HTTPError
from tornado.ioloop import IOLoop
程序核心就是在QMT的init函数里面就启动我们的HTTP服务,端口PORT随意。
PORT = 10086
ACCOUNT_ID = '你的QMT账号'
def init(ContextInfo):
try:
ContextInfo.accountID = ACCOUNT_ID
app = make_app()
app.ContextInfo = ContextInfo
app.accountID = ContextInfo.accountID
app.listen(PORT, address='0.0.0.0') # 如果只在本地网络,可以设置为127.0.0.1
logger.info(f"QMT HTTP Server 启动于 http://0.0.0.0:{PORT} (全部API已加载)")
IOLoop.current().start()
except Exception as e:
logger.exception(f"server start failed: {e}")
make_app里提供的注册路由。
============= 路由注册 =============
def make_app():
return Application([
# 原有兼容路由
(r"/api/holding", HoldingHandler),
(r"/api/money/total", TotalMoneyHandler),
(r"/api/money/available", AvailableMoneyHandler),
(r"/api/order/buy", BuyHandler),
(r"/api/order/sell", SellHandler),
(r"/api/order/deal", DealHandler),
..... 省略若干
# 数据查询
(r"/api/data/stock_name", StockNameHandler),
(r"/api/data/open_date", OpenDateHandler),
(r"/api/data/last_volume", LastVolumeHandler),
(r"/api/data/bar_timetag", BarTimetagHandler),
(r"/api/data/tick_timetag", TickTimetagHandler),
(r"/api/data/sector", SectorHandler),
(r"/api/data/industry", IndustryHandler),
(r"/api/data/stock_list_in_sector", StockListInSectorHandler),
(r"/api/data/history_data", HistoryDataHandler),
(r"/api/data/market_data", MarketDataHandler),
(r"/api/data/market_data_ex", MarketDataExHandler),
(r"/api/data/full_tick", FullTickHandler),
每个API实现一个原QMT的函数,所以有非常多的API端点。
当然这些函数我都让AI帮我对着QMT的文档实现的。
接口文档:https://qmt.ptradeapi.com/QMT_Python_API_Doc.html
然后FullTickHandler的实现如下:
# ContextInfo.get_full_tick() - 获取分笔数据
class FullTickHandler(BaseHandler):
def post(self):
data = json.loads(self.request.body)
stocks = data.get('stocks', '')
if not stocks:
raise HTTPError(400, "need args stocks")
code_list = [s.strip() for s in stocks.split(',')]
ret = safe_call(self.ctx().get_full_tick, code_list)
if not ret:
raise HTTPError(500, "获取分笔行情失败")
self.write(json.dumps(ret, ensure_ascii=False, default=str))
这里核心就是执行QMT的get_full_tick,把数据作为response返回。请求使用POST,传入股票代码,返回股票tick数据。
在QMT里启动后,等待外部程序调用。
上面是把完整代码复制到QMT里,然后在实盘里面启动。
然后在你外部的程序里面写个简单的HTTP请求,就能调用QMT里面的API了。
如果你的电脑有公网IP,还可以不同电脑去远程调用QMT里面的函数,
这里加入一个任意TOKEN,和QMT里面一致就行,这样请求的header带上,避免其他人调用你的API操作你账号。如果只在本地运行,可以把最开始的监听地址0.0.0.0改为127.0.0.1
TOKEN = "123456789"
class QMTClient:
def __init__(self, base_url="http://127.0.0.1:10086"):
self.base = base_url
self.session = requests.Session()
self.session.headers.update({"Content-Type": "application/json; charset=utf-8"})
self.session.headers.update({"X-Token": TOKEN})
def _req(self, method, path, **kwargs):
url = f"{self.base}{path}"
try:
resp = self.session.request(method, url, timeout=10, **kwargs)
resp.raise_for_status()
return resp.json()
except requests.RequestException as e:
return {"error": str(e), "status_code": getattr(e.response, 'status_code', 500)}
def get_full_tick(self, stocks):
return self._req('POST', f'/api/data/full_tick', json={
"stocks": stocks})
client = QMTClient()
print(client.get_full_tick('600000.SH'))
client = QMTClient()
print(client.get_full_tick('600000.SH'))
QMT里可以看到对应的调用记录
外部程序的返回的结果:
然后按葫芦画瓢,让AI对着文档把剩余的函数都实现了即可。
比如要下单功能,就实现
# passorder(23) - 买入下单(封装passorder)
class BuyHandler(BaseHandler):
def post(self):
try:
data = json.loads(self.request.body)
stock = data['stock']
price = float(data['price'])
volume = int(data['volume'])
pr_type = data.get('prType', 11)
order_ref = passorder(23, 1101, self.acc(), stock, pr_type, price, volume, 'qmt', 2, self.ctx())
self.write(json.dumps({
"status": "success", "action": "buy", "stock": stock,
"order_ref": str(order_ref) if order_ref else"unknown"
}, ensure_ascii=False))
except Exception as e:
logger.exception("买入下单异常")
raise HTTPError(400, f"下单失败: {str(e)}")
然后在外部你的策略代码里面加入:
client = QMTClient()
client.buy_stock("600000.SZ", 6.80, 100)
即可完成下单,然后可以通过API查询持仓,获取最新状态。这样就不用把你策略嵌入到QMT里。
完整源码在github: https://github.com/Rockyzsu/QMT,(不确定是否AI封装的函数全部正确,会偶尔更新一下)
或者关注公众号"可转债量化分析",后台回复关键字:QMT封装
miniQMT要被暂停使用了吗
QMT • 李魔佛 发表了文章 • 0 个评论 • 516 次浏览 • 2026-07-01 18:26
国X证券的通知:
但其他券商没有收到这个消息,所以其他券商依然能够正常使用。
从反馈的情况来看,是国X证券大面积推广这个miniQMT,导致同行反馈,被举报导致的。
其他规模不大的券商目前来看依然是安全的。
查看全部
ptrade支持redis吗
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 290 次浏览 • 2026-06-25 13:49
在ptrade的研究页面里面,输入:
import redis就是直接报错:
/usr/local/python3.5/lib/python3.5/site-packages/fly/data/quotation.py:133: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-92da440a6abd> in <module>()
3 except Exception as e:
4 from fly.data.quotation import *
----> 5 import redis
ImportError: No module named 'redis'
查看全部
在ptrade的研究页面里面,输入:
import redis就是直接报错:
/usr/local/python3.5/lib/python3.5/site-packages/fly/data/quotation.py:133: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-92da440a6abd> in <module>()
3 except Exception as e:
4 from fly.data.quotation import *
----> 5 import redis
ImportError: No module named 'redis'
国盛ptrade的版本升级到3.11,但无法连接外部网络了 | 最新更新:可以申请访问
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 356 次浏览 • 2026-06-24 20:52
最新更新,现在又能够申请访问了,
不少人说国盛的ptrade内置python版本低,是3.5的。
现在迎来了大版本升级,新开户的用户会升级到内置python3.11,运行效率会有相应的提高。
但坏消息是,原本支持的访问外网的功能会被移除。也就是新用户只能使用内置的ptrade数据。没法访问自己的数据库,也没法爬虫,没法接收自己的信号。
requests请求qq.com 超时:
后续更新:
可以申购额外的访问权限,只需要提供下你要访问的域名地址或者IP端口。比如你的mysql服务器ip,既可以让ptrade访问你的服务器。从而获取数据。
需要开通国盛ptrade的,可以扫码联系:
查看全部
最新更新,现在又能够申请访问了,
不少人说国盛的ptrade内置python版本低,是3.5的。
现在迎来了大版本升级,新开户的用户会升级到内置python3.11,运行效率会有相应的提高。
但坏消息是,原本支持的访问外网的功能会被移除。也就是新用户只能使用内置的ptrade数据。没法访问自己的数据库,也没法爬虫,没法接收自己的信号。
requests请求qq.com 超时:
后续更新:
可以申购额外的访问权限,只需要提供下你要访问的域名地址或者IP端口。比如你的mysql服务器ip,既可以让ptrade访问你的服务器。从而获取数据。
需要开通国盛ptrade的,可以扫码联系:

华泰证券支持QMT和Ptrade吗?
量化交易 • 李魔佛 发表了文章 • 0 个评论 • 800 次浏览 • 2026-04-28 17:21
已更新。
目前华泰新增支持QMT。门槛入金50w。
### 2026-05 发布的 ####不支持。
目前为止,华泰没有Ptrade和QMT,华泰的量化平台用的是Matic。
好多AI读取的垃圾语料, 污染了返回结果.
里面有个模块MQuant。用于编写量化程序,支持python和C++
matic文档:
https://github.com/Rockyzsu/matic.git
需要开通的朋友可以扫码关注公众号,获取开通联系方式:
查看全部
已更新。
目前华泰新增支持QMT。门槛入金50w。
### 2026-05 发布的 ####不支持。
目前为止,华泰没有Ptrade和QMT,华泰的量化平台用的是Matic。
好多AI读取的垃圾语料, 污染了返回结果.
里面有个模块MQuant。用于编写量化程序,支持python和C++
matic文档:
https://github.com/Rockyzsu/matic.git
需要开通的朋友可以扫码关注公众号,获取开通联系方式:

湘财证券开通ptrade门槛
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1343 次浏览 • 2026-03-04 16:56
其文档地址: http://tushare.xcsc.com:7173/document/2
所以湘财证券也有内置的免费的tushare,
import xcsc_tushare as ts 它不限制积分,还可以免费一直使用。
xcsc tushare的数据相比官网的tushare会少一些数据。比如爬虫部分的数据。
目前湘财的费率是
股票 万0.854
ETF/LOF 万0.5
可转债 万1开通ptrade的门槛是入金1w,足够低。
目前湘财证券的ptrade是基于python3.11的最新版本。
需要的朋友可以咨询公众号: 查看全部
其文档地址: http://tushare.xcsc.com:7173/document/2
所以湘财证券也有内置的免费的tushare,
import xcsc_tushare as ts它不限制积分,还可以免费一直使用。
xcsc tushare的数据相比官网的tushare会少一些数据。比如爬虫部分的数据。
目前湘财的费率是
股票 万0.854开通ptrade的门槛是入金1w,足够低。
ETF/LOF 万0.5
可转债 万1
目前湘财证券的ptrade是基于python3.11的最新版本。
需要的朋友可以咨询公众号:
ptrade上 2个策略A和B同时运行,A策略成交时触发的回调事件会被B策略捕获吗?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 986 次浏览 • 2026-02-12 01:10
那么如果A策略有股票成交,那么会触发A策略里面的成交回调函数on_trade_response,但B策略里面的on_trade_response 不会捕获这个成交所触发的成交回调。
更新关于ptrade的解答,可以关注:
https://ptradeapi.com/hub/data/qa_data.html
可以关注公众号或者星球。 查看全部
那么如果A策略有股票成交,那么会触发A策略里面的成交回调函数on_trade_response,但B策略里面的on_trade_response 不会捕获这个成交所触发的成交回调。
更新关于ptrade的解答,可以关注:
https://ptradeapi.com/hub/data/qa_data.html
可以关注公众号或者星球。
代理工具Proxifier注册码 生成脚本
网络安全 • 李魔佛 发表了文章 • 0 个评论 • 1054 次浏览 • 2026-01-12 01:45
如果你的anti-gravity无法登录,可以使用这个软件试试。
但过了30天的试用,会变成收费的。
GitHub上有个python包,可以直接生成注册码的。
$ python Proxifier_Keygen.py -v setup
CLOT5-J3GYK-VGPYE-BDPMN-WKWMU
$ python Proxifier_Keygen.py -v portable
NY8VX-Z2NH2-TFXWY-IL5YC-GARRM
$ python Proxifier_Keygen.py -v mac
57J8Z-D2QD5-A37WU-LEG4E-43WYH
然后使用上面的注册码直接注册:
成功!
需要的朋友可以直接下载:
https://github.com/y9nhjy/Proxifier-Keygen/
亲测好用,能用! 查看全部
如果你的anti-gravity无法登录,可以使用这个软件试试。
但过了30天的试用,会变成收费的。
GitHub上有个python包,可以直接生成注册码的。
$ python Proxifier_Keygen.py -v setup
CLOT5-J3GYK-VGPYE-BDPMN-WKWMU
$ python Proxifier_Keygen.py -v portable
NY8VX-Z2NH2-TFXWY-IL5YC-GARRM
$ python Proxifier_Keygen.py -v mac
57J8Z-D2QD5-A37WU-LEG4E-43WYH
然后使用上面的注册码直接注册:
成功!
需要的朋友可以直接下载:
https://github.com/y9nhjy/Proxifier-Keygen/
亲测好用,能用!
山西证券开通ptrade门槛 万0.854免5 | 山西证券ptrade下载地址
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1614 次浏览 • 2025-12-27 19:00
主要python3.11移除了pandas里的panel格式。导致之前ptrade获取到的3维数据不再兼容当前的最新版本。
山西证券ptrade下载地址:
山西证券ptrade实盘下载链接
山西证券ptrade仿真模拟下载链接
其实,个人感觉,现在的ptrade更加好用,不用再考虑不同的数据输入,来判读不同的返回结果。
get_history 函数,无论什么情况,都是返回dataframe格式。字段也是完全统一了
使用 sub_df = df[df['code']=code]
就能获取不同的输入格式。
换以前,如果传入的是一个字段 get_history(fields='close') 和get_history(fields=['low','close'])
返回的格式还得区分处理。
现在统一了,更加好用了。
目前山西证券ptrade开通门槛很低,入金5w就可以开通,而且费率是免5,万0.854免5,0.1起步,目前这么多券商里面是属于最低的了。
需要的朋友可以联系微信公众号开通:
查看全部
主要python3.11移除了pandas里的panel格式。导致之前ptrade获取到的3维数据不再兼容当前的最新版本。
山西证券ptrade下载地址:
山西证券ptrade实盘下载链接
山西证券ptrade仿真模拟下载链接
其实,个人感觉,现在的ptrade更加好用,不用再考虑不同的数据输入,来判读不同的返回结果。
get_history 函数,无论什么情况,都是返回dataframe格式。字段也是完全统一了
使用 sub_df = df[df['code']=code]
就能获取不同的输入格式。
换以前,如果传入的是一个字段 get_history(fields='close') 和get_history(fields=['low','close'])
返回的格式还得区分处理。
现在统一了,更加好用了。
目前山西证券ptrade开通门槛很低,入金5w就可以开通,而且费率是免5,万0.854免5,0.1起步,目前这么多券商里面是属于最低的了。
需要的朋友可以联系微信公众号开通:

东莞证券ptrade的编程功能模块被移除了
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1503 次浏览 • 2025-11-23 13:17
本来门槛不太高,作为备用也是不错的.
也不知道上面领导怎么想的. 把编程模块移走了.
目前就剩ptrade上内置的一些基础功能
无法通过python编程实现自己的自定义策略.
有点可惜.
查看全部
ubuntu24.04的内置的ibus中文智能输入法好垃圾
Linux • 李魔佛 发表了文章 • 0 个评论 • 1261 次浏览 • 2025-11-22 23:34
搜狗输入法不知道ubuntu24.04的wayland桌面, 因为ubuntu240.4默认桌面不再是xorg.
如果需要用搜狗输入法,就必须是切换到xorg.
但是切换到xorg,系统里的chrome直接打不开, 需要对chrome进行降级...
无语了.
只能切换回去,用内置的智能中文输入法.
这输入法过于脑残.... 不太适合长句子, 不适合经常打错拼音的人...
查看全部
ptrade不支持reits,连持仓已有的也读取不出来
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1268 次浏览 • 2025-11-18 12:45
然后调用get_positions获取持仓,居然为空。
开始以为我程序代码后缀有问题,百思不得其解,反复检查之后,突然想起目前的ptrade不支持reits品种。
但没想到居然这个持仓代码都读取不到。。。
查看全部
然后调用get_positions获取持仓,居然为空。
开始以为我程序代码后缀有问题,百思不得其解,反复检查之后,突然想起目前的ptrade不支持reits品种。
但没想到居然这个持仓代码都读取不到。。。
指数回来了,收益没回来!十年前 4000 点买入,多少股票至今没回本?
股票 • 李魔佛 发表了文章 • 0 个评论 • 1629 次浏览 • 2025-10-29 08:58
可惜只持续了40分钟,收盘时跌回到3988点。
不过本轮并不是全面的牛市,没在暴涨板块的股民自嘲:
8000点的农行,6000点的科技,4000点的红利,剩下的全是2000点的难兄难弟。
十年光阴荏苒,上证指数上一次收盘价超过 4000 点是在 2015 年 7 月 24 日,当日收于 4070.91 点。
指数重回4000点,而又有多少股票的股价能够重回十年前4000点的时候股价呢?或者说还有多少股票依然还在以前4000点的时候的股价还低呢?
问了一下豆包,deepseek这个问题,结果说找不到现成的数据,无法分析。
迅速在ptrade上写个代码查询一下。
2015 年 7 月 24 日 市场有有沪深股票2783只,而当时的2783只股票今天依然在市场交易的有2567只。大约有216只股票退市(少数是合并、收购,大部分原因是退市)。
也就是十年前扔飞镖随便买一只股票,会有7.7%的概率买到退市股,并且是那种目前彻底退出的沪深板块,流入到退市板块。
下面列出期间的退市股(含收购合并),数据较多,对细节不感兴趣的可直接滚动到最后。
依然在交易的排除掉7只停牌的股票,有2559只存续交易的股票。
跌幅榜的排名。
不少跌幅达到80%-90%,不少是当时的牛股,全通交易,怡亚通,ST易购(苏宁易购),康美药业,万达电影等等。
跌幅为0的排到1662名了。数据太长,贴不下了。
也就是上证指数回到上一次的4000点,有1661只个股依然没有回到当时的股价,占比达到了64.9%。(注意,上面的股价是前复权的价格,是已经包含了分红的全收益价格。)
看完这个数据整个人都不太好受了,股民的十年青春在股海沉浮,最终超过一半的个股还没有回到牛市的起点。 查看全部
可惜只持续了40分钟,收盘时跌回到3988点。
不过本轮并不是全面的牛市,没在暴涨板块的股民自嘲:
8000点的农行,6000点的科技,4000点的红利,剩下的全是2000点的难兄难弟。
十年光阴荏苒,上证指数上一次收盘价超过 4000 点是在 2015 年 7 月 24 日,当日收于 4070.91 点。
指数重回4000点,而又有多少股票的股价能够重回十年前4000点的时候股价呢?或者说还有多少股票依然还在以前4000点的时候的股价还低呢?
问了一下豆包,deepseek这个问题,结果说找不到现成的数据,无法分析。
迅速在ptrade上写个代码查询一下。
2015 年 7 月 24 日 市场有有沪深股票2783只,而当时的2783只股票今天依然在市场交易的有2567只。大约有216只股票退市(少数是合并、收购,大部分原因是退市)。
也就是十年前扔飞镖随便买一只股票,会有7.7%的概率买到退市股,并且是那种目前彻底退出的沪深板块,流入到退市板块。
下面列出期间的退市股(含收购合并),数据较多,对细节不感兴趣的可直接滚动到最后。
依然在交易的排除掉7只停牌的股票,有2559只存续交易的股票。
跌幅榜的排名。
不少跌幅达到80%-90%,不少是当时的牛股,全通交易,怡亚通,ST易购(苏宁易购),康美药业,万达电影等等。
跌幅为0的排到1662名了。数据太长,贴不下了。
也就是上证指数回到上一次的4000点,有1661只个股依然没有回到当时的股价,占比达到了64.9%。(注意,上面的股价是前复权的价格,是已经包含了分红的全收益价格。)
看完这个数据整个人都不太好受了,股民的十年青春在股海沉浮,最终超过一半的个股还没有回到牛市的起点。
东北证券QMT miniQMT (NET专业版)万0.854免5
QMT • 李魔佛 发表了文章 • 0 个评论 • 4263 次浏览 • 2025-10-16 23:05
东北证券的qmt名称叫NET专业版。
东北证券的QMT支持python和vba 两种语言。
开通后可加入量化技术群。
扫码联系开通。 查看全部
ptrade支持北交所股票量化交易吗?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1779 次浏览 • 2025-10-09 11:36
文档里面搜不到内容,股票后缀使用 北交所代码+ SS后缀,或者 .BJ 后缀,获取不到任何的数据。
ptrade api 文档:
https://ptradeapi.com
查看全部
文档里面搜不到内容,股票后缀使用 北交所代码+ SS后缀,或者 .BJ 后缀,获取不到任何的数据。
ptrade api 文档:
https://ptradeapi.com
山西证券Ptrade 万一免五开户
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2022 次浏览 • 2025-09-26 01:44
本身山西证券的ptrade开通门槛不高, 入金5万就能开通ptrade,永久使用,不收费.
不过默认费率比较高, 也不免5.
不过入金5w后,是可以调到万一免5的.
因为高顿教育的量化课程使用的是山西证券作为 实例,所以也有不少的群众基础.
需要的可以扫码关注开通.
查看全部
Ptrade ETF轮动,收益率秒杀白云飞
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2016 次浏览 • 2025-09-11 20:07
如果抛去924行情,和今年的创业板+科创板,CPO,芯片,那么它的收益率是负的。漫长的3年回撤期,除非是闲钱很久不用的钱,否则谁也无法忍受这么长的回撤。
而ETF日,周净增轮动+动量+板块温度计+评分因子,可以做到超高的收益率。
使用ptrade进行回测。
使用ptrade进行实盘。
TBC
查看全部
ptrade计算EMA指标,对比同花顺
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2220 次浏览 • 2025-09-01 23:04
初始值计算:
标准 EMA:以周期内的第一个 SMA(简单移动平均)作为初始值
同花顺 EMA:直接以第一根 K 线的收盘价作为初始 EMA 值
计算逻辑:
两者在后续递推计算上一致,均使用公式:
plaintext
EMA(今日) = (2/(周期+1)) × 收盘价(今日) + (1-2/(周期+1)) × EMA(昨日)
实际影响:
由于初始值不同,在计算初期(小于周期长度的 K 线数量时),两种方法结果差异较大;随着数据增多,差异会逐渐缩小。
使用时只需将你的收盘价数据整理成 pandas Series 格式,调用该函数即可得到与同花顺软件完全一致的 EMA 计算结果,便于策略回测和指标对比。
import pandas as pd
def tonghuashun_ema(close_series, period):
"""
按照同花顺的算法计算EMA指标
参数:
close_series: pd.Series,包含收盘价数据,索引为日期
period: int,EMA周期(如5、10、50等)
返回:
pd.Series,计算得到的EMA指标序列
"""
if len(close_series) < 1:
return pd.Series(dtype='float64')
# 平滑系数
alpha = 2 / (period + 1)
# 初始化EMA序列
ema = pd.Series(index=close_series.index, dtype='float64')
# 同花顺特色:第一根EMA值等于当日收盘价
ema.iloc[0] = close_series.iloc[0]
# 从第二根开始使用递推公式计算
for i in range(1, len(close_series)):
ema.iloc[i] = alpha * close_series.iloc[i] + (1 - alpha) * ema.iloc[i-1]
return ema
# 示例:计算同花顺EMA(12)和EMA(26)(常用的MACD组件)
if __name__ == "__main__":
import numpy as np
# 生成模拟数据(50个交易日收盘价)
dates = pd.date_range(start='2023-01-01', periods=50)
np.random.seed(42) # 固定随机种子,保证结果可复现
close_prices = np.cumsum(np.random.randn(50)) + 100 # 模拟价格波动
close_series = pd.Series(close_prices, index=dates, name='close')
# 计算同花顺EMA(12)和EMA(26)
ema12 = tonghuashun_ema(close_series, 12)
ema26 = tonghuashun_ema(close_series, 26)
# 合并结果并显示
result = pd.DataFrame({
'收盘价': close_series,
'EMA12(同花顺)': ema12,
'EMA26(同花顺)': ema26
})
print("同花顺EMA指标计算结果(前10行):")
print(result.head(10))
print("\n同花顺EMA指标计算结果(最后10行):")
print(result.tail(10))
然后直接把上面代码贴入ptrade,封装成函数,传入日线数据即可使用。
查看全部
初始值计算:
标准 EMA:以周期内的第一个 SMA(简单移动平均)作为初始值
同花顺 EMA:直接以第一根 K 线的收盘价作为初始 EMA 值
计算逻辑:
两者在后续递推计算上一致,均使用公式:
plaintext
EMA(今日) = (2/(周期+1)) × 收盘价(今日) + (1-2/(周期+1)) × EMA(昨日)
实际影响:
由于初始值不同,在计算初期(小于周期长度的 K 线数量时),两种方法结果差异较大;随着数据增多,差异会逐渐缩小。
使用时只需将你的收盘价数据整理成 pandas Series 格式,调用该函数即可得到与同花顺软件完全一致的 EMA 计算结果,便于策略回测和指标对比。
import pandas as pd
def tonghuashun_ema(close_series, period):
"""
按照同花顺的算法计算EMA指标
参数:
close_series: pd.Series,包含收盘价数据,索引为日期
period: int,EMA周期(如5、10、50等)
返回:
pd.Series,计算得到的EMA指标序列
"""
if len(close_series) < 1:
return pd.Series(dtype='float64')
# 平滑系数
alpha = 2 / (period + 1)
# 初始化EMA序列
ema = pd.Series(index=close_series.index, dtype='float64')
# 同花顺特色:第一根EMA值等于当日收盘价
ema.iloc[0] = close_series.iloc[0]
# 从第二根开始使用递推公式计算
for i in range(1, len(close_series)):
ema.iloc[i] = alpha * close_series.iloc[i] + (1 - alpha) * ema.iloc[i-1]
return ema
# 示例:计算同花顺EMA(12)和EMA(26)(常用的MACD组件)
if __name__ == "__main__":
import numpy as np
# 生成模拟数据(50个交易日收盘价)
dates = pd.date_range(start='2023-01-01', periods=50)
np.random.seed(42) # 固定随机种子,保证结果可复现
close_prices = np.cumsum(np.random.randn(50)) + 100 # 模拟价格波动
close_series = pd.Series(close_prices, index=dates, name='close')
# 计算同花顺EMA(12)和EMA(26)
ema12 = tonghuashun_ema(close_series, 12)
ema26 = tonghuashun_ema(close_series, 26)
# 合并结果并显示
result = pd.DataFrame({
'收盘价': close_series,
'EMA12(同花顺)': ema12,
'EMA26(同花顺)': ema26
})
print("同花顺EMA指标计算结果(前10行):")
print(result.head(10))
print("\n同花顺EMA指标计算结果(最后10行):")
print(result.tail(10))
然后直接把上面代码贴入ptrade,封装成函数,传入日线数据即可使用。
申万宏源 Ptrade / QMT/miniQMT 免5 开通
QMT • 李魔佛 发表了文章 • 0 个评论 • 2610 次浏览 • 2025-08-07 19:01
支持QMT,miniQMT和Ptrade。
量化功能应有尽有,是目前为止为数不多的有miniQMT的免5券商。
费率低,ETF,可转债均为万0.5
线上开户,需要的朋友可以扫码联系开通。
查看全部
ptrade获取集合竞价数据
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2334 次浏览 • 2025-08-07 18:48
date = '20250806'
stocks = ['300333.SZ']
data = get_trend_data(date=date, stocks=stocks)
# 返回数据
{'300333.SZ': {'time_stamp': 202508060930,
'hq_px': 14.1,
'wavg_px': 14.1,
'business_amount': 40300,
'business_balance': 568230,
'amount': 0}}
在实盘,回测,研究里面就能够使用
公众号:可转债量化分析
星球
查看全部
ptrade不同券商 数据质量 之 ETF数据质量残次不齐
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2410 次浏览 • 2025-07-23 18:28
etf_list = get_etf_list()
然后在不同的券商上运行。
国盛得到的数据:2025-07-23 16:07:15 - INFO - 公众号:可转债量化分析 ---- start ----
2025-07-23 16:08:00 - INFO - start func
2025-07-23 16:08:00 - INFO - 公众号:可转债量化分析
2025-07-23 16:08:00 - INFO - 660
得到的ETF数据有660只。
同样的代码,放到国金的ptrade上运行,得到 2025-07-23 15:45:10 - INFO - 当前服务器配置为:交易时间段服务器重启后,执行拉起本交易操作
2025-07-23 15:45:12 - INFO - 公众号:可转债量化分析 ---- start ----
2025-07-23 15:46:00 - INFO - start func
2025-07-23 15:46:00 - INFO - 公众号:可转债量化分析
2025-07-23 15:46:00 - INFO - 1043有1000只的ETF。
然后把日志导出到本地,用python求解一下不同的数据
(py11) D:\github\stock_strategy\api_validation>python etf-compare.py
516330.SS
561320.SS
159265.SZ
560980.SS
159813.SZ
159859.SZ
561700.SS
511620.SS
159898.SZ
159969.SZ
512380.SS
159972.SZ
159857.SZ
516300.SS
588200.SS
510180.SS
517520.SS
515680.SS
159618.SZ
159827.SZ
561980.SS
511820.SS
515150.SS
159701.SZ
159743.SZ
159623.SZ
159991.SZ
510660.SS
159681.SZ
159845.SZ
515890.SS
515850.SS
515300.SS
159510.SZ
511920.SS
159805.SZ
159610.SZ
159929.SZ
517170.SS
530800.SS
510630.SS
159535.SZ
561790.SS
159842.SZ
510150.SS
560580.SS
517800.SS
515790.SS
159806.SZ
516530.SS
159873.SZ
159207.SZ
515320.SS
516750.SS
159635.SZ
515290.SS
515030.SS
561130.SS
588150.SS
560680.SS
560280.SS
561570.SS
515760.SS
515900.SS
511090.SS
159643.SZ
588040.SS
159968.SZ
512520.SS
159322.SZ
516520.SS
159841.SZ
159359.SZ
515160.SS
511260.SS
516710.SS
159698.SZ
588230.SS
159786.SZ
562900.SS
159309.SZ
159358.SZ
563800.SS
159677.SZ
159551.SZ
517850.SS
159899.SZ
159862.SZ
159961.SZ
159779.SZ
515580.SS
159836.SZ
510060.SS
515010.SS
159355.SZ
560700.SS
159885.SZ
517880.SS
159864.SZ
159640.SZ
510270.SS
560150.SS
515750.SS
159003.SZ
159748.SZ
515330.SS
159730.SZ
159994.SZ
516290.SS
516080.SS
560510.SS
159005.SZ
159306.SZ
159378.SZ
512960.SS
159680.SZ
159847.SZ
159310.SZ
159587.SZ
588400.SS
515770.SS
159393.SZ
159657.SZ
516220.SS
159575.SZ
560350.SS
159997.SZ
515110.SS
159713.SZ
159880.SZ
159576.SZ
159520.SZ
562360.SS
588930.SS
518660.SS
159669.SZ
159206.SZ
159621.SZ
159928.SZ
159731.SZ
516050.SS
562390.SS
159831.SZ
516510.SS
159913.SZ
159633.SZ
511190.SS
512670.SS
516780.SS
517110.SS
159820.SZ
159690.SZ
159881.SZ
561230.SS
510010.SS
159992.SZ
159666.SZ
159725.SZ
159870.SZ
511010.SS
515060.SS
560860.SS
515100.SS
159993.SZ
512820.SS
159825.SZ
511900.SS
515990.SS
159849.SZ
563330.SS
512240.SS
159974.SZ
159910.SZ
159638.SZ
512890.SS
159641.SZ
159875.SZ
159682.SZ
159796.SZ
159887.SZ
159620.SZ
510880.SS
159225.SZ
159720.SZ
510410.SS
159883.SZ
159931.SZ
159363.SZ
588100.SS
561200.SS
560550.SS
159791.SZ
159229.SZ
159982.SZ
159647.SZ
560610.SS
159386.SZ
159559.SZ
159630.SZ
159795.SZ
511200.SS
512510.SS
561260.SS
159589.SZ
562860.SS
560090.SS
159889.SZ
159707.SZ
588320.SS
159678.SZ
510680.SS
159863.SZ
515980.SS
159543.SZ
510100.SS
159679.SZ
512040.SS
530000.SS
511770.SS
159838.SZ
159553.SZ
159998.SZ
515080.SS
588110.SS
561990.SS
159729.SZ
515120.SS
159739.SZ
159856.SZ
159800.SZ
510020.SS
510650.SS
159909.SZ
517550.SS
515630.SS
159685.SZ
515960.SS
515380.SS
561910.SS
515860.SS
518680.SS
588250.SS
159603.SZ
159339.SZ
159778.SZ
159958.SZ
516120.SS
588090.SS
159781.SZ
562300.SS
159761.SZ
517080.SS
159617.SZ
516060.SS
588680.SS
511580.SS
159521.SZ
159770.SZ
159397.SZ
159888.SZ
159816.SZ
516880.SS
159716.SZ
516910.SS
159209.SZ
588880.SS
562800.SS
515650.SS
561590.SS
159715.SZ
159552.SZ
512280.SS
588830.SS
516790.SS
159656.SZ
588460.SS
561350.SS
511850.SS
516830.SS
515530.SS
517120.SS
159658.SZ
563360.SS
517010.SS
516630.SS
159608.SZ
159959.SZ
563300.SS
563350.SS
516650.SS
561920.SS
561310.SS
516460.SS
512680.SS
159782.SZ
515360.SS
159628.SZ
159629.SZ
560260.SS
512730.SS
588010.SS
159697.SZ
588760.SS
513890.SS
159977.SZ
516500.SS
561500.SS
512220.SS
510550.SS
159555.SZ
588300.SS
530300.SS
159649.SZ
159395.SZ
560560.SS
516950.SS
511810.SS
561330.SS
159732.SZ
511600.SS
562890.SS
516550.SS
159717.SZ
159797.SZ
159970.SZ
561900.SS
561560.SS
159890.SZ
159721.SZ
560190.SS
159366.SZ
515950.SS
511950.SS
159908.SZ
159861.SZ
159517.SZ
159975.SZ
159625.SZ
159830.SZ
510050.SS
159895.SZ
517900.SS
159652.SZ
510990.SS
159811.SZ
159852.SZ
517000.SS
159930.SZ
159840.SZ
515070.SS
511670.SS
159807.SZ
561550.SS
511980.SS
159675.SZ
159611.SZ
560880.SS
515660.SS
560530.SS
511830.SS
159766.SZ
159631.SZ
561190.SS
512150.SS
561950.SS
517360.SS
518880.SS
510850.SS
159768.SZ
159876.SZ
159398.SZ
159865.SZ
515600.SS
159360.SZ
159305.SZ
511970.SS
159671.SZ
588310.SS
516770.SS
159320.SZ
516670.SS
517100.SS
159572.SZ
159839.SZ
159627.SZ
159665.SZ
159790.SZ
563520.SS
511520.SS
511690.SS
561160.SS
159723.SZ
159216.SZ
159886.SZ
510190.SS
159798.SZ
562590.SS
159843.SZ
159867.SZ
159663.SZ
159619.SZ
516090.SS
515090.SS
560080.SS
159869.SZ
159872.SZ
159736.SZ
560900.SS
588950.SS
159855.SZ
516150.SS
516960.SS
159828.SZ
517050.SS
159851.SZ
159645.SZ
511930.SS
159935.SZ
159703.SZ
517200.SS
512020.SS
159787.SZ
588240.SS
159362.SZ
517990.SS
561960.SS
562880.SS
159971.SZ
159760.SZ
159871.SZ
513630.SS
561380.SS
不同的ETF数量: 432这400多只的ETF是在国盛上缺失的。
这数据有点惊人.....
如果要用国盛,可以用国金的把ETF列表导出到txt,然后上传到国盛,然后在程序中读取这个etf列表。
查看全部
etf_list = get_etf_list()
然后在不同的券商上运行。
国盛得到的数据:
2025-07-23 16:07:15 - INFO - 公众号:可转债量化分析 ---- start ----
2025-07-23 16:08:00 - INFO - start func
2025-07-23 16:08:00 - INFO - 公众号:可转债量化分析
2025-07-23 16:08:00 - INFO - 660
得到的ETF数据有660只。
同样的代码,放到国金的ptrade上运行,得到
2025-07-23 15:45:10 - INFO - 当前服务器配置为:交易时间段服务器重启后,执行拉起本交易操作有1000只的ETF。
2025-07-23 15:45:12 - INFO - 公众号:可转债量化分析 ---- start ----
2025-07-23 15:46:00 - INFO - start func
2025-07-23 15:46:00 - INFO - 公众号:可转债量化分析
2025-07-23 15:46:00 - INFO - 1043
然后把日志导出到本地,用python求解一下不同的数据
这400多只的ETF是在国盛上缺失的。
(py11) D:\github\stock_strategy\api_validation>python etf-compare.py
516330.SS
561320.SS
159265.SZ
560980.SS
159813.SZ
159859.SZ
561700.SS
511620.SS
159898.SZ
159969.SZ
512380.SS
159972.SZ
159857.SZ
516300.SS
588200.SS
510180.SS
517520.SS
515680.SS
159618.SZ
159827.SZ
561980.SS
511820.SS
515150.SS
159701.SZ
159743.SZ
159623.SZ
159991.SZ
510660.SS
159681.SZ
159845.SZ
515890.SS
515850.SS
515300.SS
159510.SZ
511920.SS
159805.SZ
159610.SZ
159929.SZ
517170.SS
530800.SS
510630.SS
159535.SZ
561790.SS
159842.SZ
510150.SS
560580.SS
517800.SS
515790.SS
159806.SZ
516530.SS
159873.SZ
159207.SZ
515320.SS
516750.SS
159635.SZ
515290.SS
515030.SS
561130.SS
588150.SS
560680.SS
560280.SS
561570.SS
515760.SS
515900.SS
511090.SS
159643.SZ
588040.SS
159968.SZ
512520.SS
159322.SZ
516520.SS
159841.SZ
159359.SZ
515160.SS
511260.SS
516710.SS
159698.SZ
588230.SS
159786.SZ
562900.SS
159309.SZ
159358.SZ
563800.SS
159677.SZ
159551.SZ
517850.SS
159899.SZ
159862.SZ
159961.SZ
159779.SZ
515580.SS
159836.SZ
510060.SS
515010.SS
159355.SZ
560700.SS
159885.SZ
517880.SS
159864.SZ
159640.SZ
510270.SS
560150.SS
515750.SS
159003.SZ
159748.SZ
515330.SS
159730.SZ
159994.SZ
516290.SS
516080.SS
560510.SS
159005.SZ
159306.SZ
159378.SZ
512960.SS
159680.SZ
159847.SZ
159310.SZ
159587.SZ
588400.SS
515770.SS
159393.SZ
159657.SZ
516220.SS
159575.SZ
560350.SS
159997.SZ
515110.SS
159713.SZ
159880.SZ
159576.SZ
159520.SZ
562360.SS
588930.SS
518660.SS
159669.SZ
159206.SZ
159621.SZ
159928.SZ
159731.SZ
516050.SS
562390.SS
159831.SZ
516510.SS
159913.SZ
159633.SZ
511190.SS
512670.SS
516780.SS
517110.SS
159820.SZ
159690.SZ
159881.SZ
561230.SS
510010.SS
159992.SZ
159666.SZ
159725.SZ
159870.SZ
511010.SS
515060.SS
560860.SS
515100.SS
159993.SZ
512820.SS
159825.SZ
511900.SS
515990.SS
159849.SZ
563330.SS
512240.SS
159974.SZ
159910.SZ
159638.SZ
512890.SS
159641.SZ
159875.SZ
159682.SZ
159796.SZ
159887.SZ
159620.SZ
510880.SS
159225.SZ
159720.SZ
510410.SS
159883.SZ
159931.SZ
159363.SZ
588100.SS
561200.SS
560550.SS
159791.SZ
159229.SZ
159982.SZ
159647.SZ
560610.SS
159386.SZ
159559.SZ
159630.SZ
159795.SZ
511200.SS
512510.SS
561260.SS
159589.SZ
562860.SS
560090.SS
159889.SZ
159707.SZ
588320.SS
159678.SZ
510680.SS
159863.SZ
515980.SS
159543.SZ
510100.SS
159679.SZ
512040.SS
530000.SS
511770.SS
159838.SZ
159553.SZ
159998.SZ
515080.SS
588110.SS
561990.SS
159729.SZ
515120.SS
159739.SZ
159856.SZ
159800.SZ
510020.SS
510650.SS
159909.SZ
517550.SS
515630.SS
159685.SZ
515960.SS
515380.SS
561910.SS
515860.SS
518680.SS
588250.SS
159603.SZ
159339.SZ
159778.SZ
159958.SZ
516120.SS
588090.SS
159781.SZ
562300.SS
159761.SZ
517080.SS
159617.SZ
516060.SS
588680.SS
511580.SS
159521.SZ
159770.SZ
159397.SZ
159888.SZ
159816.SZ
516880.SS
159716.SZ
516910.SS
159209.SZ
588880.SS
562800.SS
515650.SS
561590.SS
159715.SZ
159552.SZ
512280.SS
588830.SS
516790.SS
159656.SZ
588460.SS
561350.SS
511850.SS
516830.SS
515530.SS
517120.SS
159658.SZ
563360.SS
517010.SS
516630.SS
159608.SZ
159959.SZ
563300.SS
563350.SS
516650.SS
561920.SS
561310.SS
516460.SS
512680.SS
159782.SZ
515360.SS
159628.SZ
159629.SZ
560260.SS
512730.SS
588010.SS
159697.SZ
588760.SS
513890.SS
159977.SZ
516500.SS
561500.SS
512220.SS
510550.SS
159555.SZ
588300.SS
530300.SS
159649.SZ
159395.SZ
560560.SS
516950.SS
511810.SS
561330.SS
159732.SZ
511600.SS
562890.SS
516550.SS
159717.SZ
159797.SZ
159970.SZ
561900.SS
561560.SS
159890.SZ
159721.SZ
560190.SS
159366.SZ
515950.SS
511950.SS
159908.SZ
159861.SZ
159517.SZ
159975.SZ
159625.SZ
159830.SZ
510050.SS
159895.SZ
517900.SS
159652.SZ
510990.SS
159811.SZ
159852.SZ
517000.SS
159930.SZ
159840.SZ
515070.SS
511670.SS
159807.SZ
561550.SS
511980.SS
159675.SZ
159611.SZ
560880.SS
515660.SS
560530.SS
511830.SS
159766.SZ
159631.SZ
561190.SS
512150.SS
561950.SS
517360.SS
518880.SS
510850.SS
159768.SZ
159876.SZ
159398.SZ
159865.SZ
515600.SS
159360.SZ
159305.SZ
511970.SS
159671.SZ
588310.SS
516770.SS
159320.SZ
516670.SS
517100.SS
159572.SZ
159839.SZ
159627.SZ
159665.SZ
159790.SZ
563520.SS
511520.SS
511690.SS
561160.SS
159723.SZ
159216.SZ
159886.SZ
510190.SS
159798.SZ
562590.SS
159843.SZ
159867.SZ
159663.SZ
159619.SZ
516090.SS
515090.SS
560080.SS
159869.SZ
159872.SZ
159736.SZ
560900.SS
588950.SS
159855.SZ
516150.SS
516960.SS
159828.SZ
517050.SS
159851.SZ
159645.SZ
511930.SS
159935.SZ
159703.SZ
517200.SS
512020.SS
159787.SZ
588240.SS
159362.SZ
517990.SS
561960.SS
562880.SS
159971.SZ
159760.SZ
159871.SZ
513630.SS
561380.SS
不同的ETF数量: 432
这数据有点惊人.....
如果要用国盛,可以用国金的把ETF列表导出到txt,然后上传到国盛,然后在程序中读取这个etf列表。
长江证券 ptrade 免五 开通门槛
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 3154 次浏览 • 2025-07-22 16:57
软件描述:长江证券PTrade交易终端是由恒生电子股份有限公司开发,为服务投资者专业化个性化交易需求而打造的交易终端
功能介绍:
1. 操作便捷:支持闪电下单、一键撤补、一键清仓、批量撤单、全键盘交易等功能
2. 功能丰富:提供策略交易、拐点交易、网格交易、抢单交易、追涨停、盘口扫单、可转债套利、ETF套利、篮子交易等交易工具
3. 量化交易:支持策略单交易,提供完整的策略平台,支持客户做策略研究、策略编写、策略回测和实盘交易
4. 极速交易:支持通过华锐ATP极速柜台、快速交易通道交易
MD5码:16ab7feba617b254c1607320ce69a780
版本:PTrade1.0-Client-V202308-15-000
文件大小:215.2M
文件名:PTrade1.0-Client-V202308-15-000_CY.zip
有2个版本,一个是长江证券ptrade交易终端(极速版),这个可以在上面编写python策略;
一个是Ptrade交易终端(简版),这个只提供了基础的量化工具,比如套利,网格,日内回转交易。不支持python编程功能。所以注意不要开错了哦。
下载链接:
https://downcq.95579.com/jcj/zg/PTrade1.0-Client-V202308-15-000_CY.zip
长期更新站点:
https://ptradeapi.com/
需要开通的朋友可以关注公众号联系: 查看全部
软件描述:长江证券PTrade交易终端是由恒生电子股份有限公司开发,为服务投资者专业化个性化交易需求而打造的交易终端
功能介绍:
1. 操作便捷:支持闪电下单、一键撤补、一键清仓、批量撤单、全键盘交易等功能
2. 功能丰富:提供策略交易、拐点交易、网格交易、抢单交易、追涨停、盘口扫单、可转债套利、ETF套利、篮子交易等交易工具
3. 量化交易:支持策略单交易,提供完整的策略平台,支持客户做策略研究、策略编写、策略回测和实盘交易
4. 极速交易:支持通过华锐ATP极速柜台、快速交易通道交易
MD5码:16ab7feba617b254c1607320ce69a780
版本:PTrade1.0-Client-V202308-15-000
文件大小:215.2M
文件名:PTrade1.0-Client-V202308-15-000_CY.zip
有2个版本,一个是长江证券ptrade交易终端(极速版),这个可以在上面编写python策略;
一个是Ptrade交易终端(简版),这个只提供了基础的量化工具,比如套利,网格,日内回转交易。不支持python编程功能。所以注意不要开错了哦。
下载链接:
https://downcq.95579.com/jcj/zg/PTrade1.0-Client-V202308-15-000_CY.zip
长期更新站点:
https://ptradeapi.com/
需要开通的朋友可以关注公众号联系:
聚宽小市值策略代码转Ptrade实盘代码
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 4572 次浏览 • 2025-07-05 22:35
Mark一下,写完之后分享一下。
聚宽的也不是完全的按照市值,也会根据换手率,涨停,跌停来判断是否卖出。
聚宽源码(部分)
#导入函数库
from jqdata import *
from jqfactor import *
import numpy as np
import pandas as pd
from datetime import time, datetime, timedelta
#初始化函数
def initialize(context):
# 策略参数配置
g.signal = ''
# 开启防未来函数
set_option('avoid_future_data', True)
# 设定基准
set_benchmark('000300.XSHG')
# 交易设置
set_option('use_real_price', True)
set_slippage(FixedSlippage(3/10000))
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=2.5/10000, close_commission=2.5/10000, close_today_commission=0, min_commission=5), type='stock')
# 日志设置
log.set_level('order', 'error')
log.set_level('system', 'error')
log.set_level('strategy', 'debug')
# 策略控制参数
g.no_trading_today_signal = False # 是否为可交易日
g.pass_april = True # 是否四月空仓
g.run_stoploss = True # 是否进行止损
g.HV_control = False # 是否进行放量控制
g.HV_duration = 120 # 放量判断周期
g.HV_ratio = 0.9 # 放量判断比例
g.no_trading_hold_signal = False # 是否持有非交易期股票
# 持仓管理参数
g.hold_list = [] # 当前持仓的全部股票
g.yesterday_HL_list = [] # 记录持仓中昨日涨停的股票
g.target_list = [] # 目标买入列表
g.not_buy_again = [] # 不再买入的股票列表
# 交易参数
g.stock_num = 3 # 持仓数量
g.up_price = 100 # 最高买入价格
g.reason_to_sell = '' # 卖出原因
g.stoploss_strategy = 3 # 止损策略:1为止损线止损,2为市场趋势止损,3为联合策略
g.stoploss_limit = 0.91 # 个股止损线
g.stoploss_market = 0.95 # 市场趋势止损参数
g.no_trading_buy = ['600036.XSHG', '518880.XSHG', '600900.XSHG'] # 空仓月份持有
# 设置交易运行时间
run_daily(prepare_stock_list, '9:05')
run_weekly(weekly_adjustment, 2, '10:30')
run_daily(sell_stocks, time='10:00') # 止损函数
run_daily(trade_afternoon, time='14:25') # 检查持仓中的涨停股是否需要卖出
run_daily(trade_afternoon, time='14:55') # 检查持仓中的涨停股是否需要卖出
run_daily(close_account, '14:50')
转换后的Ptrade实盘源码(部分)
def before_trading_start(context, data):
log.info('================= 盘前运行开始:{} '.format(str(context.blotter.current_dt)))
g.__portfolio = PositionManager()
g.order_set = set()
# g.__lock = threading.Lock()
def remove_st_stock(all_stock_list):
st_dict = get_stock_status(all_stock_list, query_type='ST', query_date=None)
st_list = []
for k, v in st_dict.items():
if v:
st_list.append(k)
return st_list
def remove_halt_stock(all_stock_list):
halt_dict = get_stock_status(all_stock_list, query_type='HALT', query_date=None)
halt_list = []
for k, v in halt_dict.items():
if v:
halt_list.append(k)
return halt_list
def all_codes_in_market():
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('68'), all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('3'), all_stock_set))
return all_stock_set
待续 查看全部
Mark一下,写完之后分享一下。
聚宽的也不是完全的按照市值,也会根据换手率,涨停,跌停来判断是否卖出。
聚宽源码(部分)
#导入函数库
from jqdata import *
from jqfactor import *
import numpy as np
import pandas as pd
from datetime import time, datetime, timedelta
#初始化函数
def initialize(context):
# 策略参数配置
g.signal = ''
# 开启防未来函数
set_option('avoid_future_data', True)
# 设定基准
set_benchmark('000300.XSHG')
# 交易设置
set_option('use_real_price', True)
set_slippage(FixedSlippage(3/10000))
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=2.5/10000, close_commission=2.5/10000, close_today_commission=0, min_commission=5), type='stock')
# 日志设置
log.set_level('order', 'error')
log.set_level('system', 'error')
log.set_level('strategy', 'debug')
# 策略控制参数
g.no_trading_today_signal = False # 是否为可交易日
g.pass_april = True # 是否四月空仓
g.run_stoploss = True # 是否进行止损
g.HV_control = False # 是否进行放量控制
g.HV_duration = 120 # 放量判断周期
g.HV_ratio = 0.9 # 放量判断比例
g.no_trading_hold_signal = False # 是否持有非交易期股票
# 持仓管理参数
g.hold_list = [] # 当前持仓的全部股票
g.yesterday_HL_list = [] # 记录持仓中昨日涨停的股票
g.target_list = [] # 目标买入列表
g.not_buy_again = [] # 不再买入的股票列表
# 交易参数
g.stock_num = 3 # 持仓数量
g.up_price = 100 # 最高买入价格
g.reason_to_sell = '' # 卖出原因
g.stoploss_strategy = 3 # 止损策略:1为止损线止损,2为市场趋势止损,3为联合策略
g.stoploss_limit = 0.91 # 个股止损线
g.stoploss_market = 0.95 # 市场趋势止损参数
g.no_trading_buy = ['600036.XSHG', '518880.XSHG', '600900.XSHG'] # 空仓月份持有
# 设置交易运行时间
run_daily(prepare_stock_list, '9:05')
run_weekly(weekly_adjustment, 2, '10:30')
run_daily(sell_stocks, time='10:00') # 止损函数
run_daily(trade_afternoon, time='14:25') # 检查持仓中的涨停股是否需要卖出
run_daily(trade_afternoon, time='14:55') # 检查持仓中的涨停股是否需要卖出
run_daily(close_account, '14:50')
转换后的Ptrade实盘源码(部分)
def before_trading_start(context, data):
log.info('================= 盘前运行开始:{} '.format(str(context.blotter.current_dt)))
g.__portfolio = PositionManager()
g.order_set = set()
# g.__lock = threading.Lock()
def remove_st_stock(all_stock_list):
st_dict = get_stock_status(all_stock_list, query_type='ST', query_date=None)
st_list = []
for k, v in st_dict.items():
if v:
st_list.append(k)
return st_list
def remove_halt_stock(all_stock_list):
halt_dict = get_stock_status(all_stock_list, query_type='HALT', query_date=None)
halt_list = []
for k, v in halt_dict.items():
if v:
halt_list.append(k)
return halt_list
def all_codes_in_market():
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('68'), all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('3'), all_stock_set))
return all_stock_set
待续
国盛Ptrade get_Ashare函数返回为空
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2099 次浏览 • 2025-07-04 12:22
在实盘中,运行下面代码:
# author: 公众号:可转债量化分析
import datetime
def initialize(context):
# 初始化策略
pass
def before_trading_start(context, data):
log.info('盘前函数运行')
previous_tradeing_func(context) # 执行盘前函数
def previous_tradeing_func(context):
all_stock_set = get_Ashares(date=None)
print(all_stock_set)
def handle_data(context, data):
pass
运行结果:
2025-07-04 12:18:10 - INFO - 盘前函数运行
2025-07-04 12:18:10 - INFO - []
数据的是一个空的list.......
一个十分基础的数据。
反馈了几年,依然如是。。
还是多开几家,多对比。各有各的优势。 查看全部
在实盘中,运行下面代码:
# author: 公众号:可转债量化分析
import datetime
def initialize(context):
# 初始化策略
pass
def before_trading_start(context, data):
log.info('盘前函数运行')
previous_tradeing_func(context) # 执行盘前函数
def previous_tradeing_func(context):
all_stock_set = get_Ashares(date=None)
print(all_stock_set)
def handle_data(context, data):
pass
运行结果:
2025-07-04 12:18:10 - INFO - 盘前函数运行
2025-07-04 12:18:10 - INFO - []
数据的是一个空的list.......
一个十分基础的数据。
反馈了几年,依然如是。。
还是多开几家,多对比。各有各的优势。
谁说ptrade代码不安全容易泄露的?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2935 次浏览 • 2025-07-03 11:52
实际上现在的ptrade可以对策略进行加密
可以对你的策略进行加密下载,然后把策略删除了,然后在选择上传策略。
然后策略上传之后,你是无法看到具体代码的了,只能选择启动,删除策略。
连日志里面的打印数据也不会输出。
只会显示买入 卖出 的信息。
大大的提高了策略的安全性。
需要开通ptrade的读者朋友,可以关注公众号联系:
低佣 - 低门槛,提供 技术支持
查看全部
ptrade查看日志报错:远程服务器返回错误: (502) 错误的网关
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2032 次浏览 • 2025-06-30 18:59
访问这个API的时候就已经报错。
502异常代码,是服务器端的报错。和本地无关。
有时候能够正常查询到日志,但大部分时候查询日志的时候就出现上面的502异常。
揪心,就不能买多几台服务器么.....
查看全部
Ptrade获取的L2逐笔数据和同花顺的逐笔数据对不上的原因
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2361 次浏览 • 2025-06-12 16:40
后面有群友 发现了问题。
国泰海通支持Ptrade,万一免5
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 3837 次浏览 • 2025-06-06 13:33
支持ptrade和qmt,不过没有miniqmt。
费率做到万0.854免5,起步0.01
实盘版下载链接:
https://dl2.app.gtja.com/dzswem/softwareVersion/202504/07/PTrade1.0-Client-V202403-07-005(PTrade).zip
需要开通和调佣的,可以关注公众号联系:
查看全部
支持ptrade和qmt,不过没有miniqmt。
费率做到万0.854免5,起步0.01
实盘版下载链接:
https://dl2.app.gtja.com/dzswem/softwareVersion/202504/07/PTrade1.0-Client-V202403-07-005(PTrade).zip
需要开通和调佣的,可以关注公众号联系:








































