playwright是一个基于Node.js的浏览器自动化测试库,.netCore中也有对应的版本。写一些稍微复杂点的spider有时候会用到它。这里分享一下C#(基于.netCore6平台)调用playwright获取Cookies字符串的简单实现。 playwright的安装非常简单,通过nuget包引入即可,但是在导入nuget包后,还需要下载其对应的浏览器驱动(Chromium、Firefox、WebKit)。 在项目目录\bin\Debug\net6.0-windows(如果是控制台程序,目录名会不同) …

2023年7月15日 0条评论 492点热度 1人点赞 阅读全文

.NetCore目前在金融计算这块的生态的确比不上Python,并没有太多的轮子可以拿来直接用,很多功能需要自己实现。于是最近就在尝试写一些资产绩效评价指标的模块,比如最大回撤,夏普比率,年化收益之类的东西,在这个过程中遇到了一些关于数据精度的问题,感觉是个坑,在这里记录一下。 数学计算方面,.NetCore中一般会使用System.Math这个库,在进行年化计算时要用到Pow这个幂函数,但Pow只支持double型入参,这就造成了明显的精度丢失,计算结果与期望结果相去甚远。 搜索了很多相关文章,都不是有效的解决办…

2023年4月24日 0条评论 354点热度 0人点赞 阅读全文

Attribute(特性)是C#一个比较有意思的类,通过使用Attribute注释,可以在运行时将特定内容与被注释对象进行绑定,用以约束程序行为。在自定义Attribute上过去没有尝试过,今天尝试写了个小Demo,这里做些记录分享: 举个应用场景的例子,有一个方法,动作是每天收盘后自动操作国债逆回购,国债逆回购的收市时间是3点半,也就是说这个方法执行时要在15:00-15:30这个时间段。按照一般思路,我可能要为这个功能做一个定时任务,在每天的一个固定时间执行一次,这样做当然可以,但如果我不想为这个特定功能再去做…

2023年4月20日 0条评论 472点热度 3人点赞 阅读全文

最近想给自己的交易程序添加一些自动化功能,将可转债的筛选过滤与实盘操作全部交给机器运行。 之前关于实时价格和K线数据的获取都是用的自己写的爬虫模块,稳定运行没啥问题(一共实现了四个接口,两个日用,两个备用)。可转债这块我犯了次懒,没有再写爬虫,而是导入了Akshare这个金融数据包。结果就是因为这个包的引用,导致程序后来打包编译的时候问题不断。 很多特别细节的东西已经记得不是太清楚了,大致出现的问题和解决如下: 所有的开发测试都完成后,准备打包成exe,部署到我的实盘交易机器上。编译的时候没有问题,但是运行exe时…

2023年2月18日 2条评论 912点热度 0人点赞 阅读全文

我感觉这个问题算是用pysimplegui写界面时候一个容易遇到坑,记录一下。 对于多窗体应用,如果在生成子window之前,其所用的layout单独在别的模块中定义,并在生成window时进行引用,那么这个子window在调用close后,想要重复显示的时候就会报错,提示layout不能reuse。 解决这个问题的方式是不要直接引用layout,在调用window之前予以即时的layout变量定义,然后传入window。这样可以解决问题,但不好的地方是会造成代码冗长,一个合理的解决方案是在其他模块中定义函数,然后…

2023年2月12日 0条评论 683点热度 0人点赞 阅读全文

媳妇是做文字工作的,比较忙,经常要写大量的文字稿,想到最近爆火的ChatGPT,感觉是个帮手,于是写了个小工具调用其API帮助媳妇完成工作。在博客上分享一下,如下图: 在界面中暴露的主要是一些可以影响输出的参数,具体含义详见如下地址中的官方说明: https://platform.openai.com/docs/api-reference/completions/create API-Key这个参数是需要自己注册获得或者去某宝上购买的,值得注意的是,某宝上购买的账户中默认有18美刀的体验金,ChatGPT是个付费A…

2023年1月31日 2条评论 942点热度 1人点赞 阅读全文

我之前开发用的虚拟环境已经很久没有变动动过了,最近筹划写点新的功能模块,需要用到一些新的第三方包,我想测试一下这些新的包安装到venv中后,用pyinstaller打包后的exe文件尺寸有多大变化,随后发现问题。 在向venv环境添加了新包后,用pyinstaller打包程序时出现错误信息:Fatal error in launcher: Unable to create process using '"D:\dev\Qthinker.venv\Scripts\python.exe" "D:\Qthinker.ve…

2023年1月26日 0条评论 818点热度 0人点赞 阅读全文

这两天陆续完善了投资评价页面生成的代码,现在图表的数据表现更加丰富,动态图表入口可以通过顶部菜单栏或者边栏投资评价表的表头链接访问,链接地址:https://qthinker.net/charts/report/return/my_return_report.html 效果图如下: 相较于原先的图表,在累积收益率折线图上增加了极值和最大回撤的数据展示;在收益率分布直方图上,将Bar的数量调整为了15,数据展示粒度更细,同时x轴的涨跌幅区间对应的Label也以-45°的形式做了展示,y轴的频率数据也调整为以百分数形式…

2023年1月14日 0条评论 393点热度 2人点赞 阅读全文

最近发现新版的同花顺交易端界面有变化,其界面上的Static序号有变化,重新研究了一下,这里做个备忘。 因为过去写过一个叫做Broker的类,其中的某些方法在判断可用资金和仓位上需要读取对应控件的值,具体可以看这篇博文— 《仓位管理类的实现和遇到的坑》。之前的交易界面是这样的: 新版的交易界面是这样的: 之前程序中需要读取的Static对应序号如下: 总资产 :Static12 持仓市值:Static11 持仓盈亏:Static14 可用金额:Static6 新版交易界面对应的Stactic序号变化如下: 总资产 …

2022年12月2日 0条评论 547点热度 2人点赞 阅读全文

在实盘策略上,我目前所有持仓标的应用的都是网格策略。在市场处于震荡期间,网格无疑是最好的交易策略之一。而对于网格交易来讲,最需要关注的是仓位,确保在市场出现调整时仓位按照预期进行控制,并且有资金可以加仓。除去仓位管理这个工作,我不太关心明天市场是涨是跌,因为只要有波动性在就可以稳定赚取差价收益,积少成多。 过去在仓位控制上,没有通过代码进行自动化的管理,基本都是靠盘前主观预判后,手动开启或关闭策略类实例的买入或者卖出权限实现。周末写了一个类,完善了之前在仓位管理上存在的不足。 之所以过去没有做仓位管理的自动化处理,…

2022年8月29日 0条评论 495点热度 5人点赞 阅读全文