python量化分析教程 | 最近几年A股养老基金整体盈亏情况分析

股票李魔佛 发表了文章 • 0 个评论 • 24 次浏览 • 2024-07-25 17:30 • 来自相关话题

这几年A股股市走势有目共睹。跌的让人头晕目眩。

不仅是散户被深套,很多基金也都大幅亏损。甚至前阵子看到证券时报报道,养老目标基金都出现不是清盘的现象。







于是笔者好奇心驱使,想看看这些养老基金最近几年的盈利情况,会不会把长辈老人们的下半辈子养老金都亏空了。

作为一名授人以渔的公众号博主,不仅仅贴个收益率图出来这么简单的啦。如果只是想看数据,直接跳过前面的操作即可。

笔者手把手教大家做数据分析,学会后不仅仅只对养老基金这一类别的基金做分析,还可以对不同类型的基金做分析。

前提:电脑按照了python已经相关库(jupyter notebook,pandas,akshare)

数据源:天天基金网

打开东财的天天基金网(https://fund.eastmoney.com/),在基金搜索页面输入:养老






总共有515个与养老相关的公募基金。如果没显示全,点击下图里面的“点击展开更多”按钮








抓包就找到对应的URL地址了,如下:https://fundsuggest.eastmoney.com/FundSearch/api/FundSearchPageAPI.ashx?callback=jQuery18306906210160165065_1721823304653&m=1&key=养老&pageindex=0&pagesize=515&_=1721823360126 
 
如果你想分析其他类型的主题基金,只需要把上面的url里面的key=养老,换成其他的就可以了,比如 key=芯片

浏览器输入上面的URL就可以拿到数据了。







简单起见,我就不写爬取数据的代码,直接复制粘贴浏览器返回的内容就好了。

然后把前面起始的jQuery18306906210160165065_1721823304653( 和最后的括号去掉,就得到一个json数据了。
 
js_data = {
"ErrCode": 0,
"ErrMsg": "0",
"Datas": [
{
"_id": "001171",
"CODE": "001171",
"NAME": "工银养老产业股票A",
"STOCKMARKET": "",
"NEWTEXCH": ""
},
......... # 省略若干
]
}
 
(文末提供这个数据文件的获取方式)

接着写一个函数获取某个基金的当前收益率:目前就获取最近3年的收益率。
import akshare as ak

def get_fund_info(code,name):
fund_open_fund_info_em_df = ak.fund_open_fund_info_em(symbol=code, indicator="累计收益率走势",period="3年")
latest_perf = fund_open_fund_info_em_df.iloc[-1]['累计收益率']
return {'code':code,'profit':latest_perf,'name':name}
 
可以改动period='5年', ’10年‘,’成立以来',从而获取不同区间的收益率

接着把500多个基金遍历一遍就OK了。
fund_perf_list = []
for item in js_data['Datas']:
print('processing code {}'.format(item['CODE']))
try:
fund_perf_list.append(get_fund_info(item['CODE'],item['NAME']))
time.sleep(0.5)
except Exception as e:
print('error in processing code {}'.format(item['CODE']))
print(e)





 
 
然后去倒杯茶,慢慢等它跑完。







数据分析

把数据转为dataframe,按照收益率排名
import pandas as pd
df = pd.DataFrame(fund_perf_list)

rank_df = df.sort_values(by='profit')





 
 
也可以导出到excel
 
rank_df.to_excel('亏麻的养老基金.xlsx')





 
 
亏损最多的鹏华养老产业股票,最近3年亏损了-53%,不过它应该也不属于养老基金范畴,只是买的养老产业的股票。

而华夏养老2055五年持有混合(FOF)A 011745,这种才是标准的养老基金,这些养老基金大部分是FOF(它们持有标的是基金,而不是股票)







2021年成立,买入后还要锁定5年,期间不可卖出,老人们被套牢了也无法割肉了。成立以来亏损了-34%,近3年亏损了-41%。

于是笔者继续过滤一下,找出里面的全部FOF基金
 
fof_fund_df = rank_df[rank_df['name'].str.contains('FOF')]
 
 
得到下面的养老基金FOF全部数据















然后使用describe函数看看大体的涨跌幅情况:







总共有484个数据,平均涨幅为-8.38%

中位数是-6.13%。

涨幅最大的是4.85%,中欧预见平衡养老三年持有混合发起(FOF)Y

打开详情一看,原来是得益于成立得晚的缘故,而该基金是今年2月成立的。








最近3年沪深300指数跌了32%,而这个跌幅可以在485只养老基金里面排到了477名。聊以慰藉的是,绝大部分的养老基金在下跌行情下是跑赢了沪深300的。

绘制直方图

直方图可以一览数据得养老基金涨跌幅分布情况:
 
fof_fund_df.plot(kind='hist',bins=20,y='profit',width=2,grid=True)





 
从图可以看到,大部分养老基金的涨跌幅落在-20到0之间。
亏损达到-30%以上的其实也不是很多。
 
整体来说,养老基金FOF比买入主流宽基波动要小一些,但并非保本的理财工具,对于风险接受能力低的老一辈朋友,需要慎重考虑的。
 
原文数据可在公众号:
可转债量化分析
获取
  查看全部
这几年A股股市走势有目共睹。跌的让人头晕目眩。

不仅是散户被深套,很多基金也都大幅亏损。甚至前阵子看到证券时报报道,养老目标基金都出现不是清盘的现象。

20240724203835.png



于是笔者好奇心驱使,想看看这些养老基金最近几年的盈利情况,会不会把长辈老人们的下半辈子养老金都亏空了。

作为一名授人以渔的公众号博主,不仅仅贴个收益率图出来这么简单的啦。如果只是想看数据,直接跳过前面的操作即可。

笔者手把手教大家做数据分析,学会后不仅仅只对养老基金这一类别的基金做分析,还可以对不同类型的基金做分析。

前提:电脑按照了python已经相关库(jupyter notebook,pandas,akshare)

数据源:天天基金网

打开东财的天天基金网(https://fund.eastmoney.com/),在基金搜索页面输入:养老

20240724201831.png


总共有515个与养老相关的公募基金。如果没显示全,点击下图里面的“点击展开更多”按钮


20240724205640.png



抓包就找到对应的URL地址了,如下:https://fundsuggest.eastmoney.com/FundSearch/api/FundSearchPageAPI.ashx?callback=jQuery18306906210160165065_1721823304653&m=1&key=养老&pageindex=0&pagesize=515&_=1721823360126 
 
如果你想分析其他类型的主题基金,只需要把上面的url里面的key=养老,换成其他的就可以了,比如 key=芯片

浏览器输入上面的URL就可以拿到数据了。

20240724201909.png



简单起见,我就不写爬取数据的代码,直接复制粘贴浏览器返回的内容就好了。

然后把前面起始的jQuery18306906210160165065_1721823304653( 和最后的括号去掉,就得到一个json数据了。
 
js_data = {
"ErrCode": 0,
"ErrMsg": "0",
"Datas": [
{
"_id": "001171",
"CODE": "001171",
"NAME": "工银养老产业股票A",
"STOCKMARKET": "",
"NEWTEXCH": ""
},
......... # 省略若干
]
}

 
(文末提供这个数据文件的获取方式)

接着写一个函数获取某个基金的当前收益率:目前就获取最近3年的收益率。
import akshare as ak

def get_fund_info(code,name):
fund_open_fund_info_em_df = ak.fund_open_fund_info_em(symbol=code, indicator="累计收益率走势",period="3年")
latest_perf = fund_open_fund_info_em_df.iloc[-1]['累计收益率']
return {'code':code,'profit':latest_perf,'name':name}

 
可以改动period='5年', ’10年‘,’成立以来',从而获取不同区间的收益率

接着把500多个基金遍历一遍就OK了。
fund_perf_list = []
for item in js_data['Datas']:
print('processing code {}'.format(item['CODE']))
try:
fund_perf_list.append(get_fund_info(item['CODE'],item['NAME']))
time.sleep(0.5)
except Exception as e:
print('error in processing code {}'.format(item['CODE']))
print(e)


20240725000417.png

 
 
然后去倒杯茶,慢慢等它跑完。

20240725000859.png



数据分析

把数据转为dataframe,按照收益率排名
import pandas as pd
df = pd.DataFrame(fund_perf_list)

rank_df = df.sort_values(by='profit')


20240725001101.png

 
 
也可以导出到excel
 
rank_df.to_excel('亏麻的养老基金.xlsx')


20240725001443.png

 
 
亏损最多的鹏华养老产业股票,最近3年亏损了-53%,不过它应该也不属于养老基金范畴,只是买的养老产业的股票。

而华夏养老2055五年持有混合(FOF)A 011745,这种才是标准的养老基金,这些养老基金大部分是FOF(它们持有标的是基金,而不是股票)


20240725002300.png


2021年成立,买入后还要锁定5年,期间不可卖出,老人们被套牢了也无法割肉了。成立以来亏损了-34%,近3年亏损了-41%。

于是笔者继续过滤一下,找出里面的全部FOF基金
 
fof_fund_df = rank_df[rank_df['name'].str.contains('FOF')]

 
 
得到下面的养老基金FOF全部数据


20240725003008.png




20240725003419.png



然后使用describe函数看看大体的涨跌幅情况:

20240725003134.png



总共有484个数据,平均涨幅为-8.38%

中位数是-6.13%。

涨幅最大的是4.85%,中欧预见平衡养老三年持有混合发起(FOF)Y

打开详情一看,原来是得益于成立得晚的缘故,而该基金是今年2月成立的。


20240725003530.png



最近3年沪深300指数跌了32%,而这个跌幅可以在485只养老基金里面排到了477名。聊以慰藉的是,绝大部分的养老基金在下跌行情下是跑赢了沪深300的。

绘制直方图

直方图可以一览数据得养老基金涨跌幅分布情况:
 
fof_fund_df.plot(kind='hist',bins=20,y='profit',width=2,grid=True)


output.png

 
从图可以看到,大部分养老基金的涨跌幅落在-20到0之间。
亏损达到-30%以上的其实也不是很多。
 
整体来说,养老基金FOF比买入主流宽基波动要小一些,但并非保本的理财工具,对于风险接受能力低的老一辈朋友,需要慎重考虑的。
 
原文数据可在公众号:
可转债量化分析
获取
 

优矿的回测引擎运行在python2.7,汗

量化交易李魔佛 发表了文章 • 0 个评论 • 43 次浏览 • 2024-07-22 11:59 • 来自相关话题

之前看到优矿的报错提示如下:

回测引擎运行在 Python2.7 之上,请您使用 Python2.7 的写法进行策略编写。
 
居然回测引擎还在2.7,怪不得目前性能比较拉跨了呢。。。
 
不过话说,自从它的可转债数据收费之后,我就一直没有再使用优矿进行回测了。
 
  查看全部
之前看到优矿的报错提示如下:

回测引擎运行在 Python2.7 之上,请您使用 Python2.7 的写法进行策略编写。
 
居然回测引擎还在2.7,怪不得目前性能比较拉跨了呢。。。
 
不过话说,自从它的可转债数据收费之后,我就一直没有再使用优矿进行回测了。
 
 

vs code 插件推荐:标注某个代码位置,快速跳转回该位置

闲聊马化云 发表了文章 • 0 个评论 • 122 次浏览 • 2024-07-20 09:51 • 来自相关话题

相信大部分会有这样的体验,在一个文件中,经常回修改某一个函数,比如A文件的B function。然后不断打开其他文件C,D,来回切换修改。
 
因为在修改的时候会在当前文件跳转到其他函数里面比如跳转到D function,又跳到F function。然后继续跳转到其他函数H function。
 
但是,后面如果要回去A 文件的B function,你就要点击回去A文件,然后再通过搜索A function名字,或者用滚动条一直滚动。
 
所以整个流程会很浪费时间。
 
vs code有个插件,叫做bookmarks。





 
就是为了解决上面的痛点。
 
只需要在你代码右键,选择 Bookmark,标注了。
 
该位置就会保存在 左侧的bookmark栏里。
 





 
后续你只需要点一下这个bookmark栏的这个地方,就会直接跳转到你标注的行的位置。
 
大大提升了效率!
 
插件地址:
https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks

 
  查看全部
相信大部分会有这样的体验,在一个文件中,经常回修改某一个函数,比如A文件的B function。然后不断打开其他文件C,D,来回切换修改。
 
因为在修改的时候会在当前文件跳转到其他函数里面比如跳转到D function,又跳到F function。然后继续跳转到其他函数H function。
 
但是,后面如果要回去A 文件的B function,你就要点击回去A文件,然后再通过搜索A function名字,或者用滚动条一直滚动。
 
所以整个流程会很浪费时间。
 
vs code有个插件,叫做bookmarks。

20240720094900.png

 
就是为了解决上面的痛点。
 
只需要在你代码右键,选择 Bookmark,标注了。
 
该位置就会保存在 左侧的bookmark栏里。
 

20240720095022.png

 
后续你只需要点一下这个bookmark栏的这个地方,就会直接跳转到你标注的行的位置。
 
大大提升了效率!
 
插件地址:
https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks

 
 

百度站长助手现在对于没有备案得站点不提供sitemap提交了

网络安全马化云 发表了文章 • 0 个评论 • 101 次浏览 • 2024-07-12 16:20 • 来自相关话题

在百度资源站得站点里面
 
会发现它得sitemap提交地址栏是灰色得,用户无法提交sitemap了。
 
如下图所示:





 
主要因为百度最近清理了一批老旧资源得站点。
 
尤其是哪些内容农场。
 
遇到那些没有备案得站点,更加是不给你 提交 sitemap了了。
 
每天提交sitemap得得配额是0。用户无法提交sitemap。
 
只能手动或者api提交。
 
所以只好写了个脚本自动提交了。
 
需要工具得也可以联系。也支持定制化,自动化。
 





 
  查看全部
在百度资源站得站点里面
 
会发现它得sitemap提交地址栏是灰色得,用户无法提交sitemap了。
 
如下图所示:

20240712161609.png

 
主要因为百度最近清理了一批老旧资源得站点。
 
尤其是哪些内容农场。
 
遇到那些没有备案得站点,更加是不给你 提交 sitemap了了。
 
每天提交sitemap得得配额是0。用户无法提交sitemap。
 
只能手动或者api提交。
 
所以只好写了个脚本自动提交了。
 
需要工具得也可以联系。也支持定制化,自动化。
 

20240712161949.png

 
 

华宝证券 华宝期权宝 钱龙 客户端 无法下载的原因

股票李魔佛 发表了文章 • 0 个评论 • 159 次浏览 • 2024-07-05 11:45 • 来自相关话题

本来想下载一个期权软件下来看看T型交易图。
 
结果在华宝的官网 找到下载链接,但一直报错:





 
似乎其他软件也是报错。
 
500报错,应该是服务器的原因。
 
然后把链接复制下来:
 
https://download.cnhbstock.com/download/qlqqb/qlqqbpc/qqbfz.exe
 
把链接的https 改成 http,
 
浏览器会提示:
您的连接不是私密连接
攻击者可能会试图从 139.224.24.109 窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情
NET::ERR_CERT_COMMON_NAME_INVALID
如果您想获得 Chrome 最高级别然后点击继续访问

 
结果就可以下载啦。
 
说实话,华宝这技术的确不咋地。
 
这个问题居然没有反馈,没有人去修复吗?
 
  查看全部
本来想下载一个期权软件下来看看T型交易图。
 
结果在华宝的官网 找到下载链接,但一直报错:

20240705114345.png

 
似乎其他软件也是报错。
 
500报错,应该是服务器的原因。
 
然后把链接复制下来:
 
https://download.cnhbstock.com/download/qlqqb/qlqqbpc/qqbfz.exe
 
把链接的https 改成 http,
 
浏览器会提示:
您的连接不是私密连接
攻击者可能会试图从 139.224.24.109 窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情
NET::ERR_CERT_COMMON_NAME_INVALID
如果您想获得 Chrome 最高级别
然后点击继续访问

 
结果就可以下载啦。
 
说实话,华宝这技术的确不咋地。
 
这个问题居然没有反馈,没有人去修复吗?
 
 

ptrade获取的历史数据最长到哪一年?ptrade如何获取上证指数

Ptrade李魔佛 发表了文章 • 0 个评论 • 185 次浏览 • 2024-06-30 13:48 • 来自相关话题

Ptrade获取日线,分钟线数据最长可以到2005年。
文档里面也有说明:
 

7、该接口只能获取2005年后的数据。






ptrade官网api接口文档:
https://ptradeapi.com/#
 
实测也是符合要求的:
 
ptrade如何获取上证指数, 代码是  000001.SS
test_data = data = get_price(security='000001.SS',start_date='20050201',end_date='20050630',frequency='1d')
ptrade获取上证指数2005年的数据:
 





 
需要低佣,低门槛开通ptrade的朋友,可以扫描关注关注号: 查看全部
Ptrade获取日线,分钟线数据最长可以到2005年。
文档里面也有说明:
 


7、该接口只能获取2005年后的数据。



20240630134315.png

ptrade官网api接口文档:
https://ptradeapi.com/#
 
实测也是符合要求的:
 
ptrade如何获取上证指数, 代码是  000001.SS
test_data = data = get_price(security='000001.SS',start_date='20050201',end_date='20050630',frequency='1d')

ptrade获取上证指数2005年的数据:
 

20240630134443.png

 
需要低佣,低门槛开通ptrade的朋友,可以扫描关注关注号:

python自动生成网站sitemap.xml 代码

python李魔佛 发表了文章 • 0 个评论 • 437 次浏览 • 2024-06-30 13:32 • 来自相关话题

sitemap格式为:
 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/s ... gt%3B
<url>
<loc>http://30daydo.com/article/1</loc>
<mobile:mobile type="mobile"/>
<lastmod>2024-06-30</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>
然后我们要做的就是拿到我们页面上所有的链接地址,填充到这里:
 <url>
<loc>http://30daydo.com/article/1</loc>
<mobile:mobile type="mobile"/>
<lastmod>2024-06-30</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
 只需要替换上面的http://30daydo.com/article/1 地址就可以了。这个你跟你的完整url规律生成,或者从数据库读取就好了。





 
然后生成一个文件,自动复制到文章目录就可以了。
 
完整源码:
https://github.com/Rockyzsu/sitemap_generator
 
欢迎star,有问题留言。
  查看全部
sitemap格式为:
 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/s ... gt%3B
<url>
<loc>http://30daydo.com/article/1</loc>
<mobile:mobile type="mobile"/>
<lastmod>2024-06-30</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>

然后我们要做的就是拿到我们页面上所有的链接地址,填充到这里:
 
<url>
<loc>http://30daydo.com/article/1</loc>
<mobile:mobile type="mobile"/>
<lastmod>2024-06-30</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>

 只需要替换上面的http://30daydo.com/article/1 地址就可以了。这个你跟你的完整url规律生成,或者从数据库读取就好了。

20240630133150.png

 
然后生成一个文件,自动复制到文章目录就可以了。
 
完整源码:
https://github.com/Rockyzsu/sitemap_generator
 
欢迎star,有问题留言。
 

国金证券QMT测试客户端 - 获取可融券股票数据

回复

QMT李魔佛 回复了问题 • 1 人关注 • 1 个回复 • 287 次浏览 • 2024-06-19 10:53 • 来自相关话题

QMT获取持仓信息报错:AttributeError: 'NoneType' object has no attribute 'request_id'

QMT李魔佛 发表了文章 • 0 个评论 • 212 次浏览 • 2024-06-17 14:03 • 来自相关话题

这个是新手经常遇到的问题。读取持仓信息的时候报错:
代码如下:
 
 
原因就是不能init之前去读取
# encoding:gbk
'''
实盘可以执行
固定数量
'''
import datetime


ACCOUNT = ''


def init(ContextInfo):
ContextInfo.set_account(ACCOUNT)


def get_position_infos():
# 信用账户可用资金
position_infos = get_trade_detail_data(ACCOUNT, 'stock', 'position')


pos_dict={}
for pos in position_infos:
code = pos.m_strInstrumentID
if pos.m_nVolume > 0:
pos_dict[code] = pos.m_nVolume
return pos_dict

datax = get_position_infos() # 这里error

def handlebar(ContextInfo):
if ContextInfo.is_last_bar():
current = datetime.datetime.now().strftime('%H:%M:%S.%f')
print(datax)


datax = get_position_infos()  #这里error
这个函数再最开始的时候就被定义了。没有经过initial初始话函数,很多数据没有获取,从而导致的报错。
 欢迎关注交流

  查看全部
这个是新手经常遇到的问题。读取持仓信息的时候报错:
代码如下:
 
 
原因就是不能init之前去读取
# encoding:gbk
'''
实盘可以执行
固定数量
'''
import datetime


ACCOUNT = ''


def init(ContextInfo):
ContextInfo.set_account(ACCOUNT)


def get_position_infos():
# 信用账户可用资金
position_infos = get_trade_detail_data(ACCOUNT, 'stock', 'position')


pos_dict={}
for pos in position_infos:
code = pos.m_strInstrumentID
if pos.m_nVolume > 0:
pos_dict[code] = pos.m_nVolume
return pos_dict

datax = get_position_infos() # 这里error

def handlebar(ContextInfo):
if ContextInfo.is_last_bar():
current = datetime.datetime.now().strftime('%H:%M:%S.%f')
print(datax)


datax = get_position_infos()  #这里error
这个函数再最开始的时候就被定义了。没有经过initial初始话函数,很多数据没有获取,从而导致的报错。
 欢迎关注交流

 

QMT股票两融对冲建仓实盘

QMT李魔佛 发表了文章 • 0 个评论 • 650 次浏览 • 2024-05-29 12:02 • 来自相关话题

为了避免速度过快造成价格波动,提供速度,数量,延时控制。





 
成交了多少量,就融券多少量。达到指标即可停止。
 
代写量化程序,可以关注公众号,后台联系。 价格比QMT官网低的多了。实战性选手,选过N多QMT,ptrade实盘代码。
  查看全部
为了避免速度过快造成价格波动,提供速度,数量,延时控制。

20240529111758.png

 
成交了多少量,就融券多少量。达到指标即可停止。
 
代写量化程序,可以关注公众号,后台联系。 价格比QMT官网低的多了。实战性选手,选过N多QMT,ptrade实盘代码。
 

Ptrade成交回调函数无法执行的原因? | ptrade bug

Ptrade李魔佛 发表了文章 • 0 个评论 • 298 次浏览 • 2024-05-28 00:08 • 来自相关话题

目前的ptrade有一个隐藏很深的bug。
 
就是回调函数里面有一个字段entrust_no.
 
这个字段是什么意思呢? 是营业部的下单编号。比如你挂了一个委托单,就会有一个entrust_no, 比如 100001
 
这个编号对于一天的数据来说,是唯一不重复的,也就是一天内再不会出现100001。
 
而ptrade的成交回调依赖的是这个entrust_no, 如果系统里面已经触发过了一个entrust_no 为 100001的成交委托,那么如果又有一个重复的订单entrust_no 100001成交,那么,此时的ptrade的 成交回调函数是不会触发的!
 
那么上面说的一天内这个entrust_no是不会重复的。
 
可是,这个entrust_no挂单编号,在同一个营业部单元里,第二天会重复的,比如你第二天挂单也是entrust_no 100001,并且你的ptrade策略没有重启,也就是一直运行的话,那么如果碰巧你的下单entrust_no上昨天或者之前某一天(ptrade策略没有重启开始算起),entrust_no重复了的情况下。 
 
此时的ptrade 成交回调函数 on_trade_repsonse 是不会执行的!!!
 
天坑!
  查看全部
目前的ptrade有一个隐藏很深的bug。
 
就是回调函数里面有一个字段entrust_no.
 
这个字段是什么意思呢? 是营业部的下单编号。比如你挂了一个委托单,就会有一个entrust_no, 比如 100001
 
这个编号对于一天的数据来说,是唯一不重复的,也就是一天内再不会出现100001。
 
而ptrade的成交回调依赖的是这个entrust_no, 如果系统里面已经触发过了一个entrust_no 为 100001的成交委托,那么如果又有一个重复的订单entrust_no 100001成交,那么,此时的ptrade的 成交回调函数是不会触发的!
 
那么上面说的一天内这个entrust_no是不会重复的。
 
可是,这个entrust_no挂单编号,在同一个营业部单元里,第二天会重复的,比如你第二天挂单也是entrust_no 100001,并且你的ptrade策略没有重启,也就是一直运行的话,那么如果碰巧你的下单entrust_no上昨天或者之前某一天(ptrade策略没有重启开始算起),entrust_no重复了的情况下。 
 
此时的ptrade 成交回调函数 on_trade_repsonse 是不会执行的!!!
 
天坑!
 

python redis 是没有 blpush这个操作的

python马化云 发表了文章 • 0 个评论 • 280 次浏览 • 2024-05-22 09:29 • 来自相关话题

上面的redis代码里面:
 
class RedisCls:

def __init__(self):
self.conn = self.getConn()

def getConn(self):
try:
r = redis.Redis(host=redisconfig['redis']['host'], port=redisconfig['redis']['port'], db=0,
decode_responses=True, password=redisconfig['redis']['password'], socket_connect_timeout=5)
except Exception as e:
print(e)
raise IOError('connect redis failed')
else:
return r


def get(self, key):
return self.conn.get(key)


def set(self, key, value):
return self.conn.set(key, value)

def pop(self, key):
print('==== pop data ====')
return self.conn.brpop(key)

def push(self, key, value):
print('==== push data ====')
self.conn.blpush(key, value)




  
报错:
AttributeError: 'Redis' object has no attribute 'blpush'. Did you mean: 'lpush'?
 
问题在于这一句:

self.conn.blpush(key, value)
 
python redis里面是没有blpush这个操作的。
也就是没有阻塞插入这个动作。 比如一个list满了,就阻塞插入数据,在python redis里面是没有这个操作。
你可以用llen 先判读一下长度,然后再决定是否插入就可以了。
 
  查看全部
上面的redis代码里面:
 
class RedisCls:

def __init__(self):
self.conn = self.getConn()

def getConn(self):
try:
r = redis.Redis(host=redisconfig['redis']['host'], port=redisconfig['redis']['port'], db=0,
decode_responses=True, password=redisconfig['redis']['password'], socket_connect_timeout=5)
except Exception as e:
print(e)
raise IOError('connect redis failed')
else:
return r


def get(self, key):
return self.conn.get(key)


def set(self, key, value):
return self.conn.set(key, value)

def pop(self, key):
print('==== pop data ====')
return self.conn.brpop(key)

def push(self, key, value):
print('==== push data ====')
self.conn.blpush(key, value)

20240522092858.png

  
报错:
AttributeError: 'Redis' object has no attribute 'blpush'. Did you mean: 'lpush'?

 
问题在于这一句:

self.conn.blpush(key, value)
 
python redis里面是没有blpush这个操作的。
也就是没有阻塞插入这个动作。 比如一个list满了,就阻塞插入数据,在python redis里面是没有这个操作。
你可以用llen 先判读一下长度,然后再决定是否插入就可以了。
 
 

迅投官网的实例代码好多问题,惨不忍睹

QMT李魔佛 发表了文章 • 0 个评论 • 352 次浏览 • 2024-05-12 16:55 • 来自相关话题

以前喜欢用C替代ContextInfo,现在改过去了,又有部分改的不完整。
 
还有更多的缩进的问题。
 





 
pep8的规范早已经不用tab来做缩进,而是用4个空格。
 
之前的文章里面也提到了,可以在qmt的配置文件里面改的。不过在UI上是不提供修改的地方。
http://www.30daydo.com/article/44602
  查看全部

20240512165205.png

以前喜欢用C替代ContextInfo,现在改过去了,又有部分改的不完整。
 
还有更多的缩进的问题。
 

20240512165415.png

 
pep8的规范早已经不用tab来做缩进,而是用4个空格。
 
之前的文章里面也提到了,可以在qmt的配置文件里面改的。不过在UI上是不提供修改的地方。
http://www.30daydo.com/article/44602
 

QMT里定时任务运行时间操作定时任务的间隔,会怎么样?

QMT李魔佛 发表了文章 • 0 个评论 • 360 次浏览 • 2024-05-06 10:32 • 来自相关话题

代码很简单,就是在run_time这个定期运行的任务里面,定期1秒执行一次任务
 







当时任务运行时间超过1秒钟,比如上面的代码里面用time.sleep(3) 模拟这个超时,等待3秒。

在tick 实盘模式下运行,输出什么的?

答案如下:








每次的start和end之间间隔了3秒钟,然后下一次的start和上一次start的间隔也是在3秒钟,也就是当然时刻的定时任务没有执行完成,下一个时刻的定时任务不会被执行。

那么有人会要求,不想要被运行时间长的任务阻碍了当前的任务,要怎么操作呢? 最简单的方式,加一个多线程就好了。

稍微改动一下上面的代码:







把要执行的任务,写成一个函数,然后使用threading.Thread去执行这个函数, t.star() 就是启动任务。








执行结果如上图,每次的start 间隔只有1秒,当时end是要等待3秒之后才打印出来。但end的输出不会阻塞当前的start输出,start稳定地1秒间隔输出一次,end也在当前start的3秒之后打印出来。
 
  查看全部
代码很简单,就是在run_time这个定期运行的任务里面,定期1秒执行一次任务
 

20240506101947.png



当时任务运行时间超过1秒钟,比如上面的代码里面用time.sleep(3) 模拟这个超时,等待3秒。

在tick 实盘模式下运行,输出什么的?

答案如下:


20240506101516.png



每次的start和end之间间隔了3秒钟,然后下一次的start和上一次start的间隔也是在3秒钟,也就是当然时刻的定时任务没有执行完成,下一个时刻的定时任务不会被执行。

那么有人会要求,不想要被运行时间长的任务阻碍了当前的任务,要怎么操作呢? 最简单的方式,加一个多线程就好了。

稍微改动一下上面的代码:

20240506101043.png



把要执行的任务,写成一个函数,然后使用threading.Thread去执行这个函数, t.star() 就是启动任务。


20240506101030.png



执行结果如上图,每次的start 间隔只有1秒,当时end是要等待3秒之后才打印出来。但end的输出不会阻塞当前的start输出,start稳定地1秒间隔输出一次,end也在当前start的3秒之后打印出来。
 
 

国盛证券的Ptrade数据无论是回测还是实盘很有问题,前复权不正确,数据断崖

Ptrade李魔佛 发表了文章 • 0 个评论 • 489 次浏览 • 2024-04-18 00:19 • 来自相关话题

连基本的历史数据都无法保证数据正确。
 
举个例子,比如 煤炭ETF 515220,





 
在4月12日进行的除权,1股变2股,因此,所以4月12日之后的价格会是原来的1/2,如果做前复权,那么前面的价格也都是要根据当前的价格做复权处理。
 
结果国盛的ptrade的历史数据,取的是前复权数据,前复权数据,(重点强调),在4月12日的的时候就出现了断崖。也就是没有做复权的处理。





 
测试代码很简单:
def initialize(context):
run_daily(context, event, '09:38')


def handle_data(context, data):
pass


def event(context):
his60 = get_history(60, '1d', ['close'], ['515220.SS'], fq='pre', include=False)
print(his60)运行时间改成任意的就行。
 
获取历史数据用
get_history,取过去60天的前复权的数据。 然后就是断崖的数据。 已经确定是国盛的ptrade数据问题。因为我用上面的代码,在东莞证券,国金证券,湘财证券的ptrade上运行,均能得到正确的数据。
 
然后更为搞笑的,这么一个问题,反馈了,没有回应。无语。
 
 
  查看全部
连基本的历史数据都无法保证数据正确。
 
举个例子,比如 煤炭ETF 515220,

20240418001102.png

 
在4月12日进行的除权,1股变2股,因此,所以4月12日之后的价格会是原来的1/2,如果做前复权,那么前面的价格也都是要根据当前的价格做复权处理。
 
结果国盛的ptrade的历史数据,取的是前复权数据,前复权数据,(重点强调),在4月12日的的时候就出现了断崖。也就是没有做复权的处理。

微信图片_20240418001026.png

 
测试代码很简单:
def initialize(context):
run_daily(context, event, '09:38')


def handle_data(context, data):
pass


def event(context):
his60 = get_history(60, '1d', ['close'], ['515220.SS'], fq='pre', include=False)
print(his60)
运行时间改成任意的就行。
 
获取历史数据用
get_history,取过去60天的前复权的数据。 然后就是断崖的数据。 已经确定是国盛的ptrade数据问题。因为我用上面的代码,在东莞证券,国金证券,湘财证券的ptrade上运行,均能得到正确的数据。
 
然后更为搞笑的,这么一个问题,反馈了,没有回应。无语。
 
 
 

使用量化程序获取ETF的成分股与实时净值

QMT李魔佛 发表了文章 • 0 个评论 • 478 次浏览 • 2024-04-11 12:22 • 来自相关话题

代码只有几行:
# coding:gbk
def init(C):
pass

def handlebar(C):
iopv = get_etf_iopv("159928.SZ")
print(f'基金净值为{iopv}')
info = get_etf_info('513520.SH')
print(f'基金申购信息: {info}')
得到的数据如下:





 
需要开通低门槛量化QMT的朋友,可以扫码关注公众号开通: 查看全部
代码只有几行:
# coding:gbk
def init(C):
pass

def handlebar(C):
iopv = get_etf_iopv("159928.SZ")
print(f'基金净值为{iopv}')
info = get_etf_info('513520.SH')
print(f'基金申购信息: {info}')

得到的数据如下:

20240411122042.png

 
需要开通低门槛量化QMT的朋友,可以扫码关注公众号开通:

QMT回测会跳过当前的周六日和节假日吗

QMT李魔佛 发表了文章 • 0 个评论 • 430 次浏览 • 2024-04-09 13:13 • 来自相关话题

使用的handle_bar进行回测,它是会自动跳过周六日和节假日的。
比如回测日期选择 2024年3月28日到2024年4月2日。
其中3月30日和31日是周六日。
下面回测的数据是不执行这两天的数据。从3月30日 15:00的数据,下一个bar就是4月1日09:30了




需要低门槛开通量化QMT,Ptrade,可以扫码联系。
开通后可加入技术交流群。 查看全部
使用的handle_bar进行回测,它是会自动跳过周六日和节假日的。
比如回测日期选择 2024年3月28日到2024年4月2日。
其中3月30日和31日是周六日。
下面回测的数据是不执行这两天的数据。从3月30日 15:00的数据,下一个bar就是4月1日09:30了
20240409130951.png

需要低门槛开通量化QMT,Ptrade,可以扫码联系。
开通后可加入技术交流群。

qmt下载完数据之后,记得重启一次qmt,不然get_market_data_ex依然还是获取不到数据的

QMT李魔佛 发表了文章 • 0 个评论 • 507 次浏览 • 2024-04-01 13:38 • 来自相关话题

最近群里问这个问题的人比较多。
 
qmt下载完数据之后,get_market_data_ex依然还是获取不到数据。
 
其实主要数据没有刷新。
 
只需要你手动关闭QMT,再打开一次就好了。
 





 
反正呢,这些问题,QMT也不会告诉你,要靠自己摸索了。
 
欢迎收藏网站哦! 查看全部
最近群里问这个问题的人比较多。
 
qmt下载完数据之后,get_market_data_ex依然还是获取不到数据。
 
其实主要数据没有刷新。
 
只需要你手动关闭QMT,再打开一次就好了。
 

20240401133759.png

 
反正呢,这些问题,QMT也不会告诉你,要靠自己摸索了。
 
欢迎收藏网站哦!

QMT每次自动升级,都会把改过的配置文件给覆盖掉

QMT李魔佛 发表了文章 • 0 个评论 • 518 次浏览 • 2024-03-31 14:23 • 来自相关话题

太业余。
感觉设计模式有问题。
 
本来我配置了缩进用的4个空格,(这是pep8的标准好吧)
而qmt默认是用tab做缩进。
 
导致从vs code或者pycharm上的代码迁移迁移过来qmt的编辑器,你按tab键,是制表符,而不是4个空格。
 
运行或者回测就会报错。





 
每次升级都把我的配置给改了。
 
难道不覆盖config文件不行吗? 每次类似全量升级,一点点bug fix都在全量升级
  查看全部
太业余。
感觉设计模式有问题。
 
本来我配置了缩进用的4个空格,(这是pep8的标准好吧)
而qmt默认是用tab做缩进。
 
导致从vs code或者pycharm上的代码迁移迁移过来qmt的编辑器,你按tab键,是制表符,而不是4个空格。
 
运行或者回测就会报错。

20240331004.png

 
每次升级都把我的配置给改了。
 
难道不覆盖config文件不行吗? 每次类似全量升级,一点点bug fix都在全量升级
 

不同券商的数据质量简单对比:国金QMT vs 国信QMT(iquant)

QMT李魔佛 发表了文章 • 0 个评论 • 1022 次浏览 • 2024-03-31 11:57 • 来自相关话题

同一段代码,先在国信上跑回测,先获取可转债的1分钟的分笔数据,发现一些时间段里的成交额居然是0. (数据已经先下载好了)

点击打开大图





上面的amount字段(成交额),返回的是0。

看了一下对应的转债,没有停牌,是有正常数据交易的。

然后用国金的QMT记性交叉验证。同样的代码
点击打开大图




 
国金的是正常的。只是成交量的小数浮点位是不是有点多了? 可能用的numy的默认9位,没有做处理而已。

【在写这个文章的时候发现国信的qmt的volume成交量是有数据的,那么其实可以用价格x成交量=成交额,间接获取成交额,大坑】

点击打开大图




 
附测试源码:
 # coding:gbk
# 公众号:可转债量化分析
DEBUG = True
import time
def get_datetime(ContextInfo):
# 获取当前时间
index = ContextInfo.barpos
realtime = ContextInfo.get_bar_timetag(index)
date = timetag_to_datetime(realtime, "%Y-%m-%d %H:%M:%S")
if DEBUG:
print('当前日期 ', date)
return date

def init(ContextInfo):
print("==============start==========")
ContextInfo.start = '2024-03-27 10:00:00'
ContextInfo.end = '2024-03-29 10:00:00'
#
#ContextInfo.end = '2023-01-05'
#ContextInfo.start = '2023-01-16'
print('init')

def handlebar(ContextInfo):
# 回测的时候不需要
#if not ContextInfo.is_last_bar():
# print('return')
# return
get_datetime(ContextInfo)
print('handlebar')
data = ContextInfo.get_market_data(['quoter'], stock_code = ['123167.SZ'], skip_paused = True, period = 'tick', dividend_type = 'front')

#data = ContextInfo.get_market_data(['close'], stock_code = ['113567.SH'], skip_paused = True, period = '1d', dividend_type = 'front')
#print(type(data))
print(data)

def stop(ContextInfo):
print( 'strategy is stop !') 查看全部
同一段代码,先在国信上跑回测,先获取可转债的1分钟的分笔数据,发现一些时间段里的成交额居然是0. (数据已经先下载好了)

点击打开大图
20240331002.png


上面的amount字段(成交额),返回的是0。

看了一下对应的转债,没有停牌,是有正常数据交易的。

然后用国金的QMT记性交叉验证。同样的代码
点击打开大图
20240331001.png

 
国金的是正常的。只是成交量的小数浮点位是不是有点多了? 可能用的numy的默认9位,没有做处理而已。

【在写这个文章的时候发现国信的qmt的volume成交量是有数据的,那么其实可以用价格x成交量=成交额,间接获取成交额,大坑】

点击打开大图
20240331003.png

 
附测试源码:
 
# coding:gbk
# 公众号:可转债量化分析
DEBUG = True
import time
def get_datetime(ContextInfo):
# 获取当前时间
index = ContextInfo.barpos
realtime = ContextInfo.get_bar_timetag(index)
date = timetag_to_datetime(realtime, "%Y-%m-%d %H:%M:%S")
if DEBUG:
print('当前日期 ', date)
return date

def init(ContextInfo):
print("==============start==========")
ContextInfo.start = '2024-03-27 10:00:00'
ContextInfo.end = '2024-03-29 10:00:00'
#
#ContextInfo.end = '2023-01-05'
#ContextInfo.start = '2023-01-16'
print('init')

def handlebar(ContextInfo):
# 回测的时候不需要
#if not ContextInfo.is_last_bar():
# print('return')
# return
get_datetime(ContextInfo)
print('handlebar')
data = ContextInfo.get_market_data(['quoter'], stock_code = ['123167.SZ'], skip_paused = True, period = 'tick', dividend_type = 'front')

#data = ContextInfo.get_market_data(['close'], stock_code = ['113567.SH'], skip_paused = True, period = '1d', dividend_type = 'front')
#print(type(data))
print(data)

def stop(ContextInfo):
print( 'strategy is stop !')

国金证券的融券数量多吗?什么是专项券源?

股票李魔佛 发表了文章 • 0 个评论 • 496 次浏览 • 2024-03-30 17:13 • 来自相关话题

因为国金的两融开通太方便了,不用跑柜台。app就可以开通,而且融资利率低,5%。
 
那么融券呢?
 
今天特意问了下经理,他发了一个融券的表格给我。
 





 
目前国金里面一般开通了融资融券的投资者,可用的券源有290个左右,随借随还的。说实话,这个数量不算太多。
 
而且里面的个股,部分也只能融100股,几百股的。所以即使被你融到券,实际下来的绝对收益也不会太高。
 
不过它也有一个专项券源。
它有资金要求,前20个交易日日均资产不低于300万元,才能够申请。
 
发现里面的券,主要是深圳交易所的为主,占了90%以上。





 
而且专项券源里面的可融券数量也比普通券源的要多很多,几千股,上万股的。
 
公共券源 :
实时可借 ,随时可融券卖出, 随借随还,融券卖出开仓后最快下一交易日方可归还融券负债 信用账户融券费率 按使用天数计息,算头不算尾
 
操作步骤: 融券卖出(所有客户端)
 
 
专项券源:
 实时可借 ,审批划拨成功后当日专项融券卖出, 固定期限(一般28天以内),不可提前归还 ;
专项融券头寸占用费率 : 按专项头寸合约期限计息,不论合约期限内客户是否使用券源,均需支付专项头寸合约占用利息,算头算尾 
 
操作步骤:
第1步:专项融券头寸申请(佣金宝APP/国金太阳至强版)

第2步:专项融券卖出(佣金宝APP/国金太阳至强版)
 





  查看全部
因为国金的两融开通太方便了,不用跑柜台。app就可以开通,而且融资利率低,5%。
 
那么融券呢?
 
今天特意问了下经理,他发了一个融券的表格给我。
 

20240330170633.png

 
目前国金里面一般开通了融资融券的投资者,可用的券源有290个左右,随借随还的。说实话,这个数量不算太多。
 
而且里面的个股,部分也只能融100股,几百股的。所以即使被你融到券,实际下来的绝对收益也不会太高。
 
不过它也有一个专项券源。
它有资金要求,前20个交易日日均资产不低于300万元,才能够申请。
 
发现里面的券,主要是深圳交易所的为主,占了90%以上。

20240330171053.png

 
而且专项券源里面的可融券数量也比普通券源的要多很多,几千股,上万股的。
 
公共券源 :
实时可借 ,随时可融券卖出, 随借随还,融券卖出开仓后最快下一交易日方可归还融券负债 信用账户融券费率 按使用天数计息,算头不算尾
 
操作步骤: 融券卖出(所有客户端)
 
 
专项券源:
 实时可借 ,审批划拨成功后当日专项融券卖出, 固定期限(一般28天以内),不可提前归还 ;
专项融券头寸占用费率 : 按专项头寸合约期限计息,不论合约期限内客户是否使用券源,均需支付专项头寸合约占用利息,算头算尾 
 
操作步骤:
第1步:专项融券头寸申请(佣金宝APP/国金太阳至强版)

第2步:专项融券卖出(佣金宝APP/国金太阳至强版)
 

20240330171336.png

 

程序自动获取限购-溢价LOF基金套利,并推送到微信消息

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 509 次浏览 • 2024-03-23 23:32 • 来自相关话题

最近2个月QDII的套利机会挺多的。

如前面的印度基金LOF,嘉实原油LOF,全球芯片LOF,到现在的标普500LOF。

如果平时工作繁忙,没有时间每天翻看基金的公告,或者没时间看大V们公众号消息推送。

或者自己想要遍历所有限购状态的LOF基金,并自动筛选出溢价的可套利标的,提前埋伏。

那么可以自己动手,写个简单的监控推送程序。






微信推送电脑安装必要的python环境,和pandas,akshare库。

获取所有基金的数据
import akshare as ak
fund_purchase_em_df = ak.fund_purchase_em()





 
得到大概2万个基金数据。

然后剩下的就是过滤条件了,因为这里面包含了很多货基,债基等我们不需要的基金类型。

用value_counts 就知道有多少种类型:





 
 
平时我们做套利的,一般以QDII基金为主,大部分的情况是因为外汇额度用完而导致的限购。

所以监控的品种可以选择QDII类型或者海外股票等。

示例里笔者选一个 指数型-海外股票

然后过来条件按照个人喜好来设定:

比如选择限购1万以下的LOF:
def filter_func(df,type='指数型-海外股票'):
df = df[~df['基金代码'].str.startswith('0')]
condition1 = df['申购状态']=='限大额'
condition2 = df['基金类型']==type
df = df[condition1 & condition2]
df= df[~df['基金简称'].str.contains('ETF')]
df = df[(df['日累计限定金额']>0) & (df['日累计限定金额']<=10000)]
df['基金代码'] = df['基金代码'].map(lambda x: 'SH'+x if x.startswith('5') else 'SZ'+x)
return df
 
得到下面的结果:





 
 
因为上面的返回数据没有溢价率,所以我们就需要自己写个获取溢价率的函数去处理一下:
import requests
cookies = # 雪球上获取,不一定需要登录状态

headers = {
'authority': 'stock.xueqiu.com',
'origin': 'https://xueqiu.com',
'user-agent': 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3',
}

def fund_premium_rate(code):
params = {
'symbol': code,
'extend': 'detail',
}

response = requests.get('https://stock.xueqiu.com/v5/stock/quote.json', params=params,
cookies=cookies,
headers=headers)
try:
rate = response.json()['data']['quote']['premium_rate']
except Exception as e:
return None
else:
return rate
上面循环里会自动把没有对应场内基金的数据过滤掉。

运行2秒就得到了数据:





 
 
然后我们发现这几只限购的是处于轻微折价状态,只有易方达标普500LOF是溢价26%,只有它可以开拖拉机去套的。

微信推送

最后是发消息通知自己。早期开通的个人企业微信API,可以直接使用微信的API发送消息。如果现在申请,需要有自己的个人域名和备案。

可以设定溢价率大于某个阈值才发送消息。比如溢价率大于4以上才发送。
for code,name in code_name_mapper.items():
rate = fund_premium_rate(code)
if rate is not None:
print(f'{code} - {name}的溢价率是: {rate}')
if rate > 4:
send_message_via_wechat(f'{code} - {name}的溢价率是: {rate}, 可以关注套利。 公众号:可转债量化分析')
 
为了演示,去掉这个条件,把全部数据的都发送吧。






 
效果图
 
然后就可以把全部代码放在一起,用windows的定时任务或者linux的crontab自动运行了。

目前QMT,Ptrade不支持拖拉机账号,所以自动化拖拉机的功能就实现不了了哈。

PS:顺便附录一份全部限购1万以下的基金全表。

需要的关注公众号后台回复:基金限购名单

获取即可。
  查看全部
最近2个月QDII的套利机会挺多的。

如前面的印度基金LOF,嘉实原油LOF,全球芯片LOF,到现在的标普500LOF。

如果平时工作繁忙,没有时间每天翻看基金的公告,或者没时间看大V们公众号消息推送。

或者自己想要遍历所有限购状态的LOF基金,并自动筛选出溢价的可套利标的,提前埋伏。

那么可以自己动手,写个简单的监控推送程序。

Screenshot_2024_0323_210024.jpg


微信推送电脑安装必要的python环境,和pandas,akshare库。

获取所有基金的数据
import akshare as ak
fund_purchase_em_df = ak.fund_purchase_em()


20240323203008.png

 
得到大概2万个基金数据。

然后剩下的就是过滤条件了,因为这里面包含了很多货基,债基等我们不需要的基金类型。

用value_counts 就知道有多少种类型:

20240323203319.png

 
 
平时我们做套利的,一般以QDII基金为主,大部分的情况是因为外汇额度用完而导致的限购。

所以监控的品种可以选择QDII类型或者海外股票等。

示例里笔者选一个 指数型-海外股票

然后过来条件按照个人喜好来设定:

比如选择限购1万以下的LOF:
def filter_func(df,type='指数型-海外股票'):
df = df[~df['基金代码'].str.startswith('0')]
condition1 = df['申购状态']=='限大额'
condition2 = df['基金类型']==type
df = df[condition1 & condition2]
df= df[~df['基金简称'].str.contains('ETF')]
df = df[(df['日累计限定金额']>0) & (df['日累计限定金额']<=10000)]
df['基金代码'] = df['基金代码'].map(lambda x: 'SH'+x if x.startswith('5') else 'SZ'+x)
return df

 
得到下面的结果:

20240323203905.png

 
 
因为上面的返回数据没有溢价率,所以我们就需要自己写个获取溢价率的函数去处理一下:
import requests
cookies = # 雪球上获取,不一定需要登录状态

headers = {
'authority': 'stock.xueqiu.com',
'origin': 'https://xueqiu.com',
'user-agent': 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3',
}

def fund_premium_rate(code):
params = {
'symbol': code,
'extend': 'detail',
}

response = requests.get('https://stock.xueqiu.com/v5/stock/quote.json', params=params,
cookies=cookies,
headers=headers)
try:
rate = response.json()['data']['quote']['premium_rate']
except Exception as e:
return None
else:
return rate

上面循环里会自动把没有对应场内基金的数据过滤掉。

运行2秒就得到了数据:

20240323204323.png

 
 
然后我们发现这几只限购的是处于轻微折价状态,只有易方达标普500LOF是溢价26%,只有它可以开拖拉机去套的。

微信推送

最后是发消息通知自己。早期开通的个人企业微信API,可以直接使用微信的API发送消息。如果现在申请,需要有自己的个人域名和备案。

可以设定溢价率大于某个阈值才发送消息。比如溢价率大于4以上才发送。
for code,name in code_name_mapper.items():
rate = fund_premium_rate(code)
if rate is not None:
print(f'{code} - {name}的溢价率是: {rate}')
if rate > 4:
send_message_via_wechat(f'{code} - {name}的溢价率是: {rate}, 可以关注套利。 公众号:可转债量化分析')

 
为了演示,去掉这个条件,把全部数据的都发送吧。


Screenshot_2024_0323_210024.jpg

 
效果图
 
然后就可以把全部代码放在一起,用windows的定时任务或者linux的crontab自动运行了。

目前QMT,Ptrade不支持拖拉机账号,所以自动化拖拉机的功能就实现不了了哈。

PS:顺便附录一份全部限购1万以下的基金全表。

需要的关注公众号后台回复:基金限购名单

获取即可。
 

108个AI工具,写作、翻译、设计、音视频、代码、文件处理大全集

AI应用马化云 发表了文章 • 0 个评论 • 558 次浏览 • 2024-03-21 00:16 • 来自相关话题

文心一言 

https://yiyan.baidu.com    

·简介:综合型AI:内容生成、文档分析、图像分析、图表制作、脑图……    



·通义千问  

https://tongyi.aliyun.com    

 ·综合型AI:内容生成、文档分析、图像分析……   




·Kimi(月之暗面)    

https://kimi.moonshot.cn    

· 综合型AI:内容生成、文档分析、灵感推荐……  




·腾讯混元    

https://hunyuan.tencent.com/bot/chat    

·综合型AI:内容生成、文档分析、灵感推荐……    




·讯飞星火    

https://xinghuo.xfyun.cn

·综合型AI:内容生成……    




抖音豆包  

https://www.doubao.com    

综合型AI:内容生成,偏互联网运营方向……    



智谱AI    

https://open.bigmodel.cn    

综合型AI:内容生成、知识问答……    




百川智能    

https://www.baichuan-ai.com/chat    

综合型AI:内容生成、文档分析、互联网搜索……    





360智脑    

https://ai.360.com    

综合型AI:360智脑全家桶……    




字节小悟空

https://wukong.com/tool    

综合型AI:字节跳动内容生成工具集    




达观数据曹植    

http://www.datagrand.com/    

行业垂域大模型    




02

聊天/内容生成

360数字员工    

https://ai.360.com    

团队协作共享,企业知识库、AI文档分析、AI营销文案、AI文书写作等智能工具    




有道AI    

https://ai.youdao.com    

文档、翻译、视觉、语音、教育……    




03

AI办公-Office

AiPPT    

https://www.aippt.cn    

自动生成PPT大纲、模板、Word-PPT…… 




iSlide    

https://www.islide.cc    

AI 一键设计 PPT    




WPS AI    

https://ai.wps.cn    

WPS的AI插件(智能PPT、表格、文档整理……) 




ChatPPT    

http://www.chat-ppt.com    

AI插件,支持Office、WPS,自动文档生成    




360苏打办公    

https://bangong.360.cn    

AI办公工具集:文档、视频、设计、开发……    




酷表ChatExcel    

https://chatexcel.com    

智能Excel公式  




商汤办公小浣熊    

https://raccoon.sensetime.com    

智能图表    




04

AI办公-会议纪要

讯飞听见    

https://www.iflyrec.com    

音视频转文字,实时录音转文字,同传,翻译…… 

阿里通义听悟    

https://tingwu.aliyun.com    

实时转录,音视频转文字,互联网内容提炼……   




飞书妙记    

https://www.feishu.cn/product/ ... e.com    

飞书文档中的会议纪要工具,实时转录,音视频转文字    




腾讯会议AI   

https://meeting.tencent.com/ai/index.html    

腾讯会议录制后会议纪要整理    




05

AI办公-脑图

ProcessOn    

https://www.processon.com   

 AI思维导图   




亿图脑图    

https://www.edrawsoft.cn/mindmaster   

 AI思维导图    




GitMind思乎    

https://gitmind.cn/    

AI思维导图    




boardmix   博思白板    

https://boardmix.cn/ai-whiteboard    

实时协作的智慧白板上,一键生成PPT、用AI协助创作思维导图、AI绘画、AI写作,共享资源素材    




妙办画板    

https://imiaoban.com    

生成流程图、思维导图    




06

AI办公-文档

司马阅AI文档    

https://smartread.cc/    

每天免费100次提问,AI文档阅读分析工具,通过聊天互动形式,精准地从复杂文档提取并分析信息  




360AI浏览器    

https://ai.360.com    

智能摘要、文章脉络、思维导图等

    

07

AI写作

有道云笔记AI    

https://note.youdao.com    

有道云笔记写作插件,改写扩写润色……    




腾讯  Effidit    

https://effidit.qq.com    

智能纠错、文本补全、文本改写、文本扩写、词语推荐、句子推荐与生成等功能    




讯飞写作    

https://huixie.iflyrec.com    

AI对话写作、模板写作、素材、润色……    




深言达意    

https://www.shenyandayi.com    

根据模糊描述,找词找句的智能写作工具    




阿里悉语    

https://login.taobao.com    

淘宝专用的商品文案生成,输入商品的淘宝链接即可获得文案    




字节火山写作    

https://www.writingo.net    

全文润色的AI智能写作  




秘塔写作猫    

https://xiezuocat.com    

AI写作模板,AI写作工具,指令扩写润色……    




光速写作    

https://guangsuxie.com    

作业帮旗下:全文生成、PPT生成、问答助手、写作助手    




WriteWise  

https://www.ximalaya.com/gatek ... ot.cn    

喜马拉雅小说创作工具  




笔灵AI    

https://ibiling.cn    

一键生成工作计划、文案方案……    




易撰    

https://www.yizhuan5.com    

自媒体内容    




Giiso写作机器人    

https://www.giiso.com    

写作、文配图、风格转换、文生图……    




5118  SEO优化精灵    

https://www.5118.com/seometa    

快速生成高质量SEO标题、Meta描述和关键字,轻松提升网站搜索引擎排名    




08

AI翻译

沉浸式翻译    

https://immersivetranslate.com    

翻译外语网页,PDF翻译,EPUB电子书翻译,视频双语字幕翻译等 




彩云小译    

https://fanyi.caiyunapp.com    

多种格式文档的翻译、同声传译、文档翻译和网页翻译。




网易见外    

https://sight.youdao.com    

字幕、音频转写、同传、文档翻译……   

 

09

AI搜索引擎

天工AI搜索(昆仑万维)    

https://search.tiangong.cn    

找资料、查信息、搜答案、搜文件,还会对海量搜索结果做AI智能聚合   




360AI搜索    

https://ai.360.com    

AI搜索能够从海量的网站中主动寻找、提炼精准答案    




秘塔AI搜索    

https://metaso.cn    

没有广告,直达结果    




perplexity.ai    

www.perplexity.ai    

黄仁勋带货的AI搜索引擎  




sciphi.ai    

https://search.sciphi.ai   

AI搜索引擎    




devv.ai    

https://devv.ai    

为开发人员打造的人工智能驱动的搜索引擎

    

10

聊天/内容生成

通义万相    

https://tongyi.aliyun.com    

AI生成图片,人工智能艺术创作大模型    




文心一格    

https://yige.baidu.com    

文生图像    




剪映AI    

https://www.capcut.cn    

剪映一键生成AI绘画   




腾讯ARC    

https://arc.tencent.com    

人像修复、人像抠图、动漫增强    




360智绘    

https://ai.360.com    

风格化AI绘画、Lora训练    




无限画    

https://588ku.com/ai/wuxianhua/Home    

智能图像设计,整合千库网的设计行业知识经验、资源数据    




美图设计室    

https://www.x-design.com    

图像智能处理,海报设计……    




liblib.ai    

https://www.liblib.ai     

AI 模型分享平台-各种风格的图像微调模型    




Tusi.Art    

https://tusiart.com     

AI 模型分享平台 




标小智Logo生成    

https://www.logosc.cn    

在线LOGO设计,生成企业VI    




佐糖    

https://picwish.cn    

丰富的图像处理工具    




Vega AI    

https://vegaai.net    

文生图,图生图,姿态生图,文生视频,图生视频……    




美图WHEE    

https://www.whee.com    

文生图,图生图,文生视频,扩图改图超清……    




无界AI    

https://www.wujieai.com    

文生图   




BgSub    

https://bgsub.cn    

抠图    




阿里PicCopilot    

https://www.piccopilot.com    

阿里巴巴国际,AI驱动图片优化工具,专门为电商领域提供服务




搜狐简单AI   

https://ai.sohu.com    智能图片生成平台和社区    




6pen    

https://6pen.art    

文本描述生成绘画艺术作品    




11

AI设计

阿里堆友    

https://d.design    

面向设计师群体的AI设计社区    




稿定AI    

https://www.gaoding.com    

图像设计    




墨刀AI    

https://modao.cc    

产品设计协作平台    




莫高设计MasterGo   AI    

https://mastergo.com    

AI时代的企业级产品设计平台,界面设计、交互设计……    




创客贴AI    

https://www.chuangkit.com    

图形图像设计    




即时AI    

https://js.design/ai    

文生UI,文生图,图生UI……    




PixsO AI    

https://pixso.cn    

新生代UI设计工具    




抖音即创    

https://aic.oceanengine.com    

抖音电商智能创作平台,提供AI视频创作、图文创作和直播创作    




腾讯 AIDesign    

https://ailogo.qq.com    

腾讯的logo设计    




美间    

https://www.meijian.com    

AI软装设计、海报和提案生成工具    




12

AI音频

度加创作工具    

https://aigc.baidu.com    

热搜一键成稿,文稿一键成片    




魔音工坊    

https://www.moyin.com    

AI配音工具    




网易天音    

https://tianyin.music.163.com    

智能编曲,海量风格    




TME Studio    

https://y.qq.com/tme_studio    

腾讯音乐智能音乐生成工具    




讯飞智作    

https://www.xfzhizuo.cn    

配音、声音定制、虚拟主播、音视频处理……    




13

AI视频

PixVerse    

https://pixverse.ai    

文生视频    




绘影字幕    

https://huiyingzimu.com    

AI字幕,翻译、配音……    




万彩微影    

https://www.animiz.cn/microvideo    

真人手绘视频、翻转文字视频、文章转视频、相册视频工具……  




芦笋AI提词器    

https://tcq.lusun.com    

持AI写稿、隐形提词效果、支持智能跟读    





360快剪辑    

https://kuai.360.cn    专业视频剪辑    




万彩AI  

https://ai.kezhan365.com    

高效、好用的AI写作和短视频创作平台   




14

数字人

腾讯智影    

https://zenvideo.qq.com    

数字人、文本配音、文章转视频……    




来画    

https://www.laihua.com    

动画、数字人智能制作    




一帧秒创    

https://aigc.yizhentv.com    

AI视频,数字人、AI作画……    




万兴播爆    

https://virbo.wondershare.cn    

数字人,真人营销视频    

15

AI写代码

昇思MindSpore    

https://www.mindspore.cn    

面向开发者的一站式AI开发平台,提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成    




百度飞桨PaddlePaddle AI Code assistant   https://www.paddlepaddle.org.cn    

在线编程,海量数据集    





ZelinAI    

https://www.zelinai.com    

零代码构建AI应用    




aiXcoder    

https://www.aixcoder.com    

基于深度学习代码生成技术的智能编程机器人    




商汤代码小浣熊    

https://raccoon.sensetime.com/code    

代码生成补全翻译重构……    




CodeArtsSnap  https://www.huaweicloud.com/pr ... .html    

覆盖代码生成、研发知识问答、单元测试用例生成、代码解释、代码注释、代码翻译、代码调试、代码检查等八大研发场景 




天工智码    

https://sky-code.singularity-ai.com/index.html#/    

基于昆仑天工模型的AI代码工具    

16

模型训练/部署

火山方舟    

https://www.volcengine.com/product/ark    模型训练、推理、评测、精调等全方位功能与服务    




魔搭社区    

https://modelscope.cn    

阿里达摩院,提供模型探索体验、推理、训练、部署和应用的一站式服务    




文心大模型    

https://wenxin.baidu.com    

产业级知识增强大模型    

17

AI提示词

提示工程指南    

www.promptingguide.ai    

如何使用提示词来完成不同的任务    




词魂    

https://icihun.com/   

 AIGC精品提示词库    
 
  查看全部
文心一言 

https://yiyan.baidu.com    

·简介:综合型AI:内容生成、文档分析、图像分析、图表制作、脑图……    



·通义千问  

https://tongyi.aliyun.com    

 ·综合型AI:内容生成、文档分析、图像分析……   




·Kimi(月之暗面)    

https://kimi.moonshot.cn    

· 综合型AI:内容生成、文档分析、灵感推荐……  




·腾讯混元    

https://hunyuan.tencent.com/bot/chat    

·综合型AI:内容生成、文档分析、灵感推荐……    




·讯飞星火    

https://xinghuo.xfyun.cn

·综合型AI:内容生成……    




抖音豆包  

https://www.doubao.com    

综合型AI:内容生成,偏互联网运营方向……    



智谱AI    

https://open.bigmodel.cn    

综合型AI:内容生成、知识问答……    




百川智能    

https://www.baichuan-ai.com/chat    

综合型AI:内容生成、文档分析、互联网搜索……    





360智脑    

https://ai.360.com    

综合型AI:360智脑全家桶……    




字节小悟空

https://wukong.com/tool    

综合型AI:字节跳动内容生成工具集    




达观数据曹植    

http://www.datagrand.com/    

行业垂域大模型    




02

聊天/内容生成

360数字员工    

https://ai.360.com    

团队协作共享,企业知识库、AI文档分析、AI营销文案、AI文书写作等智能工具    




有道AI    

https://ai.youdao.com    

文档、翻译、视觉、语音、教育……    




03

AI办公-Office

AiPPT    

https://www.aippt.cn    

自动生成PPT大纲、模板、Word-PPT…… 




iSlide    

https://www.islide.cc    

AI 一键设计 PPT    




WPS AI    

https://ai.wps.cn    

WPS的AI插件(智能PPT、表格、文档整理……) 




ChatPPT    

http://www.chat-ppt.com    

AI插件,支持Office、WPS,自动文档生成    




360苏打办公    

https://bangong.360.cn    

AI办公工具集:文档、视频、设计、开发……    




酷表ChatExcel    

https://chatexcel.com    

智能Excel公式  




商汤办公小浣熊    

https://raccoon.sensetime.com    

智能图表    




04

AI办公-会议纪要

讯飞听见    

https://www.iflyrec.com    

音视频转文字,实时录音转文字,同传,翻译…… 

阿里通义听悟    

https://tingwu.aliyun.com    

实时转录,音视频转文字,互联网内容提炼……   




飞书妙记    

https://www.feishu.cn/product/ ... e.com    

飞书文档中的会议纪要工具,实时转录,音视频转文字    




腾讯会议AI   

https://meeting.tencent.com/ai/index.html    

腾讯会议录制后会议纪要整理    




05

AI办公-脑图

ProcessOn    

https://www.processon.com   

 AI思维导图   




亿图脑图    

https://www.edrawsoft.cn/mindmaster   

 AI思维导图    




GitMind思乎    

https://gitmind.cn/    

AI思维导图    




boardmix   博思白板    

https://boardmix.cn/ai-whiteboard    

实时协作的智慧白板上,一键生成PPT、用AI协助创作思维导图、AI绘画、AI写作,共享资源素材    




妙办画板    

https://imiaoban.com    

生成流程图、思维导图    




06

AI办公-文档

司马阅AI文档    

https://smartread.cc/    

每天免费100次提问,AI文档阅读分析工具,通过聊天互动形式,精准地从复杂文档提取并分析信息  




360AI浏览器    

https://ai.360.com    

智能摘要、文章脉络、思维导图等

    

07

AI写作

有道云笔记AI    

https://note.youdao.com    

有道云笔记写作插件,改写扩写润色……    




腾讯  Effidit    

https://effidit.qq.com    

智能纠错、文本补全、文本改写、文本扩写、词语推荐、句子推荐与生成等功能    




讯飞写作    

https://huixie.iflyrec.com    

AI对话写作、模板写作、素材、润色……    




深言达意    

https://www.shenyandayi.com    

根据模糊描述,找词找句的智能写作工具    




阿里悉语    

https://login.taobao.com    

淘宝专用的商品文案生成,输入商品的淘宝链接即可获得文案    




字节火山写作    

https://www.writingo.net    

全文润色的AI智能写作  




秘塔写作猫    

https://xiezuocat.com    

AI写作模板,AI写作工具,指令扩写润色……    




光速写作    

https://guangsuxie.com    

作业帮旗下:全文生成、PPT生成、问答助手、写作助手    




WriteWise  

https://www.ximalaya.com/gatek ... ot.cn    

喜马拉雅小说创作工具  




笔灵AI    

https://ibiling.cn    

一键生成工作计划、文案方案……    




易撰    

https://www.yizhuan5.com    

自媒体内容    




Giiso写作机器人    

https://www.giiso.com    

写作、文配图、风格转换、文生图……    




5118  SEO优化精灵    

https://www.5118.com/seometa    

快速生成高质量SEO标题、Meta描述和关键字,轻松提升网站搜索引擎排名    




08

AI翻译

沉浸式翻译    

https://immersivetranslate.com    

翻译外语网页,PDF翻译,EPUB电子书翻译,视频双语字幕翻译等 




彩云小译    

https://fanyi.caiyunapp.com    

多种格式文档的翻译、同声传译、文档翻译和网页翻译。




网易见外    

https://sight.youdao.com    

字幕、音频转写、同传、文档翻译……   

 

09

AI搜索引擎

天工AI搜索(昆仑万维)    

https://search.tiangong.cn    

找资料、查信息、搜答案、搜文件,还会对海量搜索结果做AI智能聚合   




360AI搜索    

https://ai.360.com    

AI搜索能够从海量的网站中主动寻找、提炼精准答案    




秘塔AI搜索    

https://metaso.cn    

没有广告,直达结果    




perplexity.ai    

www.perplexity.ai    

黄仁勋带货的AI搜索引擎  




sciphi.ai    

https://search.sciphi.ai   

AI搜索引擎    




devv.ai    

https://devv.ai    

为开发人员打造的人工智能驱动的搜索引擎

    

10

聊天/内容生成

通义万相    

https://tongyi.aliyun.com    

AI生成图片,人工智能艺术创作大模型    




文心一格    

https://yige.baidu.com    

文生图像    




剪映AI    

https://www.capcut.cn    

剪映一键生成AI绘画   




腾讯ARC    

https://arc.tencent.com    

人像修复、人像抠图、动漫增强    




360智绘    

https://ai.360.com    

风格化AI绘画、Lora训练    




无限画    

https://588ku.com/ai/wuxianhua/Home    

智能图像设计,整合千库网的设计行业知识经验、资源数据    




美图设计室    

https://www.x-design.com    

图像智能处理,海报设计……    




liblib.ai    

https://www.liblib.ai     

AI 模型分享平台-各种风格的图像微调模型    




Tusi.Art    

https://tusiart.com     

AI 模型分享平台 




标小智Logo生成    

https://www.logosc.cn    

在线LOGO设计,生成企业VI    




佐糖    

https://picwish.cn    

丰富的图像处理工具    




Vega AI    

https://vegaai.net    

文生图,图生图,姿态生图,文生视频,图生视频……    




美图WHEE    

https://www.whee.com    

文生图,图生图,文生视频,扩图改图超清……    




无界AI    

https://www.wujieai.com    

文生图   




BgSub    

https://bgsub.cn    

抠图    




阿里PicCopilot    

https://www.piccopilot.com    

阿里巴巴国际,AI驱动图片优化工具,专门为电商领域提供服务




搜狐简单AI   

https://ai.sohu.com    智能图片生成平台和社区    




6pen    

https://6pen.art    

文本描述生成绘画艺术作品    




11

AI设计

阿里堆友    

https://d.design    

面向设计师群体的AI设计社区    




稿定AI    

https://www.gaoding.com    

图像设计    




墨刀AI    

https://modao.cc    

产品设计协作平台    




莫高设计MasterGo   AI    

https://mastergo.com    

AI时代的企业级产品设计平台,界面设计、交互设计……    




创客贴AI    

https://www.chuangkit.com    

图形图像设计    




即时AI    

https://js.design/ai    

文生UI,文生图,图生UI……    




PixsO AI    

https://pixso.cn    

新生代UI设计工具    




抖音即创    

https://aic.oceanengine.com    

抖音电商智能创作平台,提供AI视频创作、图文创作和直播创作    




腾讯 AIDesign    

https://ailogo.qq.com    

腾讯的logo设计    




美间    

https://www.meijian.com    

AI软装设计、海报和提案生成工具    




12

AI音频

度加创作工具    

https://aigc.baidu.com    

热搜一键成稿,文稿一键成片    




魔音工坊    

https://www.moyin.com    

AI配音工具    




网易天音    

https://tianyin.music.163.com    

智能编曲,海量风格    




TME Studio    

https://y.qq.com/tme_studio    

腾讯音乐智能音乐生成工具    




讯飞智作    

https://www.xfzhizuo.cn    

配音、声音定制、虚拟主播、音视频处理……    




13

AI视频

PixVerse    

https://pixverse.ai    

文生视频    




绘影字幕    

https://huiyingzimu.com    

AI字幕,翻译、配音……    




万彩微影    

https://www.animiz.cn/microvideo    

真人手绘视频、翻转文字视频、文章转视频、相册视频工具……  




芦笋AI提词器    

https://tcq.lusun.com    

持AI写稿、隐形提词效果、支持智能跟读    





360快剪辑    

https://kuai.360.cn    专业视频剪辑    




万彩AI  

https://ai.kezhan365.com    

高效、好用的AI写作和短视频创作平台   




14

数字人

腾讯智影    

https://zenvideo.qq.com    

数字人、文本配音、文章转视频……    




来画    

https://www.laihua.com    

动画、数字人智能制作    




一帧秒创    

https://aigc.yizhentv.com    

AI视频,数字人、AI作画……    




万兴播爆    

https://virbo.wondershare.cn    

数字人,真人营销视频    

15

AI写代码

昇思MindSpore    

https://www.mindspore.cn    

面向开发者的一站式AI开发平台,提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成    




百度飞桨PaddlePaddle AI Code assistant   https://www.paddlepaddle.org.cn    

在线编程,海量数据集    





ZelinAI    

https://www.zelinai.com    

零代码构建AI应用    




aiXcoder    

https://www.aixcoder.com    

基于深度学习代码生成技术的智能编程机器人    




商汤代码小浣熊    

https://raccoon.sensetime.com/code    

代码生成补全翻译重构……    




CodeArtsSnap  https://www.huaweicloud.com/pr ... .html    

覆盖代码生成、研发知识问答、单元测试用例生成、代码解释、代码注释、代码翻译、代码调试、代码检查等八大研发场景 




天工智码    

https://sky-code.singularity-ai.com/index.html#/    

基于昆仑天工模型的AI代码工具    

16

模型训练/部署

火山方舟    

https://www.volcengine.com/product/ark    模型训练、推理、评测、精调等全方位功能与服务    




魔搭社区    

https://modelscope.cn    

阿里达摩院,提供模型探索体验、推理、训练、部署和应用的一站式服务    




文心大模型    

https://wenxin.baidu.com    

产业级知识增强大模型    

17

AI提示词

提示工程指南    

www.promptingguide.ai    

如何使用提示词来完成不同的任务    




词魂    

https://icihun.com/   

 AIGC精品提示词库    
 
 

chatGPT一键生成漫画故事!| 手把手保姆教程

AI应用马化云 发表了文章 • 0 个评论 • 638 次浏览 • 2024-03-12 15:43 • 来自相关话题

鲨鱼与美女





 

鲨鱼与美女
上面的漫画图是通过一句话描述生成的漫画图片。

下面小编手把手带大家来使用chatGPT生成属于你的漫画。

首先打开网站:

https://dashtoon.com/
 






官网根据提示注册账号,用邮箱注册就可以了,或者如果你有Google账号,直接用Google账号关联登录。[注册]
注册然后就可以开始创作属于你的漫画故事。

点击顶部的“Create new dashtoon"

开始创作







填入故事情节在故事描述栏里面,详细描述你的故事情节。可以用中文去写。
比如上面的例子是:一个年轻的亚洲姑娘,因为炒股失败,没有钱,沦落到去KTV做陪唱小姐然后它会自动帮你生成一段有具体情节的故事。






生成情节生成的情节是用英文描述的,你可以根据其中的细节修改润色。然后直接点击“Next” 下一步。






风格选择漫画色调和风格。
 






人物选择人物角色风格,我选一个清纯的中国妹子风格。

点击下一步,进入生成漫画过程:
 






生成中这一步比较慢,要等个1-2分钟。

生成之后点击右下角的“Publish"发布

发布然后会生成一张长长的漫画大图。[效果图]
效果图






效果图你可以不用点击publish发布。直接点击手机里面的图片,右键,另存为图片。

然后图片就可以下载下来了。






沦落到KTV陪唱还这么开心?因为小编是直接一步生成,中间没有微调,所以故事看起来差强人意。
 
中间还有很多细节可以调节,比如故事情节,人脸细节,服饰等等。

篇幅有限,接下来读者朋友可以自己上去网站动手创作,属于你的漫画集吧

中间还有很多细节可以调节,比如故事情节,人脸细节,服饰等等。 查看全部
鲨鱼与美女

20240312123447_副本_副本_副本.jpg

 

鲨鱼与美女
上面的漫画图是通过一句话描述生成的漫画图片。

下面小编手把手带大家来使用chatGPT生成属于你的漫画。

首先打开网站:

https://dashtoon.com/
 

20240312120849.jpg


官网根据提示注册账号,用邮箱注册就可以了,或者如果你有Google账号,直接用Google账号关联登录。[注册]
注册然后就可以开始创作属于你的漫画故事。

点击顶部的“Create new dashtoon"

开始创作

20240312121434.png



填入故事情节在故事描述栏里面,详细描述你的故事情节。可以用中文去写。
比如上面的例子是:一个年轻的亚洲姑娘,因为炒股失败,没有钱,沦落到去KTV做陪唱小姐然后它会自动帮你生成一段有具体情节的故事。
20240312121628.png



生成情节生成的情节是用英文描述的,你可以根据其中的细节修改润色。然后直接点击“Next” 下一步。

20240312121940_副本.jpg


风格选择漫画色调和风格。
 

20240312122056_副本.png


人物选择人物角色风格,我选一个清纯的中国妹子风格。

点击下一步,进入生成漫画过程:
 

20240312122351_副本.jpg


生成中这一步比较慢,要等个1-2分钟。

生成之后点击右下角的“Publish"发布

发布然后会生成一张长长的漫画大图。[效果图]
效果图

20240312122523_副本.jpg


效果图你可以不用点击publish发布。直接点击手机里面的图片,右键,另存为图片。

然后图片就可以下载下来了。

20240312154118_副本.jpg


沦落到KTV陪唱还这么开心?因为小编是直接一步生成,中间没有微调,所以故事看起来差强人意。
 
中间还有很多细节可以调节,比如故事情节,人脸细节,服饰等等。

篇幅有限,接下来读者朋友可以自己上去网站动手创作,属于你的漫画集吧

中间还有很多细节可以调节,比如故事情节,人脸细节,服饰等等。

Ptrade|QMT|银行股息率轮动 实盘自动化交易

量化交易李魔佛 发表了文章 • 0 个评论 • 738 次浏览 • 2024-03-05 09:33 • 来自相关话题

看有没有人需要,前排占坑 -- Task -- 
看有没有人需要,前排占坑 -- Task -- 

miniQMT安装包路径 | 下载地址

QMT李魔佛 发表了文章 • 0 个评论 • 849 次浏览 • 2024-02-29 20:09 • 来自相关话题

安装好QMT之后,在QMT的设置里面选择安装python。
 
等待几分钟,python文件下载好了之后。
 
找到qmt的安装目录,
 
进去这里面
 
\bin.x64\Lib\site-packages\xtquant
 
把这个目录复制到你的python路径的site-package 下面, 就可以在你的python环境下运行miniQMT了。
 
当然首先还是要启动你的QMT客户端,勾选极速模式。 (不开的话连不到券商服务器,这以为这无法再linux上单独跑,wine额外另说)
 
比如下面的获取行情的示例代码,还有直接下单代码
 # 用前须知

## xtdata提供和MiniQmt的交互接口,本质是和MiniQmt建立连接,由MiniQmt处理行情数据请求,再把结果回传返回到python层。使用的行情服务器以及能获取到的行情数据和MiniQmt是一致的,要检查数据或者切换连接时直接操作MiniQmt即可。

## 对于数据获取接口,使用时需要先确保MiniQmt已有所需要的数据,如果不足可以通过补充数据接口补充,再调用数据获取接口获取。

## 对于订阅接口,直接设置数据回调,数据到来时会由回调返回。订阅接收到的数据一般会保存下来,同种数据不需要再单独补充。

# 代码讲解

# 从本地python导入xtquant库,如果出现报错则说明安装失败
from xtquant import xtdata
import time

# 设定一个标的列表
code_list = ["000001.SZ"]
# 设定获取数据的周期
period = "1d"

# 下载标的行情数据
if 1:
## 为了方便用户进行数据管理,xtquant的大部分历史数据都是以压缩形式存储在本地的
## 比如行情数据,需要通过download_history_data下载,财务数据需要通过
## 所以在取历史数据之前,我们需要调用数据下载接口,将数据下载到本地
for i in code_list:
xtdata.download_history_data(i,period=period,incrementally=True) # 增量下载行情数据(开高低收,等等)到本地

xtdata.download_financial_data(code_list) # 下载财务数据到本地
xtdata.download_sector_data() # 下载板块数据到本地
# 更多数据的下载方式可以通过数据字典查询

# 读取本地历史行情数据
history_data = xtdata.get_market_data_ex(,code_list,period=period,count=-1)
print(history_data)
print("=" * 20)

# 如果需要盘中的实时行情,需要向服务器进行订阅后才能获取
# 订阅后,get_market_data函数于get_market_data_ex函数将会自动拼接本地历史行情与服务器实时行情

# 向服务器订阅数据
for i in code_list:
xtdata.subscribe_quote(i,period=period,count=-1) # 设置count = -1来取到当天所有实时行情

# 等待订阅完成
time.sleep(1)

# 获取订阅后的行情
kline_data = xtdata.get_market_data_ex(,code_list,period=period)
print(kline_data)

# 获取订阅后的行情,并以固定间隔进行刷新,预期会循环打印10次
for i in range(10):
# 这边做演示,就用for来循环了,实际使用中可以用while True
kline_data = xtdata.get_market_data_ex(,code_list,period=period)
print(kline_data)
time.sleep(3) # 三秒后再次获取行情

# 如果不想用固定间隔触发,可以以用订阅后的回调来执行
# 这种模式下当订阅的callback回调函数将会异步的执行,每当订阅的标的tick发生变化更新,callback回调函数就会被调用一次
# 本地已有的数据不会触发callback

# 定义的回测函数
## 回调函数中,data是本次触发回调的数据,只有一条
def f(data):
# print(data)

code_list = list(data.keys()) # 获取到本次触发的标的代码

kline_in_callabck = xtdata.get_market_data_ex(,code_list,period = period) # 在回调中获取klines数据
print(kline_in_callabck)

for i in code_list:
xtdata.subscribe_quote(i,period=period,count=-1,callback=f) # 订阅时设定回调函数

# 使用回调时,必须要同时使用xtdata.run()来阻塞程序,否则程序运行到最后一行就直接结束退出了。
xtdata.run()





 
异步下单#coding:utf-8
import time, datetime, traceback, sys
from xtquant import xtdata
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
from xtquant import xtconstant

#定义一个类 创建类的实例 作为状态的容器
class _a():
pass
A = _a()
A.bought_list =
A.hsa = xtdata.get_stock_list_in_sector('沪深A股')

def interact():
"""执行后进入repl模式"""
import code
code.InteractiveConsole(locals=globals()).interact()
xtdata.download_sector_data()

def f(data):
now = datetime.datetime.now()
for stock in data:
if stock not in A.hsa:
continue
cuurent_price = data[stock]['lastPrice']
pre_price = data[stock]['lastClose']
ratio = cuurent_price / pre_price - 1 if pre_price > 0 else 0
if ratio > 0.09 and stock not in A.bought_list:
print(f"{now} 最新价 买入 {stock} 200股")
async_seq = xt_trader.order_stock_async(acc, stock, xtconstant.STOCK_BUY, 200, xtconstant.LATEST_PRICE, -1, 'strategy_name', stock)
A.bought_list.append(stock)

class MyXtQuantTraderCallback(XtQuantTraderCallback):
def on_disconnected(self):
"""
连接断开
:return:
"""
print(datetime.datetime.now(),'连接断开回调')

def on_stock_order(self, order):
"""
委托回报推送
:param order: XtOrder对象
:return:
"""
print(datetime.datetime.now(), '委托回调', order.order_remark)


def on_stock_trade(self, trade):
"""
成交变动推送
:param trade: XtTrade对象
:return:
"""
print(datetime.datetime.now(), '成交回调', trade.order_remark)


def on_order_error(self, order_error):
"""
委托失败推送
:param order_error:XtOrderError 对象
:return:
"""
# print("on order_error callback")
# print(order_error.order_id, order_error.error_id, order_error.error_msg)
print(f"委托报错回调 {order_error.order_remark} {order_error.error_msg}")

def on_cancel_error(self, cancel_error):
"""
撤单失败推送
:param cancel_error: XtCancelError 对象
:return:
"""
print(datetime.datetime.now(), sys._getframe().f_code.co_name)

def on_order_stock_async_response(self, response):
"""
异步下单回报推送
:param response: XtOrderResponse 对象
:return:
"""
print(f"异步委托回调 {response.order_remark}")

def on_cancel_order_stock_async_response(self, response):
"""
:param response: XtCancelOrderResponse 对象
:return:
"""
print(datetime.datetime.now(), sys._getframe().f_code.co_name)

def on_account_status(self, status):
"""
:param response: XtAccountStatus 对象
:return:
"""
print(datetime.datetime.now(), sys._getframe().f_code.co_name)


if __name__ == '__main__':
print("start")
#指定客户端所在路径
path = r'D:\qmt\sp3\迅投极速交易终端 睿智融科版\userdata_mini'
# 生成session id 整数类型 同时运行的策略不能重复
session_id = int(time.time())
xt_trader = XtQuantTrader(path, session_id)
# 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定
# 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程
# xt_trader.set_relaxed_response_order_enabled(True)

# 创建资金账号为 800068 的证券账号对象
acc = StockAccount('800068', 'STOCK')
# 创建交易回调类对象,并声明接收回调
callback = MyXtQuantTraderCallback()
xt_trader.register_callback(callback)
# 启动交易线程
xt_trader.start()
# 建立交易连接,返回0表示连接成功
connect_result = xt_trader.connect()
print('建立交易连接,返回0表示连接成功', connect_result)
# 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功
subscribe_result = xt_trader.subscribe(acc)
print('对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功', subscribe_result)

#这一行是注册全推回调函数 包括下单判断 安全起见处于注释状态 确认理解效果后再放开
# xtdata.subscribe_whole_quote(["SH", "SZ"], callback=f)
# 阻塞主线程退出
xt_trader.run_forever()
# 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)
interact()


需要开通miniQMT(低门槛,低费率)的朋友,
可以扫码联系:或者添加 技术公众号:

 
公众号:
 

 
  查看全部
安装好QMT之后,在QMT的设置里面选择安装python。
 
等待几分钟,python文件下载好了之后。
 
找到qmt的安装目录,
 
进去这里面
 
\bin.x64\Lib\site-packages\xtquant
 
把这个目录复制到你的python路径的site-package 下面, 就可以在你的python环境下运行miniQMT了。
 
当然首先还是要启动你的QMT客户端,勾选极速模式。 (不开的话连不到券商服务器,这以为这无法再linux上单独跑,wine额外另说)
 
比如下面的获取行情的示例代码,还有直接下单代码
 
# 用前须知

## xtdata提供和MiniQmt的交互接口,本质是和MiniQmt建立连接,由MiniQmt处理行情数据请求,再把结果回传返回到python层。使用的行情服务器以及能获取到的行情数据和MiniQmt是一致的,要检查数据或者切换连接时直接操作MiniQmt即可。

## 对于数据获取接口,使用时需要先确保MiniQmt已有所需要的数据,如果不足可以通过补充数据接口补充,再调用数据获取接口获取。

## 对于订阅接口,直接设置数据回调,数据到来时会由回调返回。订阅接收到的数据一般会保存下来,同种数据不需要再单独补充。

# 代码讲解

# 从本地python导入xtquant库,如果出现报错则说明安装失败
from xtquant import xtdata
import time

# 设定一个标的列表
code_list = ["000001.SZ"]
# 设定获取数据的周期
period = "1d"

# 下载标的行情数据
if 1:
## 为了方便用户进行数据管理,xtquant的大部分历史数据都是以压缩形式存储在本地的
## 比如行情数据,需要通过download_history_data下载,财务数据需要通过
## 所以在取历史数据之前,我们需要调用数据下载接口,将数据下载到本地
for i in code_list:
xtdata.download_history_data(i,period=period,incrementally=True) # 增量下载行情数据(开高低收,等等)到本地

xtdata.download_financial_data(code_list) # 下载财务数据到本地
xtdata.download_sector_data() # 下载板块数据到本地
# 更多数据的下载方式可以通过数据字典查询

# 读取本地历史行情数据
history_data = xtdata.get_market_data_ex(,code_list,period=period,count=-1)
print(history_data)
print("=" * 20)

# 如果需要盘中的实时行情,需要向服务器进行订阅后才能获取
# 订阅后,get_market_data函数于get_market_data_ex函数将会自动拼接本地历史行情与服务器实时行情

# 向服务器订阅数据
for i in code_list:
xtdata.subscribe_quote(i,period=period,count=-1) # 设置count = -1来取到当天所有实时行情

# 等待订阅完成
time.sleep(1)

# 获取订阅后的行情
kline_data = xtdata.get_market_data_ex(,code_list,period=period)
print(kline_data)

# 获取订阅后的行情,并以固定间隔进行刷新,预期会循环打印10次
for i in range(10):
# 这边做演示,就用for来循环了,实际使用中可以用while True
kline_data = xtdata.get_market_data_ex(,code_list,period=period)
print(kline_data)
time.sleep(3) # 三秒后再次获取行情

# 如果不想用固定间隔触发,可以以用订阅后的回调来执行
# 这种模式下当订阅的callback回调函数将会异步的执行,每当订阅的标的tick发生变化更新,callback回调函数就会被调用一次
# 本地已有的数据不会触发callback

# 定义的回测函数
## 回调函数中,data是本次触发回调的数据,只有一条
def f(data):
# print(data)

code_list = list(data.keys()) # 获取到本次触发的标的代码

kline_in_callabck = xtdata.get_market_data_ex(,code_list,period = period) # 在回调中获取klines数据
print(kline_in_callabck)

for i in code_list:
xtdata.subscribe_quote(i,period=period,count=-1,callback=f) # 订阅时设定回调函数

# 使用回调时,必须要同时使用xtdata.run()来阻塞程序,否则程序运行到最后一行就直接结束退出了。
xtdata.run()





 
异步下单
#coding:utf-8
import time, datetime, traceback, sys
from xtquant import xtdata
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
from xtquant import xtconstant

#定义一个类 创建类的实例 作为状态的容器
class _a():
pass
A = _a()
A.bought_list =
A.hsa = xtdata.get_stock_list_in_sector('沪深A股')

def interact():
"""执行后进入repl模式"""
import code
code.InteractiveConsole(locals=globals()).interact()
xtdata.download_sector_data()

def f(data):
now = datetime.datetime.now()
for stock in data:
if stock not in A.hsa:
continue
cuurent_price = data[stock]['lastPrice']
pre_price = data[stock]['lastClose']
ratio = cuurent_price / pre_price - 1 if pre_price > 0 else 0
if ratio > 0.09 and stock not in A.bought_list:
print(f"{now} 最新价 买入 {stock} 200股")
async_seq = xt_trader.order_stock_async(acc, stock, xtconstant.STOCK_BUY, 200, xtconstant.LATEST_PRICE, -1, 'strategy_name', stock)
A.bought_list.append(stock)

class MyXtQuantTraderCallback(XtQuantTraderCallback):
def on_disconnected(self):
"""
连接断开
:return:
"""
print(datetime.datetime.now(),'连接断开回调')

def on_stock_order(self, order):
"""
委托回报推送
:param order: XtOrder对象
:return:
"""
print(datetime.datetime.now(), '委托回调', order.order_remark)


def on_stock_trade(self, trade):
"""
成交变动推送
:param trade: XtTrade对象
:return:
"""
print(datetime.datetime.now(), '成交回调', trade.order_remark)


def on_order_error(self, order_error):
"""
委托失败推送
:param order_error:XtOrderError 对象
:return:
"""
# print("on order_error callback")
# print(order_error.order_id, order_error.error_id, order_error.error_msg)
print(f"委托报错回调 {order_error.order_remark} {order_error.error_msg}")

def on_cancel_error(self, cancel_error):
"""
撤单失败推送
:param cancel_error: XtCancelError 对象
:return:
"""
print(datetime.datetime.now(), sys._getframe().f_code.co_name)

def on_order_stock_async_response(self, response):
"""
异步下单回报推送
:param response: XtOrderResponse 对象
:return:
"""
print(f"异步委托回调 {response.order_remark}")

def on_cancel_order_stock_async_response(self, response):
"""
:param response: XtCancelOrderResponse 对象
:return:
"""
print(datetime.datetime.now(), sys._getframe().f_code.co_name)

def on_account_status(self, status):
"""
:param response: XtAccountStatus 对象
:return:
"""
print(datetime.datetime.now(), sys._getframe().f_code.co_name)


if __name__ == '__main__':
print("start")
#指定客户端所在路径
path = r'D:\qmt\sp3\迅投极速交易终端 睿智融科版\userdata_mini'
# 生成session id 整数类型 同时运行的策略不能重复
session_id = int(time.time())
xt_trader = XtQuantTrader(path, session_id)
# 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定
# 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程
# xt_trader.set_relaxed_response_order_enabled(True)

# 创建资金账号为 800068 的证券账号对象
acc = StockAccount('800068', 'STOCK')
# 创建交易回调类对象,并声明接收回调
callback = MyXtQuantTraderCallback()
xt_trader.register_callback(callback)
# 启动交易线程
xt_trader.start()
# 建立交易连接,返回0表示连接成功
connect_result = xt_trader.connect()
print('建立交易连接,返回0表示连接成功', connect_result)
# 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功
subscribe_result = xt_trader.subscribe(acc)
print('对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功', subscribe_result)

#这一行是注册全推回调函数 包括下单判断 安全起见处于注释状态 确认理解效果后再放开
# xtdata.subscribe_whole_quote(["SH", "SZ"], callback=f)
# 阻塞主线程退出
xt_trader.run_forever()
# 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)
interact()


需要开通miniQMT(低门槛,低费率)的朋友,
可以扫码联系:或者添加 技术公众号:

 
公众号:
 

 
 

银河证券1拖7

股票李魔佛 发表了文章 • 0 个评论 • 1108 次浏览 • 2024-02-23 15:16 • 来自相关话题

最近大家套利印度基金LOF如火如荼。
 
基本大家都用的银河证券或者华宝证券的1拖6,也就是一个证券账户,加挂 3个 深A,3个场内基金,6个账号可以同时申购 100元的印度基金。因为印度基金目前是限购状态,限购100元。
 
所以1拖6就可以申购600元。
 
目前每天稳定的溢价率为6-7%,一次的收益率为 6-7%,也就是30-40元一个账户一天。一周下来就有150-200元





 
 
这个看起来是个蚊子肉。
 
但如果你的证券账户足够多,比如你有10个证券账户(你女友,家人,亲戚,同事,朋友)
 
一周就有2000元。
 
所以限购套利的核心是 拖拉机+多账号
 
而很少人知道,其实可以1拖7,再多一个申购途径,就是场外申购。
 
比如支付宝,天天基金等渠道申购。不过要转入场内比较麻烦,而银河证券,华宝证券,内置了场外基金,可以很方便在券商app里面的场外基金买入(申购)。
 
步骤也很简单,





 
申购完成之后:





 
然后绑定场内和场外关系
 





 
然后要等T+2 之后,再在银河证券app里面 把印度基金从场外转到场内:





 
然后T+2之后,你的基金要继续等T+2之后才能到达你的证券账户。然后才能够在场内卖出。
 
所以通过场外转场内进行套利,要比场内支持申购,要晚2天到账的哦。
 
目前银河证券 低费率多多, 万0.854 免五,0.1元起,申购LOF基金1折,LOF卖出费率为万0.5,0.1元起。
逆回购1折。各个费率基本在同样档位里面是最低的了。
 
需要的朋友可以扫码联系开通: 查看全部
最近大家套利印度基金LOF如火如荼。
 
基本大家都用的银河证券或者华宝证券的1拖6,也就是一个证券账户,加挂 3个 深A,3个场内基金,6个账号可以同时申购 100元的印度基金。因为印度基金目前是限购状态,限购100元。
 
所以1拖6就可以申购600元。
 
目前每天稳定的溢价率为6-7%,一次的收益率为 6-7%,也就是30-40元一个账户一天。一周下来就有150-200元

微信图片_20240221114516.jpg

 
 
这个看起来是个蚊子肉。
 
但如果你的证券账户足够多,比如你有10个证券账户(你女友,家人,亲戚,同事,朋友)
 
一周就有2000元。
 
所以限购套利的核心是 拖拉机+多账号
 
而很少人知道,其实可以1拖7,再多一个申购途径,就是场外申购。
 
比如支付宝,天天基金等渠道申购。不过要转入场内比较麻烦,而银河证券,华宝证券,内置了场外基金,可以很方便在券商app里面的场外基金买入(申购)。
 
步骤也很简单,

微信图片_20240222124738.jpg

 
申购完成之后:

微信图片_20240222125035.jpg

 
然后绑定场内和场外关系
 

v2-6f50d47051bfa9b36e93b46319e3e002_1440w_副本_副本_副本.png

 
然后要等T+2 之后,再在银河证券app里面 把印度基金从场外转到场内:

微信图片_20240222124738_副本_副本.jpg

 
然后T+2之后,你的基金要继续等T+2之后才能到达你的证券账户。然后才能够在场内卖出。
 
所以通过场外转场内进行套利,要比场内支持申购,要晚2天到账的哦。
 
目前银河证券 低费率多多, 万0.854 免五,0.1元起,申购LOF基金1折,LOF卖出费率为万0.5,0.1元起。
逆回购1折。各个费率基本在同样档位里面是最低的了。
 
需要的朋友可以扫码联系开通:

开通银河拖拉机,申购一折,申购套利,印度基金LOF

券商万一免五李魔佛 发表了文章 • 0 个评论 • 907 次浏览 • 2024-02-22 01:31 • 来自相关话题

1拖6,可以实现在限购的情况下,申购6次。 让你的绝对收益扩大6倍。
虽然资金不多,申购100元。
 
但如果你的账号多,那么假如你有10个账号,那么一轮套利下来,你的盈利有 122 * 6 * 10 = 7200
 
而且因为有限购,所以套利算风险比较小。 只要点点手指头,就能够获得几千元的收益,何乐而不为?
 
但是1拖6,只有少数几个券商支持。 并且如果没有申购1折的话,也会有不少的损耗。
 
银河证券就是满足上面的条件。 但不一定全部的营业部都支持申购1折。
 
笔者这边合作的一个银河证券,支持万一免五,0.1起步。基金申购1折,逆回购1折,支持1拖6股东账号。
 
需要的可以扫码联系: 查看全部

微信图片_20240221114516.jpg

1拖6,可以实现在限购的情况下,申购6次。 让你的绝对收益扩大6倍。
虽然资金不多,申购100元。
 
但如果你的账号多,那么假如你有10个账号,那么一轮套利下来,你的盈利有 122 * 6 * 10 = 7200
 
而且因为有限购,所以套利算风险比较小。 只要点点手指头,就能够获得几千元的收益,何乐而不为?
 
但是1拖6,只有少数几个券商支持。 并且如果没有申购1折的话,也会有不少的损耗。
 
银河证券就是满足上面的条件。 但不一定全部的营业部都支持申购1折。
 
笔者这边合作的一个银河证券,支持万一免五,0.1起步。基金申购1折,逆回购1折,支持1拖6股东账号。
 
需要的可以扫码联系:

QMT获取全市场股票,排除ST退市风险股票

QMT李魔佛 发表了文章 • 0 个评论 • 890 次浏览 • 2024-02-07 22:25 • 来自相关话题

因为QMT不能获取北交所的股票历史数据,所以也把北交所的股票也排除了。
 
def get_all_market_code(ContextInfo):

all_market_codes = [item for item in ContextInfo.get_stock_list_in_sector('沪深A股') if not item.endswith('BJ')]
return filter_ST_stock(ContextInfo, all_market_codes)


def filter_ST_stock(ContextInfo, code_list):
result = []
for code in code_list:
if re.search('(st)|(ST)|(\*st)|(\*ST)|(退)',ContextInfo.get_stock_name(code)):
print('排除 : ',ContextInfo.get_stock_name(code),code)
continue
result.append(code)
return result

global_dict = {}

def init(ContextInfo):
now = time.ctime()
print('策略初始化{}'.format(now))
need_download = 1
global_dict['start_date'] = '20231201'
global_dict['end_date'] = ''
global_dict['code_list'] = get_all_market_code(ContextInfo)

 有问题可以咨询公众号或者知识星球
提供策略代写服务
  查看全部
因为QMT不能获取北交所的股票历史数据,所以也把北交所的股票也排除了。
 
def get_all_market_code(ContextInfo):

all_market_codes = [item for item in ContextInfo.get_stock_list_in_sector('沪深A股') if not item.endswith('BJ')]
return filter_ST_stock(ContextInfo, all_market_codes)


def filter_ST_stock(ContextInfo, code_list):
result = []
for code in code_list:
if re.search('(st)|(ST)|(\*st)|(\*ST)|(退)',ContextInfo.get_stock_name(code)):
print('排除 : ',ContextInfo.get_stock_name(code),code)
continue
result.append(code)
return result

global_dict = {}

def init(ContextInfo):
now = time.ctime()
print('策略初始化{}'.format(now))
need_download = 1
global_dict['start_date'] = '20231201'
global_dict['end_date'] = ''
global_dict['code_list'] = get_all_market_code(ContextInfo)

 有问题可以咨询公众号或者知识星球
提供策略代写服务
 

QMT实时获取涨停股,筛选流通盘大于X的股票

QMT李魔佛 发表了文章 • 0 个评论 • 992 次浏览 • 2024-02-07 18:28 • 来自相关话题

基于官方例子修复了一下bug,比如移除了北交所的股票,因为目前qmt获取不了北交所的股票历史数据。
 
直接上代码:# coding:gbk
import time


class G():
pass


g = G()


def init(ContextInfo):
g.hsa = [item for item in ContextInfo.get_stock_list_in_sector('沪深A股') if not item.endswith('BJ')]
g.vol_dict = {}
for stock in g.hsa:
g.vol_dict[stock] = ContextInfo.get_last_volume(stock)
ContextInfo.run_time("execution", "1nSecond", "2019-10-14 13:20:00")


def execution(ContextInfo):
t0 = time.time()
full_tick = ContextInfo.get_full_tick(g.hsa)
total_market_value = 0
total_ratio = 0
count = 0
for stock in g.hsa:
if full_tick[stock]['lastClose'] == 0:
continue
ratio = full_tick[stock]['lastPrice'] / full_tick[stock]['lastClose'] - 1
rise_price = round(full_tick[stock]['lastClose'] * 1.2, 2) if stock[0] == '3' or stock[:3] == '688' else round(
full_tick[stock]['lastClose'] * 1.1, 2)
# 如果要打印涨停品种
if abs(full_tick[stock]['lastPrice'] - rise_price) <0.01:
print(f"涨停股票 {stock} {ContextInfo.get_stock_name(stock)}")

market_value = full_tick[stock]['lastPrice'] * g.vol_dict[stock]
total_ratio += ratio * market_value
total_market_value += market_value
count += 1
# print(count)
total_ratio /= total_market_value
total_ratio *= 100
print(f'A股加权涨幅 {round(total_ratio, 2)}% 函数运行耗时{round(time.time() - t0, 5)}秒')






 
欢迎关注公众号:
可转债量化分析 查看全部
基于官方例子修复了一下bug,比如移除了北交所的股票,因为目前qmt获取不了北交所的股票历史数据。
 
直接上代码:
# coding:gbk
import time


class G():
pass


g = G()


def init(ContextInfo):
g.hsa = [item for item in ContextInfo.get_stock_list_in_sector('沪深A股') if not item.endswith('BJ')]
g.vol_dict = {}
for stock in g.hsa:
g.vol_dict[stock] = ContextInfo.get_last_volume(stock)
ContextInfo.run_time("execution", "1nSecond", "2019-10-14 13:20:00")


def execution(ContextInfo):
t0 = time.time()
full_tick = ContextInfo.get_full_tick(g.hsa)
total_market_value = 0
total_ratio = 0
count = 0
for stock in g.hsa:
if full_tick[stock]['lastClose'] == 0:
continue
ratio = full_tick[stock]['lastPrice'] / full_tick[stock]['lastClose'] - 1
rise_price = round(full_tick[stock]['lastClose'] * 1.2, 2) if stock[0] == '3' or stock[:3] == '688' else round(
full_tick[stock]['lastClose'] * 1.1, 2)
# 如果要打印涨停品种
if abs(full_tick[stock]['lastPrice'] - rise_price) <0.01:
print(f"涨停股票 {stock} {ContextInfo.get_stock_name(stock)}")

market_value = full_tick[stock]['lastPrice'] * g.vol_dict[stock]
total_ratio += ratio * market_value
total_market_value += market_value
count += 1
# print(count)
total_ratio /= total_market_value
total_ratio *= 100
print(f'A股加权涨幅 {round(total_ratio, 2)}% 函数运行耗时{round(time.time() - t0, 5)}秒')


20240207182920.png

 
欢迎关注公众号:
可转债量化分析