国庆节 微信头像红旗 制作 附 python代码 和 红旗素材

python我是一个新兵 发表了文章 • 0 个评论 • 40 次浏览 • 2022-09-23 10:31 • 来自相关话题

国庆节的时候,很多地方都会升挂国旗,庆祝祖国一年一度的节日。

给自己制作国旗头像,是一件很有意义的事。微信官方就曾经举办过活动。

制作国旗头像的方法有很多,本文给大家介绍用Python制作渐变的微信国旗头像。
 





 

渐变的国旗头像效果非常好看。
 
制作方式也很简单,下面介绍实现方法,可以复制本文的代码,制作属于自己的国旗头像。
 
 

1.准备国旗图片





 
声明:严禁非法使用国旗图片。在国旗图片下载页面下方有《国旗法》等相关规定。

 
本文使用1024像素的图片。
 

2.准备头像图片
登录自己的微信,打开个人信息,点击头像,点击右上角的三个点,将图片保存到手机,
 
然后将图片传到电脑上。

为了不失一般性,本文使用的图片是我从网络上获取的一张600*600像素的头像图片。

准备好后,将国旗图片和头像图片拷贝到代码同一个目录下。
 

代码实现

先安装Python中用于处理图片的pillow库。
 pip install pillow

安装完成后,使用pillow库来制作国旗头像。
只需要十几行代码就能实现。完整代码如下。
 
# coding=utf-8
from PIL import Image
import math

