最近一直在用NiceGUI这个图形库重构我的交易系统,在系统中有一个利润统计的模块,可以按照指定的属性统计利润总和,并以柱状图进行显示。写这块代码的时候遇到一个动态属性绑定的问题,记录一下解决方法。 需求很简单,就是在利润统计模块中,如果利润总和小于等于0,即亏损的,在柱状图上用绿色柱图显示,如果是大于0,则用红色柱图显示。这个需求如果是写前端页面很好解决,js中属性直接绑定一个function回调就OK了,但是使用NiceGUI的时候,因为代码都是python的,所以不能直接用js特性的方法解决,好在新版的Nic…

2024年4月12日 0条评论 17点热度 0人点赞 阅读全文

最近在云服务器上进行程序测试,其中涉及到一些自动化脚本的执行。如果远程桌面保持连接的话不会有任何问题,但是如果关闭远程桌面,就会引发异常:There is no active desktop required for moving mouse cursor! 问题原因是关闭远程桌面后,远程服务器的切换为登录界面,自动化脚本失去了输入焦点(可能是登出后系统切掉了键鼠相关钩子)。在网上搜了搜解决方案,Github上的一个帖子描述的就是这类问题: https://github.com/pywinauto/pywinaut…

2024年3月28日 0条评论 77点热度 0人点赞 阅读全文

最近在重构旧版的Python交易框架代码,前端准备换用NiceGUI这个最近比较火的前端框架,玩了一周左右,体会如下: 1、NiceGUI的前端实现基于对Quasar和Tailwind CSS这些框架的二次封装。尽管封装程度较高,但对使用NiceGUI开发前端界面而言,并不能完全避免js和相关前端技术栈。写界面python代码的时候还是需要打开Quasar和Tailwind CSS这些东西的官方文档参考。 2、NiceGUI的使用上,感觉和用Vue开发前端应用有些相似的感觉。从我个人的习惯上,页面路由函数下一般分2…

2024年3月24日 0条评论 109点热度 0人点赞 阅读全文

春节前给自己开了一个新坑,准备做一个对标BackTrader的量化策略回测框架,当时还发了篇博客 准备自己写一套量化回测框架。今天终于把一个功能比较完整的初版demo做完了,这里记录一下。 不可否认BackTrader的功能强大,但想得心应手的运用好这套工具大概率需要自己读源码进行魔改。所以我一直在想,干脆自己动手撸一个,简单实现的话,技术上其实并不是很难,而且更适合自己,用起来会更方便一些。 框架实现的整体思路其实很简单,就是在源数据的dataframe基础(日期、开高收低量)上,加入策略相关的技术指标数据、头寸…

2024年2月27日 0条评论 178点热度 0人点赞 阅读全文

股票价格是否是随机的是一个一直处于争论中的话题。我曾经和身边的朋友就这个问题谈过看法,多数倾向于股票价格中有某种规律可循,不是随机的,但我的观点可能稍有不同。我的看法是,就股票价格,即开高收低这四个价格本身的分布而言,特征是随机的,但股票的长期趋势有内生规律可循,而所谓的规律,并不是价格这个简单的因子能够解释的,而是基于一些更宏观的因素,比如经济周期,企业基本面,以及地缘或其他周期性因素的影响。 在交易策略算法的研究中,经常会使用蒙特卡洛式的算法进行大量的数据生成,模拟与回归。就这个问题,我曾经写过一个简单的模拟股…

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

最近给自己开了一个新坑,准备写一套适合自己,适合国内市场的量化回测框架。 市面上成熟的量化回测框架也有很多了,比如BackTrader还有ZipLine之类。但是在学习这些类库的过程中,或多或少总有感觉不是非常顺手,而且如果要吃透的话,学习成本还是比较高的。于是有了自己写一套回测框架的想法。 目前对这套框架的设计是这样的: 1、整体数据都基于K线的dataframe进行计算填充,从原始数据的OHLCV开始,先封装一个数据集类对原始数据进行清洗,对齐。 2、将数据丢入生成技术指标的模块里,根据需要的指标参数,在原有的…

2024年1月9日 0条评论 337点热度 0人点赞 阅读全文

止盈和止损是每一个成熟交易者交易系统的一部分。对于止盈和止损的设定方法有很多,这里详解如何使用ATR指标进行止盈止损,并分享一个我自己写的ATR止盈指数画线主图指标。 什么是ATR ATR指标全称平均真实范围指标,是一个衡量股票或其他交易品种波动性的技术分析工具。ATR计算一定周期内每日价格波动范围的均值,其计算方法如下: 求出每日的真实波动范围,该范围为以下三者之中的最大值:- 当日最高价和最低价的差值- 当日最高价与前一日收盘价的绝对差值- 当日最低价与前一日收盘价的绝对差值 将过去N日的真实波动范围平均值计算…

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

年化收益率是衡量投资收益回报的重要指标。它是把当前收益率(例如日收益率、周收益率、月收益率)换算成年收益率来计算的,并不是真正的已取得的收益率。以日收益率为例,反算为年化收益率,可以简单理解为,按照过去每日的收益的一个平均情况,维持在这个水平上,平均一年能赚到多少个百分点,年化收益率是一个复合的年增长率。QThinker Plus 上提供了这个计算工具,可以直接计算。下面说一下计算方法。 具体到计算上,一般有两种方式计算年化收益率: 一、通过日收益率序列计算年化收益率 这种计算,通常以资产期初价值为1,先计算期末的…

2023年11月27日 0条评论 173点热度 1人点赞 阅读全文

目前我的量化交易系统已经从之前Python写的版本切换为.netCore版本。系统的数据库存储采用SQLite,ORM用的Dapper,最近在给系统扩展功能时遇到了一个实体类字段为表外字段的问题,这里记录一下处理方案。 问题的起因是K线数据实体类的扩展。在原设计中,数据库对K线进行存储的表只有OHLCV这5个维度,实际上通过某些接口,还可以拿到振幅,换手率等数据,这些数据是在做标的分析时很有用的参考,尤其是换手率。于是我考虑对原K线的实体类进行扩展,由此就引申出一个表外字段的映射问题。 关于Dapper下表外字段处…

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

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

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