1.【vn.py学习笔记(八)】vn.py utility、通用BarGenerator、源码阅读ArrayManager源码阅读
2.读读antd源码之通用组件
3.Lua5.4 源码剖析——性能优化与原理分析
【vn.py学习笔记(八)】vn.py utility、通用BarGenerator、源码阅读ArrayManager源码阅读
在量化投资的通用探索中,作者对vn.py产生了浓厚的源码阅读Mist源码调试兴趣,并投身于相关学习。通用目前,源码阅读作者主要专注于vn.py在A股市场量化策略的通用学习,面临的源码阅读主要技术难点包括获取和维持日线数据、实现自动下单交易、通用开发全市场选股程序、源码阅读编写选股策略回测程序,通用以及运用机器学习进行股票趋势预测。源码阅读作者计划通过阅读vn.py源码,通用深入了解其架构机制,并通过分享形式记录学习心得,以便更好地理解vn.py。电影源码前台APP
相关github仓库地址:github.com/PanAndy/quan...
如有收获,请关注公众号以支持作者。同时,作者也收集了一些量化投资和技术相关的视频及书籍资源,欢迎关注公众号亚里随笔获取。
本文将重点探讨vn.py/trader/utility.py中的内容,主要包括工具函数、BarGenerator和ArrayManager。工具函数部分相对容易理解,主要是对通用功能进行封装。BarGenerator是K线合成器,负责根据实时tick数据合成1分钟K线,并进一步合成n分钟K线。ArrayManager是指标计算辅助类,负责维护一定量的历史数据,以供计算sma、ema、php虚拟网络源码atr等常见指标。BarGenerator和ArrayManager是本次学习的重点。
工具函数部分主要提供合约代码转换、路径读取、json文件读写、数值位数设置、日志等功能,主要是对基本功能进行封装,没有复杂的算法。
BarGenerator类用于从tick数据中生成1分钟bar数据,也可以用于从1分钟的bar数据中合成x分钟或x小时的bar。BarGenerator的主要函数包括update_tick、update_bar、update_bar_minute_window、update_bar_hour_window、on_hour_bar和generate。
ArrayManager是万利1078源码一个时间序列容器,用于按时间序列缓存bar数据,提供技术指标的计算。ArrayManager提供的函数分为四类:init函数、update_bar、@property函数和技术指标函数。
读读antd源码之通用组件
ui组件库在ui开发框架中扮演着类似模具的角色,极大地提升了生产效率。无论是设计风格、基础功能还是操作交互,ui组件库都进行了高度统一,为项目开发提供了开箱即用的便捷。在React领域,中后台项目常用到的ui组件库,非Ant Design(antd)莫属。
本文将分享antd组件库的源码,探讨我们习以为常的功能背后的逻辑处理。在阅读过程中,pdd支付源码 2020将遵循《阅读前端源码的思路》,文章将直接分享重点,忽略具体细节。
一个没有设计理念的ui组件库,都不好意思称作ui组件库。官方文档中,第一个栏目就是“设计”,可见设计是ui组件库的灵魂,它包含了自身的价值观和模式,并遵循一系列规范。本文将先分享阅读的第1个,通用组件的源码。
通用组件包含三个:Button、Icon、Typography。关于这些组件,我们可以从官方文档中看到一些值得思考的功能。例如,Button的点击动作反馈,Icon的内部图标封装,Typography的文本处理或功能封装等。
antd的组件源码相对混乱,但我们可以从中找到一些有趣的点。例如,Button组件中关于按钮文字是两个汉字时插入空格的逻辑,以及内容劫持的过程。Wave组件的实现主要涉及到transition和animation,其中onClick方法的关键在于updateCSS方法,它动态添加样式,并添加transition和animation。
Icon组件则被搬到了@ant-design/icons库中实现,主要是一些样式、事件和图标引用的处理。Typography组件则提供了一系列文本样式的内容,其中文本拷贝使用了copy-to-clipboard库,文本溢出处理则通过Ellipsis组件实现。
本文对antd源码之通用组件的探讨就到这里,希望能帮助你更好地理解这些组件的内部逻辑。
Lua5.4 源码剖析——性能优化与原理分析
本篇教程将引导您深入学习Lua在日常编程中如何通过优化写法来提升性能、降低内存消耗。在讲解每个优化案例时,将附上部分Lua虚拟机源代码实现,帮助您理解背后的原理。 我们将对优化的评级进行标注:0星至3星,推荐评级越高,优化效果越明显。优化分为以下类别:CPU优化、内存优化、堆栈优化等。 测试设备:个人MacBookPro,配置为4核2.2GHz i7处理器。使用Lua自带的os.clock()函数进行时间测量,以精确到毫秒级别。为了突出不同写法的性能差异,测试通常循环执行多次并累计总消耗。 下面是推荐程度从高到低的优化方法: 3星优化:全类型通用CPU优化:高频访问的对象应先赋值给local变量。示例:用循环模拟高频访问,每次访问math.random函数创建随机数。推荐程度:极力推荐。
String类型优化:使用table.concat函数拼接字符串。示例:循环拼接多个随机数到字符串。推荐程度:极力推荐。
Table类型优化:Table构造时完成数据初始化。示例:创建初始值为1,2,3的Table。推荐程度:极力推荐。
Function类型优化:使用尾调用避免堆栈溢出。示例:递归求和函数。推荐程度:极力推荐。
Thread类型优化:复用协程以减少创建和销毁开销。示例:执行多个不同函数。推荐程度:极力推荐。
2星优化:Table类型优化:数据插入使用t[key]=value方式。示例:插入1到的数字。推荐程度:较为推荐。
1星优化:全类型通用优化:变量定义时同时赋值。示例:初始化整数变量。推荐程度:一般推荐。
Nil类型优化:相邻赋值nil。示例:定义6个变量,其中3个为nil。推荐程度:一般推荐。
Function类型优化:不返回多余的返回值。示例:外部请求第一个返回值。推荐程度:一般推荐。
0星优化:全类型通用优化:for循环终止条件无需提前计算缓存。示例:复杂函数计算循环终止条件。推荐程度:无效优化。
Nil类型优化:初始化时显示赋值和隐式赋值效果相同。示例:定义一个nil变量。推荐程度:无效优化。
总结:本文从源码层面深入分析了Lua优化策略。请根据推荐评级在日常开发中灵活应用。感谢阅读!