key = 3.2# 修改key值可以调整国旗的范围,推荐2~4之间的数字,支持小数
motherland_flag = Image.open('flag-1024.png')
head_picture = Image.open('mmexport1663893338571.png')
# 截图国旗上的五颗五角星
flag_width, flag_height = motherland_flag.size
crop_flag = motherland_flag.crop((66, 0, flag_height+66, flag_height))
# 将国旗截图处理成颜色渐变
for i in range(flag_height):
for j in range(flag_height):
color = crop_flag.getpixel((i, j))
distance = int(math.sqrt(i*i + j*j))
alpha = 255 - int(distance//key)
new_color = (*color[0:-1], alpha if alpha > 0 else 0)
crop_flag.putpixel((i, j), new_color)
# 修改渐变图片的尺寸,适应头像大小,粘贴到头像上
new_crop_flag = crop_flag.resize(head_picture.size)
head_picture.paste(new_crop_flag, (0, 0), new_crop_flag)
# 保存自己的国旗头像
head_picture.save('国旗头像.png')
 
到此为止,已经制作好了国旗头像了。
 
 
下面是代码的详细结束:

代码介绍:代码介绍:

导入需要使用的Python库,pillow库用于对图片进行截取、大小修改、粘贴等处理。math库用于计算像素点的距离。

使用Image.open()方法,读取准备好的国旗图片和头像图片到代码中。

对国旗图片进行截取,获取一张正方形的图片,截取时调整截取位置,保证5颗五角星完整展示在截图中。

crop()方法中传入的是一个(left, upper, right, lower)的元组,分别是截图的左、上、右、下像素位置。
将正方形国旗截图设置成透明度渐变的图片。国旗图片的模式默认是RGBA,本文需要的刚好是RGBA(red,green,blue,alpha)模式的图片,RGBA模式的图片颜色值是一个长度为4的元组,我们修改不同像素点的A值即可将图片设置成渐变。

本文是以国旗左上角为圆心,离圆心越远的像素点A值越小,像素点越透明。使用getpixel()和putpixel()两个方法来获取和重设像素点的颜色值,使用math.sqrt()计算像素点距离。

将渐变图片的大小转换成和头像的大小一样,然后粘贴到图片顶层。使用resize()方法重设图片大小,使用paste()方法粘贴图片。

保存图片,此时的微信头像图片上已经粘贴了透明渐变的国旗图片,微信国旗头像制作完成。

本文介绍了用Python制作微信国旗头像的方法。在本文的代码中,以左上角为圆心,离圆心越远越透明,可以修改key值,调整国旗透明变化的范围。

如果需要制作其他渐变类型,如以右上角为圆心逐渐透明、从左侧向右侧逐渐透明、从上到下逐渐透明等,可以修改国旗渐变部分的代码、翻转图片等。
 

 
 
 

  查看全部
国庆节的时候,很多地方都会升挂国旗,庆祝祖国一年一度的节日。

给自己制作国旗头像,是一件很有意义的事。微信官方就曾经举办过活动。

制作国旗头像的方法有很多,本文给大家介绍用Python制作渐变的微信国旗头像。
 

5EFB522509E5461D870CDA736ED7E6DF.png

 

渐变的国旗头像效果非常好看。
 
制作方式也很简单,下面介绍实现方法,可以复制本文的代码,制作属于自己的国旗头像。
 
 

1.准备国旗图片

flag-1024.png

 
声明:严禁非法使用国旗图片。在国旗图片下载页面下方有《国旗法》等相关规定。

 
本文使用1024像素的图片。
 

2.准备头像图片
登录自己的微信,打开个人信息,点击头像,点击右上角的三个点,将图片保存到手机,
 
然后将图片传到电脑上。

为了不失一般性,本文使用的图片是我从网络上获取的一张600*600像素的头像图片。

准备好后,将国旗图片和头像图片拷贝到代码同一个目录下。
 

代码实现

先安装Python中用于处理图片的pillow库。
 
pip install pillow


安装完成后,使用pillow库来制作国旗头像。
只需要十几行代码就能实现。完整代码如下。
 
# coding=utf-8
from PIL import Image
import math

key = 3.2# 修改key值可以调整国旗的范围,推荐2~4之间的数字,支持小数
motherland_flag = Image.open('flag-1024.png')
head_picture = Image.open('mmexport1663893338571.png')
# 截图国旗上的五颗五角星
flag_width, flag_height = motherland_flag.size
crop_flag = motherland_flag.crop((66, 0, flag_height+66, flag_height))
# 将国旗截图处理成颜色渐变
for i in range(flag_height):
for j in range(flag_height):
color = crop_flag.getpixel((i, j))
distance = int(math.sqrt(i*i + j*j))
alpha = 255 - int(distance//key)
new_color = (*color[0:-1], alpha if alpha > 0 else 0)
crop_flag.putpixel((i, j), new_color)
# 修改渐变图片的尺寸,适应头像大小,粘贴到头像上
new_crop_flag = crop_flag.resize(head_picture.size)
head_picture.paste(new_crop_flag, (0, 0), new_crop_flag)
# 保存自己的国旗头像
head_picture.save('国旗头像.png')

 
到此为止,已经制作好了国旗头像了。
 
 
下面是代码的详细结束:

代码介绍:
代码介绍:

导入需要使用的Python库,pillow库用于对图片进行截取、大小修改、粘贴等处理。math库用于计算像素点的距离。

使用Image.open()方法,读取准备好的国旗图片和头像图片到代码中。

对国旗图片进行截取,获取一张正方形的图片,截取时调整截取位置,保证5颗五角星完整展示在截图中。

crop()方法中传入的是一个(left, upper, right, lower)的元组,分别是截图的左、上、右、下像素位置。
将正方形国旗截图设置成透明度渐变的图片。国旗图片的模式默认是RGBA,本文需要的刚好是RGBA(red,green,blue,alpha)模式的图片,RGBA模式的图片颜色值是一个长度为4的元组,我们修改不同像素点的A值即可将图片设置成渐变。

本文是以国旗左上角为圆心,离圆心越远的像素点A值越小,像素点越透明。使用getpixel()和putpixel()两个方法来获取和重设像素点的颜色值,使用math.sqrt()计算像素点距离。

将渐变图片的大小转换成和头像的大小一样,然后粘贴到图片顶层。使用resize()方法重设图片大小,使用paste()方法粘贴图片。

保存图片,此时的微信头像图片上已经粘贴了透明渐变的国旗图片,微信国旗头像制作完成。


本文介绍了用Python制作微信国旗头像的方法。在本文的代码中,以左上角为圆心,离圆心越远越透明,可以修改key值,调整国旗透明变化的范围。

如果需要制作其他渐变类型,如以右上角为圆心逐渐透明、从左侧向右侧逐渐透明、从上到下逐渐透明等,可以修改国旗渐变部分的代码、翻转图片等。
 

 
 
 

 

ptrade 微信通知

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 61 次浏览 • 2022-09-20 10:29 • 来自相关话题

对于节假日,ptrade经常会被暂停维护。 而有时候维护后需要你手动去重启策略。
 
所以情况多了,经常会忘记,手动登录进去重启。导致策略没有运行。
 
所以办法1,在盘前函数加入 微信通知,在交易日,如果盘前(8:30分左右),没有收到微信提醒,那么就需要即使登录到ptrade进行手动重启。
 
代码如下:
 def notify(content=''):
send_qywx(
'微信id', '微信key', 'agent', info=content,
touser= '你的微信名字',
)

def before_trading_start(context, data):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
notify('Ptrade 盘前运行{}'.format(now))

差不多这样就可以了。
 
不过笔者一般会使用另外一个种方式,因为如果哪一天没有收到,意味这ptrade没有起来,但你没有收到,你也就忘了这么一回事。 所以笔者的做法是,正常情况下不推送,而在ptrade不启动的时候才推送到微信。
 
下回更新。待续
 
# 继续更新
每天盘前,ptrade会到mysql插入一条数据,比如当天的日期
然后有个程序每天定时去读取mysql,如果读不到数据,就发送数据给微信即可。
 
class DBSelector():
'''
数据库选择类
'''

def get_engine(self):

from sqlalchemy import create_engine
try:
engine = create_engine(
'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USER, PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB))
except Exception as e:
log.error(e)
return None

return engine

def get_mysql_conn(self, db):
import pymysql
try:
conn = pymysql.connect(host=MYSQL_HOST, port=MYSQL_PORT, user=USER, password=PASSWORD, db=db,
charset='utf8')
except Exception as e:
log.error(e)
return None
else:
return conn

def main():
now = datetime.datetime.now()
if not now.weekday():
print('not week day')
return

db = DBSelector()
conn = db.get_mysql_conn('ptrade')
cursor = conn.cursor()
sql_str = 'select count(*) from `ptrade_runing_status` where `date`=%s limit 1'
date = now.strftime('%Y-%m-%d')
cursor.execute(sql_str, (date,))
result = cursor.fetchone()
if result[0] == 0:
send_message_via_wechat('{} ptrade没有启动!'.format(now))

if __name__=='__main__':
main()
 
  查看全部
对于节假日,ptrade经常会被暂停维护。 而有时候维护后需要你手动去重启策略。
 
所以情况多了,经常会忘记,手动登录进去重启。导致策略没有运行。
 
所以办法1,在盘前函数加入 微信通知,在交易日,如果盘前(8:30分左右),没有收到微信提醒,那么就需要即使登录到ptrade进行手动重启。
 
代码如下:
 
def notify(content=''):
send_qywx(
'微信id', '微信key', 'agent', info=content,
touser= '你的微信名字',
)

def before_trading_start(context, data):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
notify('Ptrade 盘前运行{}'.format(now))

差不多这样就可以了。
 
不过笔者一般会使用另外一个种方式,因为如果哪一天没有收到,意味这ptrade没有起来,但你没有收到,你也就忘了这么一回事。 所以笔者的做法是,正常情况下不推送,而在ptrade不启动的时候才推送到微信。
 
下回更新。待续
 
# 继续更新
每天盘前,ptrade会到mysql插入一条数据,比如当天的日期
然后有个程序每天定时去读取mysql,如果读不到数据,就发送数据给微信即可。
 
class DBSelector():
'''
数据库选择类
'''

def get_engine(self):

from sqlalchemy import create_engine
try:
engine = create_engine(
'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USER, PASSWORD, MYSQL_HOST, MYSQL_PORT, MYSQL_DB))
except Exception as e:
log.error(e)
return None

return engine

def get_mysql_conn(self, db):
import pymysql
try:
conn = pymysql.connect(host=MYSQL_HOST, port=MYSQL_PORT, user=USER, password=PASSWORD, db=db,
charset='utf8')
except Exception as e:
log.error(e)
return None
else:
return conn

def main():
now = datetime.datetime.now()
if not now.weekday():
print('not week day')
return

db = DBSelector()
conn = db.get_mysql_conn('ptrade')
cursor = conn.cursor()
sql_str = 'select count(*) from `ptrade_runing_status` where `date`=%s limit 1'
date = now.strftime('%Y-%m-%d')
cursor.execute(sql_str, (date,))
result = cursor.fetchone()
if result[0] == 0:
send_message_via_wechat('{} ptrade没有启动!'.format(now))

if __name__=='__main__':
main()

 
 

ubuntu 一键安装微信小程序开发工具

Linux我是一个新兵 发表了文章 • 0 个评论 • 69 次浏览 • 2022-09-19 00:17 • 来自相关话题

腾讯有点恶心,linux下就不能提供一个官方的开发工具? 最初的qq logo都是抄linux的。在开源界,腾讯还真的无作为,还作为障碍般各种阻挠。

有个人开发者在github上做了linux下的微信小程序开发工具。
试了下还可以,不用再开个虚拟机跑windows,然后就为了使用微信小程序的开发工具。
 
安装方法:
 sudo snap install wechat-devtools

前提是ubuntu版本大于14.04, 或者已经内置了snap商店。






  查看全部
腾讯有点恶心,linux下就不能提供一个官方的开发工具? 最初的qq logo都是抄linux的。在开源界,腾讯还真的无作为,还作为障碍般各种阻挠。

有个人开发者在github上做了linux下的微信小程序开发工具。
试了下还可以,不用再开个虚拟机跑windows,然后就为了使用微信小程序的开发工具。
 
安装方法:
 
sudo snap install wechat-devtools


前提是ubuntu版本大于14.04, 或者已经内置了snap商店。


linuxwechatdev.png

 

8天学会微信小程序开发 (小白零基础学习,学完即可接单)python网红讲师 老男孩 Alex

网络我是一个新兵 发表了文章 • 0 个评论 • 82 次浏览 • 2022-09-17 19:02 • 来自相关话题

 
正好在学习,拿到的课件,分享给需要的朋友。 没有基础的同学应该不止要18天哈。 看视频教程的话。
第一天的我看了,边敲代码,边看,做笔记,用了2天。。。。
 





 





 
 
吐槽下腾讯,在linux下的开发环境,啥工具都没有,只关注windows平台和mac平台。
对开发者非常不友好。
资料贴在网络上 易被封,且不易更新,所以关注公众号,后台回复: 小程序教程
即可获取教程资料,免费哦。


  查看全部
 
正好在学习,拿到的课件,分享给需要的朋友。 没有基础的同学应该不止要18天哈。 看视频教程的话。
第一天的我看了,边敲代码,边看,做笔记,用了2天。。。。
 

20220917001.png

 

20220917002.png

 
 
吐槽下腾讯,在linux下的开发环境,啥工具都没有,只关注windows平台和mac平台。
对开发者非常不友好。
资料贴在网络上 易被封,且不易更新,所以关注公众号,后台回复: 小程序教程
即可获取教程资料,免费哦。


 

2022年上半年 顶流基金亏损排行榜

股票绫波丽 发表了文章 • 0 个评论 • 68 次浏览 • 2022-09-16 12:49 • 来自相关话题

 





 
太惨了。。。。
 
论绝对金额,亏损最大的是蔡经理,哦不,是蔡狗。
 
然后就是谢治宇,ikun。。
 

1E6FA824EDB64DDD995132CA89AA25CE1.png

 
太惨了。。。。
 
论绝对金额,亏损最大的是蔡经理,哦不,是蔡狗。
 
然后就是谢治宇,ikun。。

可转债新规后,可转债费率最低是多少?什么券商可以开

券商万一免五绫波丽 发表了文章 • 0 个评论 • 88 次浏览 • 2022-09-14 17:00 • 来自相关话题

可转债新规在8月1日后生效。最大变化是,沪的交易所经手费由百万分之一上调到十万分之四。
 

另外,此次沪市还调整了可转债交易及其约定购回式债券交易经手费收费标准,由原来按成交金额的0.0001%双向收取、单笔最高不超过100元,调整为按成交金额的0.004%双向收取。

 
调整后,目前市场上 券商 可转债最低的费率是 沪市 十万分之4.1 , 深圳十万分之4。 然后就没有其他的费用了。





 
需要开户的可以扫码咨询: 
备注:可转债
 

 
 
 
 
  查看全部
可转债新规在8月1日后生效。最大变化是,沪的交易所经手费由百万分之一上调到十万分之四。
 


另外,此次沪市还调整了可转债交易及其约定购回式债券交易经手费收费标准,由原来按成交金额的0.0001%双向收取、单笔最高不超过100元,调整为按成交金额的0.004%双向收取。


 
调整后,目前市场上 券商 可转债最低的费率是 沪市 十万分之4.1 , 深圳十万分之4。 然后就没有其他的费用了。

a94abe774ee1ea12c5428f37aab8b70b.jpeg

 
需要开户的可以扫码咨询: 
备注:可转债
 

 
 
 
 
 

百度搜索居然支持搜索微信公众号了?!

网络绫波丽 发表了文章 • 0 个评论 • 77 次浏览 • 2022-09-14 16:50 • 来自相关话题

今天搜索了一些内容,发现公众的内容居然显示在百度搜索结果的第一位,有点神奇。估计两个大厂签订了某些合作协议,流量互通了。 其实早就应该开放了,现在很多优质内容都往公众号流入。 但是这些优质内容只有少部分人浏览。 牛人不会有很多时间看别人群,看别人朋友圈,所以他们接触公众号的内容比较少。
 
这导致微信公众号里面沉淀的内容 在闭环里面得不得很好利用。 比如一些写程序代码的公众号,一般人都是看到好的,收藏起来,然后在PC浏览器上看。 手机屏幕看代码, 体验十分不好的。
 
同样,百度也多了一个数据源,不至于被csdn和一些内容农场长期霸占首页的搜索结果。
 
最受影响的应该是搜狗搜索引擎。不过这个搜索引擎也是及其垃圾,以前用来搜索微信公众号内容,只能完全匹配字样,同义词,近义词的搜索效果很差,出来的内容也不知道按照什么排序,往往得不到自己想要的内容。
 
  查看全部

20220914053.png

今天搜索了一些内容,发现公众的内容居然显示在百度搜索结果的第一位,有点神奇。估计两个大厂签订了某些合作协议,流量互通了。 其实早就应该开放了,现在很多优质内容都往公众号流入。 但是这些优质内容只有少部分人浏览。 牛人不会有很多时间看别人群,看别人朋友圈,所以他们接触公众号的内容比较少。
 
这导致微信公众号里面沉淀的内容 在闭环里面得不得很好利用。 比如一些写程序代码的公众号,一般人都是看到好的,收藏起来,然后在PC浏览器上看。 手机屏幕看代码, 体验十分不好的。
 
同样,百度也多了一个数据源,不至于被csdn和一些内容农场长期霸占首页的搜索结果。
 
最受影响的应该是搜狗搜索引擎。不过这个搜索引擎也是及其垃圾,以前用来搜索微信公众号内容,只能完全匹配字样,同义词,近义词的搜索效果很差,出来的内容也不知道按照什么排序,往往得不到自己想要的内容。
 
 

程序员是怎样删除安卓手机的垃圾文件?

Linux李魔佛 发表了文章 • 0 个评论 • 89 次浏览 • 2022-09-14 12:08 • 来自相关话题

有一台vivo的手机,用了也就1-2年,64GB的内部存储已经所剩无几了,并且每次清理垃圾文件,并无法清理一些系统产生的垃圾文件。

以至于手机的的可用空间越来越少,内置的清理垃圾的功能越来越鸡肋。而第三方的垃圾清理应用只会引来更多的垃圾文件。
 

 
 
身为一名程序员,就得用geek一点的方法彻底删除垃圾文件,尽可能地释放系统的空间。

由于平时使用的开发环境是Linux,所以下面环境是在Linux下操作,windows的用户应该也可以在git bash下操作。
 
手机usb 连接电脑
 
使用usb线连接linux电脑,不一定要adb的功能,但需要电脑能够识别手机的内部存储即可。

 
 
然后点击“内部存储设备”, 在文件内右键,进入Terminal 终端。
 

 
 
执行命令
du . -h --max-depth=1
简单解释一下这个语句。 就是显示当前目录下,第一层目录的占用存储大小情况。-h, human效果,人性化,自动转换文件大小单位。

--max-depth 是显示目录层级数目,如果选择2-3-4等目录,则会把子目录,子子目录的存储大小都显示出来,不过运行数据也会随之变慢。

 
上面命令一下子就把手机根目录下所有的目录的占用大小都列出来了。可以看到上面红框的地方,是一些缓存没用的东西,我们直接用命令 rm -rf 删除。

或者也可以在文件管理器里面直接删除。

如果有些目录底下有多层目录,那么就是把--max-depth 的值调大一些。 这样就知道他子目录的占用空间情况。

如果只想看看微信文件夹下的空间占用,可以指定目录:
du /Weixin/ -h --max-depth=3
这样就知道哪个目录占用的空间最大,然后点击进去,把没用的目录逐个删除。

经过笔者的测试,使用上述操作后,手机可用存储空间释放了40%的空间。主要是一些app下载的内容,由于app被清理了,结果这些下载内容成了孤立的文件,没有索引到对应的app,一直残留在手机内存。
 
 
  查看全部
有一台vivo的手机,用了也就1-2年,64GB的内部存储已经所剩无几了,并且每次清理垃圾文件,并无法清理一些系统产生的垃圾文件。

以至于手机的的可用空间越来越少,内置的清理垃圾的功能越来越鸡肋。而第三方的垃圾清理应用只会引来更多的垃圾文件。
 

 
 
身为一名程序员,就得用geek一点的方法彻底删除垃圾文件,尽可能地释放系统的空间。

由于平时使用的开发环境是Linux,所以下面环境是在Linux下操作,windows的用户应该也可以在git bash下操作。
 
手机usb 连接电脑
 
使用usb线连接linux电脑,不一定要adb的功能,但需要电脑能够识别手机的内部存储即可。

 
 
然后点击“内部存储设备”, 在文件内右键,进入Terminal 终端。
 

 
 
执行命令
du . -h --max-depth=1

简单解释一下这个语句。 就是显示当前目录下,第一层目录的占用存储大小情况。-h, human效果,人性化,自动转换文件大小单位。

--max-depth 是显示目录层级数目,如果选择2-3-4等目录,则会把子目录,子子目录的存储大小都显示出来,不过运行数据也会随之变慢。

 
上面命令一下子就把手机根目录下所有的目录的占用大小都列出来了。可以看到上面红框的地方,是一些缓存没用的东西,我们直接用命令 rm -rf 删除。

或者也可以在文件管理器里面直接删除。

如果有些目录底下有多层目录,那么就是把--max-depth 的值调大一些。 这样就知道他子目录的占用空间情况。

如果只想看看微信文件夹下的空间占用,可以指定目录:
du /Weixin/ -h --max-depth=3

这样就知道哪个目录占用的空间最大,然后点击进去,把没用的目录逐个删除。

经过笔者的测试,使用上述操作后,手机可用存储空间释放了40%的空间。主要是一些app下载的内容,由于app被清理了,结果这些下载内容成了孤立的文件,没有索引到对应的app,一直残留在手机内存。
 
 
 

Ptrade与QMT 获取可转债基础数据,溢价率,剩余规模,评级,双低,是否强赎

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 169 次浏览 • 2022-09-08 22:25 • 来自相关话题

Ptrade和qmt的内置数据接口,对于可转债的数据支持很少。只有基础的可转债价格,成交量。





 
搜索接口文档,关键字 可转债 , 只有可怜的一个接口。并且这个接口还是最近才提供的。
 
基本没有可转债的其他基础数据。
 
比如 溢价率,剩余规模,评级,双低,到期,强赎。





 
笔者也为了方便,跨平台,把数据调用抽离出来,写成可以调用  接口的方式。





 
用的post请求方式。
 
这样无论是ptrade还是qmt,还是平时写的选股web页面, 都可以直接调用同一个数据源。 而你只需要维护一个数据数据源。






 
需要接口的,可以加入星球 或者 开通ptrade/QMT 的同时 获取。

  查看全部
Ptrade和qmt的内置数据接口,对于可转债的数据支持很少。只有基础的可转债价格,成交量。

20220908003.png

 
搜索接口文档,关键字 可转债 , 只有可怜的一个接口。并且这个接口还是最近才提供的。
 
基本没有可转债的其他基础数据。
 
比如 溢价率,剩余规模,评级,双低,到期,强赎。

20220908004.png

 
笔者也为了方便,跨平台,把数据调用抽离出来,写成可以调用  接口的方式。

20220908005.png

 
用的post请求方式。
 
这样无论是ptrade还是qmt,还是平时写的选股web页面, 都可以直接调用同一个数据源。 而你只需要维护一个数据数据源。


20220908006.png

 
需要接口的,可以加入星球 或者 开通ptrade/QMT 的同时 获取。

 

花了1小时用django快速写了个可转债实时系统

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 149 次浏览 • 2022-09-07 08:08 • 来自相关话题

有个朋友的因子也特别刁钻,他自己用excel也不容易计算,拉取最新数据,筛选排除,计算权重后得到得分,最后得到目标转债。 手机上也无法操作,手机操作excel,上面的很多操作无法实施。 
 
用django快速搭了个页面给他



点击查看大图
 
数据是实时选出来的。当时帮他做的回测收益率也是很高,主要回撤控制得很好。
 
本来想用gin写,发现后台的dataframe还有这要找go下对应的库,避免计算出错,还是用会python吧(-。-) 查看全部
有个朋友的因子也特别刁钻,他自己用excel也不容易计算,拉取最新数据,筛选排除,计算权重后得到得分,最后得到目标转债。 手机上也无法操作,手机操作excel,上面的很多操作无法实施。 
 
用django快速搭了个页面给他
20220907001.png
点击查看大图
 
数据是实时选出来的。当时帮他做的回测收益率也是很高,主要回撤控制得很好。
 
本来想用gin写,发现后台的dataframe还有这要找go下对应的库,避免计算出错,还是用会python吧(-。-)

ptrade和qmt的内置代码编辑器,哪个比较好用?

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 173 次浏览 • 2022-09-05 11:24 • 来自相关话题

ptrade和qmt的内置代码编辑器,哪个比较好用?
 
答:都十分渣,半斤八两。更裸手在记事本写代码差不多的感觉。 尤其对于新人,经常可能会因为一些拼写错误,换行等问题,折腾一天,才能找到原因,至少pycharm对没有引用的变量是变灰的,语法错误是红的,快速帮助定位错误。(我自己就亲身经历过这种调试惨案,太惨痛。)
 
 
  查看全部
ptrade和qmt的内置代码编辑器,哪个比较好用?
 
答:都十分渣,半斤八两。更裸手在记事本写代码差不多的感觉。 尤其对于新人,经常可能会因为一些拼写错误,换行等问题,折腾一天,才能找到原因,至少pycharm对没有引用的变量是变灰的,语法错误是红的,快速帮助定位错误。(我自己就亲身经历过这种调试惨案,太惨痛。)
 
 
 

ubuntu/linux 64位 安装 kdb+ (需要证书授权)附下载地址

Linux李魔佛 发表了文章 • 0 个评论 • 126 次浏览 • 2022-09-04 12:14 • 来自相关话题

kdb+是一款高速小巧的时序数据库。32位的版本个人可以随意使用。
64位的版本需要申请授权证书。
申请后得到邮件,里面会有证书。





 
还有64位软件下载地址。文件还是小巧,几百k。没想到一个排名第二的时序数据库,体积居然不到1M。 
需要kdb+ 64位安装文件,可以到文末获取。

下载下来解压。
比如解压到目录:
~/tool/l64/
目录下有一个文件夹 l64和一个q.k的文件
l64子文件夹下只有一个文件q , 他是一个可执行文件。在linux下的命令行可以直接运行 ./q$ ./q
KDB+ 4.0 2022.05.11 Copyright (C) 1993-2022 Kx Systems
l64/ 4()core 23934MB xda xda-linux 127.0.1.1

'licence error: k4.lic提示缺失证书。

然后把证书文件拷贝到目录 ~/tool/l64/
 
这时如果直接运行 ./q 但是会报错.$ ./q -p 5001
KDB+ 4.0 2022.05.11 Copyright (C) 1993-2022 Kx Systems
l64/ 4(24)core 23934MB xda xda-linux 127.0.1.1 EXPIRE 2023.07.18 xxxxx@126.com KXCE #

'2022.09.04T11:34:18.272 couldn't connect to license daemon -- exiting
 这是因为没有设置环境变量。
 
windows下也需要设置环境部,linux同理也需要。
 
linux:
export QHOME="/home/root/tool/l64/"
 
或者放到bashrc文件里面。
 
正常运行,会显示 q)
 





 
 kdb+ 64位安装文件获取方式:
关注后 回复 kdb+


 
 
 
 
 
 
  查看全部
kdb+是一款高速小巧的时序数据库。32位的版本个人可以随意使用。
64位的版本需要申请授权证书。
申请后得到邮件,里面会有证书。

20220904003.png

 
还有64位软件下载地址。文件还是小巧,几百k。没想到一个排名第二的时序数据库,体积居然不到1M。 
需要kdb+ 64位安装文件,可以到文末获取。

下载下来解压。
比如解压到目录:
~/tool/l64/
目录下有一个文件夹 l64和一个q.k的文件
l64子文件夹下只有一个文件q , 他是一个可执行文件。在linux下的命令行可以直接运行 ./q
$ ./q
KDB+ 4.0 2022.05.11 Copyright (C) 1993-2022 Kx Systems
l64/ 4()core 23934MB xda xda-linux 127.0.1.1

'licence error: k4.lic
提示缺失证书。

然后把证书文件拷贝到目录 ~/tool/l64/
 
这时如果直接运行 ./q 但是会报错.
$ ./q -p 5001
KDB+ 4.0 2022.05.11 Copyright (C) 1993-2022 Kx Systems
l64/ 4(24)core 23934MB xda xda-linux 127.0.1.1 EXPIRE 2023.07.18 xxxxx@126.com KXCE #

'2022.09.04T11:34:18.272 couldn't connect to license daemon -- exiting

 这是因为没有设置环境变量。
 
windows下也需要设置环境部,linux同理也需要。
 
linux:
export QHOME="/home/root/tool/l64/"
 
或者放到bashrc文件里面。
 
正常运行,会显示 q)
 

20220904004.png

 
 kdb+ 64位安装文件获取方式:
关注后 回复 kdb+


 
 
 
 
 
 
 

从零开始 手撸一个回测框架 (以可转债双低,低溢价为例)

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 200 次浏览 • 2022-09-01 18:39 • 来自相关话题

因为优矿大部分可转债接口开始收费了,之前星球上分享的回测代码基本也跑不了。不过在关停转收费之前,已经把所需的数据下载下来,而最近的数据通过集思录补充既可。
 




Mysql 数据

 下面是代码主框架,目前通过之前优矿的导出的csv数据 ,计算 各个因子。 通过不同权重评分,进行轮动。class DataFeed:
def __init__(self):
self.csv_path = CSV_PATH
self.position = {}
self.HighValue = 0
self.Start_Cash = 1000000 # 初始资金
self.MyCash = self.Start_Cash
self.Withdraw = 0
self.daily_netvalue =
self.current_day = 0
self.PosValue = 0
self.threshold = 0 # 阈值
self.HighValue = self.Start_Cash
self.date_list, self.source = self.feed()
self.day_count = 0

def unpossibile(self, df, date):
# 剔除当日涨停的转债,买不入
raise_limited_dict = {
'2022-04-08': ['127057', ],
'2022-07-27': ['127065', ],
'2022-07-28': ['127065', ],
}
target_list = raise_limited_dict.get(date, None)
if target_list is None:
return df

return df.drop(index=target_list, axis=1)

def feed(self):
df = pd.read_csv(self.csv_path,
encoding='utf8',
dtype={'tickerEqu': str, 'tickerBond': str, 'secID_x': str},
)
del df['Unnamed: 0']
df['tradeDate'] = pd.to_datetime(df['tradeDate'], format='%Y-%m-%d')
df = df.set_index('tradeDate')
date_set = set(df.index.tolist())
date_list = list(map(lambda x: x.strftime('%Y-%m-%d'), date_set))
date_list.sort()
return date_list, df

def filters(self, df, today):
# 过滤条件,可添加多个条件
df = self.unpossibile(df, today)
return df

def logprint(self, current):
log.info('当前日期{}'.format(current))

def run(self):
for current in self.date_list:

if current < START_DATE or current > END_DATE:
continue

if self.day_count % FREQ != 0:
self.get_daily_netvalue(current)
else:
self.handle_data(current)

self.day_count += 1

self.after_trade()
 
双低和低溢价选债轮动:





 
上面是主要框架代码, 根据数据来驱动交易。 可以根据不同的时间日期进行回测交易。不同持有个数,不同轮动功能天数。【完整代码可以常见 知识星球】
 
运行: python main.py
 





运行后会自动保存一个excel文件:
 
并且可以生成收益率曲线图:
 






完整代码与数据可以参考星球代码:





  查看全部
因为优矿大部分可转债接口开始收费了,之前星球上分享的回测代码基本也跑不了。不过在关停转收费之前,已经把所需的数据下载下来,而最近的数据通过集思录补充既可。
 

20220901004.png
Mysql 数据

 下面是代码主框架,目前通过之前优矿的导出的csv数据 ,计算 各个因子。 通过不同权重评分,进行轮动。
class DataFeed:
def __init__(self):
self.csv_path = CSV_PATH
self.position = {}
self.HighValue = 0
self.Start_Cash = 1000000 # 初始资金
self.MyCash = self.Start_Cash
self.Withdraw = 0
self.daily_netvalue =
self.current_day = 0
self.PosValue = 0
self.threshold = 0 # 阈值
self.HighValue = self.Start_Cash
self.date_list, self.source = self.feed()
self.day_count = 0

def unpossibile(self, df, date):
# 剔除当日涨停的转债,买不入
raise_limited_dict = {
'2022-04-08': ['127057', ],
'2022-07-27': ['127065', ],
'2022-07-28': ['127065', ],
}
target_list = raise_limited_dict.get(date, None)
if target_list is None:
return df

return df.drop(index=target_list, axis=1)

def feed(self):
df = pd.read_csv(self.csv_path,
encoding='utf8',
dtype={'tickerEqu': str, 'tickerBond': str, 'secID_x': str},
)
del df['Unnamed: 0']
df['tradeDate'] = pd.to_datetime(df['tradeDate'], format='%Y-%m-%d')
df = df.set_index('tradeDate')
date_set = set(df.index.tolist())
date_list = list(map(lambda x: x.strftime('%Y-%m-%d'), date_set))
date_list.sort()
return date_list, df

def filters(self, df, today):
# 过滤条件,可添加多个条件
df = self.unpossibile(df, today)
return df

def logprint(self, current):
log.info('当前日期{}'.format(current))

def run(self):
for current in self.date_list:

if current < START_DATE or current > END_DATE:
continue

if self.day_count % FREQ != 0:
self.get_daily_netvalue(current)
else:
self.handle_data(current)

self.day_count += 1

self.after_trade()

 
双低和低溢价选债轮动:

20220901005.png

 
上面是主要框架代码, 根据数据来驱动交易。 可以根据不同的时间日期进行回测交易。不同持有个数,不同轮动功能天数。【完整代码可以常见 知识星球】
 
运行: python main.py
 
20220901001.png


运行后会自动保存一个excel文件:
 
并且可以生成收益率曲线图:
 

20220901003.png


完整代码与数据可以参考星球代码:

星球.png

 

python获取通达信可转债日线和分时数据

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 286 次浏览 • 2022-08-28 10:41 • 来自相关话题

昨天看到优矿平台公告,开始对大部分数据获取接口进行收费。
 





 
 除了优矿,还有哪些可以获取可转债日线,甚至分时tick数据呢?当然笔者压箱底里面还有很多可用数据源的。本文就简单介绍其中一个,下通达信数据源。
 
安装
使用pip安装第三方库pytdxpip install pytdx



分时数据
下面6行python代码, 就可以获取通达信的可转债分时数据。from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')
 




如果需要遍历当前最新可转债代码,需要结合前面的文章。【注意这代码会定期更新,因网站架构或者字段是不定时变动】

不过前面的接口只能读取800条数据,以一天240条数据计算,只能读取2天多的数据量,对于需要更多数据的朋友来说,肯定不够的。或者有一个办法,把上面代码写成定时任务,就可以每天收盘后自动存储对应的数据。

如果需要更多的历史数据,那么可以使用pytdx的另外一个功能,那就是使用python读取通达信本地数据文件。

先用通达信同步1分钟(或5分钟)数据到本地.
 





 
选择沪深京分钟线,当然,其他数据你也可以选择。勾选一分钟线数据或者5分钟线数据,还有日期。不过这里日期会有限制,只能下载100天的1分钟线,或者500天的5分钟线。所以如果长期需要这个数据,你可以每隔一段时间下载一次。

数据保存路径:通达信安装目录的 vipdoc 子目录比如我的通达信客户端安装在 c:\new_tdx 下,



c:\new_tdx\vipdoc\sz\lday\ 下是深圳的日k线数据
c:\new_tdx\vipdoc\sh\lday\ 下是上海的日k线数据
c:\new_tdx\vipdoc\sh\minline\ 下是上海的分钟线数据
c:\new_tdx\vipdoc\sz\minline\ 下是深圳的分钟线数据





 
如果你需要更久的历史数据,可以到网上找找,下载下来后按照下面代码读取即可。 from pytdx.reader import TdxMinBarReader
path='/home/xda/Downloads/sz128014.lc1'
reader = TdxMinBarReader()
df = reader.get_df(path)
#df.to_excel('tick.xlsx') # 导出为excel







 
得到dataframe对象后,接着可以保存为excel,数据库都很简单了。一条语句的事情。
 
可转债日线数据
 
当然,能够获取到分钟数据,对于日线数据更加不在话下了。日线数据并没有日期限制,想下多少有多少。api = TdxHq_API()
api = api.connect('119.147.212.81', 7709)
data=api.get_k_data('123045', '2020-05-01', '2022-08-26') # 123045 为可转债代码,可以替换任意代码
data.to_excel('k-line.xlsx')






 
如果想获取正股或者其他股票数据,只需要把代码替换成正股股票代码即可。

如果分钟数据还不满足,还可以使用更小粒度的tick数据。下回有空再继续介绍,敬请关注。
 







欢迎关注公众号 查看全部
昨天看到优矿平台公告,开始对大部分数据获取接口进行收费。
 

20220827005.png

 
 除了优矿,还有哪些可以获取可转债日线,甚至分时tick数据呢?当然笔者压箱底里面还有很多可用数据源的。本文就简单介绍其中一个,下通达信数据源。
 
安装
使用pip安装第三方库pytdx
pip install pytdx



分时数据
下面6行python代码, 就可以获取通达信的可转债分时数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')

 
20220827001-1.png

如果需要遍历当前最新可转债代码,需要结合前面的文章。【注意这代码会定期更新,因网站架构或者字段是不定时变动】

不过前面的接口只能读取800条数据,以一天240条数据计算,只能读取2天多的数据量,对于需要更多数据的朋友来说,肯定不够的。或者有一个办法,把上面代码写成定时任务,就可以每天收盘后自动存储对应的数据。

如果需要更多的历史数据,那么可以使用pytdx的另外一个功能,那就是使用python读取通达信本地数据文件。

先用通达信同步1分钟(或5分钟)数据到本地.
 

20220827002.png

 
选择沪深京分钟线,当然,其他数据你也可以选择。勾选一分钟线数据或者5分钟线数据,还有日期。不过这里日期会有限制,只能下载100天的1分钟线,或者500天的5分钟线。所以如果长期需要这个数据,你可以每隔一段时间下载一次。

数据保存路径:通达信安装目录的 vipdoc 子目录
比如我的通达信客户端安装在 c:\new_tdx 下,



c:\new_tdx\vipdoc\sz\lday\ 下是深圳的日k线数据
c:\new_tdx\vipdoc\sh\lday\ 下是上海的日k线数据
c:\new_tdx\vipdoc\sh\minline\ 下是上海的分钟线数据
c:\new_tdx\vipdoc\sz\minline\ 下是深圳的分钟线数据


20220827004.png

 
如果你需要更久的历史数据,可以到网上找找,下载下来后按照下面代码读取即可。
        from pytdx.reader import TdxMinBarReader
path='/home/xda/Downloads/sz128014.lc1'
reader = TdxMinBarReader()
df = reader.get_df(path)
#df.to_excel('tick.xlsx') # 导出为excel



20220827003.png


 
得到dataframe对象后,接着可以保存为excel,数据库都很简单了。一条语句的事情。
 
可转债日线数据
 
当然,能够获取到分钟数据,对于日线数据更加不在话下了。日线数据并没有日期限制,想下多少有多少。
api = TdxHq_API()
api = api.connect('119.147.212.81', 7709)
data=api.get_k_data('123045', '2020-05-01', '2022-08-26') # 123045 为可转债代码,可以替换任意代码
data.to_excel('k-line.xlsx')

20220827006.png



 
如果想获取正股或者其他股票数据,只需要把代码替换成正股股票代码即可。

如果分钟数据还不满足,还可以使用更小粒度的tick数据。下回有空再继续介绍,敬请关注。
 

20220827008.png



欢迎关注公众号

6行python代码 获取通达信的可转债分时数据

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 207 次浏览 • 2022-08-27 14:33 • 来自相关话题

6行python代码 获取通达信的可转债分时数据。from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')


点击查看大图 
 
如果需要遍历当前最新可转债代码(集思录),需要结合前面的文章。 查看全部
6行python代码 获取通达信的可转债分时数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')
20220827001-1.png
点击查看大图 
 
如果需要遍历当前最新可转债代码(集思录),需要结合前面的文章。