1.php源代码保护——PHP加密方案分析&解密还原
2.vn.py社区精选4 - 双均线策略深度解析
3.JS逆向快速定位关键点之9大通用hook脚本
4.vn.py学习笔记(八)vn.py utility、通用BarGenerator、策略ArrayManager源码阅读
5.文华6软件:轻松玩转期货,源码高低点连线指标的通用5大策略源码分享
6.什么是策略源码
php源代码保护——PHP加密方案分析&解密还原
PHP源代码保护策略详解
PHP作为解释型语言,其源代码保护主要分为三类加密方案,策略以及两种部署策略。源码软文展示源码下面我们将深入剖析这些方法。通用无扩展方案
源代码混淆:非专业开发者常用的策略保护手段,简单混淆变量和函数名,源码如使用压缩、通用base或异或编码,策略但容易被还原,源码注释可能保留。通用解密时,策略如遇到非打印字符或特殊字符编码问题,源码可通过格式化代码找到关键函数。
手工解密
对于简单的混淆,可通过调整编码并查找eval函数执行点,找到原始代码。PHP7处理异常时可能需要降级到PHP5.6。自动化通用解密
PHP扩展:通过编写扩展并Hook Zend引擎函数,如zend_compile_string,可以获取执行的源代码。如Beast扩展,虽然源码泄露容易导致解密,但可通过ID阿分析找到加密密钥。
源代码混淆与PHP扩展方案比较
扩展方案的混淆更为深入,加密后执行环境不变,注释可能保留。例如,Beast扩展利用AES加密,但关键密钥隐藏在编译后的扩展中,可通过分析找到并解密。高级保护方案
商业防护方案如_ZendGuard_、_SourceGuardian_、_IonCube_等,常通过修改引擎或直接操作opcode来增加保护,这些方法更难直接还原源代码。结论
在选择PHP源码保护时,应优先考虑opcode或虚拟机方案,如仅使用混淆,虽然能增加阅读难度,但一旦加密扩展被获取,保护效果有限。确保加密扩展的安全性是关键。vn.py社区精选4 - 双均线策略深度解析
策略原理
双均线策略作为基础的CTA策略,通过短周期与长周期均线的金叉或死叉信号进行交易决策,捕捉市场趋势。策略包含两个关键周期的vst宿主源码移动平均线,短周期反映近期市场走势,长周期代表较长时段的趋势。
源码分析
以vn.py项目中的双均线策略源码为例,解析策略实现逻辑和内部代码。
创建策略实例
所有vn.py框架中的CTA策略类(包括内置和自定义)皆基于CTA策略模板类(CtaTemplate)实现子类。模板类为策略设计提供了通用结构,如同汽车设计图指导汽车制造。CtaTemplate定义了交易函数和策略逻辑框架,使得快速实现策略成为可能。
策略初始化
在策略实例创建时,设置参数和变量。参数由外部指定,变量随策略状态变化动态更新。参数列表中包括策略名称、设置信息等,系统自动从配置文件中加载。变量列表用于界面显示,并在策略停止、收到回报或同步数据时保存状态。
构造函数__init__
构造函数接收CTA引擎、策略名称、标的代码和设置信息作为参数,其中引擎对象自动传入。创建BarGenerator实例用于生成分钟级别K线数据,ArrayManager用于缓存K线数据,支持指标计算。
状态变量初始化
状态变量初始化并非在构造函数中完成,而是在创建策略实例后通过图形界面的初始化按钮触发on_init函数,加载历史数据回放给策略初始化变量。
启动自动交易
点击启动策略按钮,自动调用on_start函数,将交易状态变量设置为True,启动交易流程。确保在界面刷新策略状态相关显示时调用put_event函数。
接收Tick推送
CTP接口每0.5秒推送Tick数据,由事件引擎分发到策略中。Tick数据通过BarGenerator的update_tick函数处理,合成1分钟K线数据,供策略使用。
核心交易逻辑
接收到K线数据后,将数据放入ArrayManager容器中,确保至少个数据后初始化完毕。调用talib库计算技术指标,判断金叉或死叉触发交易逻辑。交易指令由策略模板封装,在on_bar函数中直接调用。
委托回报处理
on_order函数处理委托状态变化,on_trader和on_stop_order函数处理成交回报和停止单回报。小白重装源码双均线策略在这些函数中通常无操作。
停止自动交易
每日交易结束后,通过停止按钮关闭自动交易,策略引擎调整交易状态变量,撤销所有活动委托,并保存变量状态。
CTA交易流程梳理
使用思维导图整理vn.py中策略实现与执行流程,包括从创建策略实例到停止自动交易的完整步骤。
《vn.py全实战进阶》课程介绍
该课程提供节内容,涵盖策略设计、参数回测和实盘自动交易的CTA量化业务流程,适合深入学习vn.py应用。
更多vn.py精华内容
关注公众号以获取更多深入分析和实践技巧。
JS逆向快速定位关键点之9大通用hook脚本
在JavaScript逆向工程中,快速定位关键点是至关重要的。这里有九种通用的hook脚本策略,帮助我们深入分析代码行为: 首先,Cookie Hook帮助我们定位Cookie中与关键字"v"相关的参数生成位置,一旦匹配,就会自动设置断点。 对于HTTP头部参数,header参数Hook可以用于跟踪请求中特定字段的变化。 通过简单地在代码中插入debugger,Hook过debugger方法为我们提供了一个直观的检查点,便于调试。 URL Hook专注于URL中的关键参数,当遇到包含"login"的请求时,会自动设立断点,便于追踪网络请求。 在处理加密的站点时,hook JSON.stringify和 JSON.parse可以让我们洞察数据在字符串和对象间的转换过程。 JavaScript的eval 功能,通过提前设置的hook,hook eval可以记录下所有动态执行的JS代码,便于分析。 同样,hook Function会捕获所有函数的执行,让我们看到将要运行的JS源码。最后,别忘了防范反调试,确保在执行过程中不会被检测到,这是逆向工程中必不可少的通用反调试技巧。
这些脚本工具为深入JavaScript代码提供了强大的支持,帮助我们轻松定位关键逻辑点。
vn.py学习笔记(八)vn.py utility、BarGenerator、ArrayManager源码阅读
在量化投资的探索中,作者对vn.py产生了浓厚的kafka源码架构兴趣,并投身于相关学习。目前,作者主要专注于vn.py在A股市场量化策略的学习,面临的主要技术难点包括获取和维持日线数据、实现自动下单交易、开发全市场选股程序、编写选股策略回测程序,以及运用机器学习进行股票趋势预测。作者计划通过阅读vn.py源码,深入了解其架构机制,并通过分享形式记录学习心得,以便更好地理解vn.py。
相关github仓库地址:github.com/PanAndy/quan...
如有收获,请关注公众号以支持作者。同时,作者也收集了一些量化投资和技术相关的视频及书籍资源,欢迎关注公众号亚里随笔获取。
本文将重点探讨vn.py/trader/utility.py中的内容,主要包括工具函数、BarGenerator和ArrayManager。工具函数部分相对容易理解,主要是对通用功能进行封装。BarGenerator是K线合成器,负责根据实时tick数据合成1分钟K线,并进一步合成n分钟K线。ArrayManager是指标计算辅助类,负责维护一定量的历史数据,以供计算sma、ema、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是一个时间序列容器,用于按时间序列缓存bar数据,提供技术指标的传奇 源码 分析计算。ArrayManager提供的函数分为四类:init函数、update_bar、@property函数和技术指标函数。
文华6软件:轻松玩转期货,高低点连线指标的5大策略源码分享
在期货、恒指等市场中,高低点一直是投资者关注焦点。如何准确捕捉并应用关键点位?文华6赢顺软件提供强大功能,揭示高低点编写方法。以下五种策略源码助你轻松掌握。
第一种策略原理:以第一根K线最高价A为起点,后续K线最高价小于(A+)且大于(A-)时,取当前K线最高价为新点值。代码:HH:ZIGZAG(HIGH,,0);
第二种策略原理:通过最高价和最低价之字转向,确定高低点连线。代码:ZH:=ZIGZAG(H,,0); ZL:=ZIGZAG(L,,0); CONH:=ZH>REF(ZH,1)&&ZH>REFX(ZH,1); CONL:=ZL...
什么是策略源码
策略源码是指某种策略或方法的源代码。 以下是关于策略源码的详细解释: 1. 策略源码的概念 策略源码指的是描述特定策略或方法的可阅读、可编辑的原始代码。在各种编程、决策系统或算法中,策略通常代表着一种方法或路径,它描述了如何实现特定的功能或达到预定的目标。源代码则是这些策略和方法的直接表现形式,它包含了执行特定任务所需的所有指令和逻辑。策略源码的详细性和质量直接影响其在实际应用中的效果和性能。 2. 策略源码的重要性 策略源码的重要性在于其可理解性和可编辑性。开发者可以通过阅读和理解策略源码来学习和掌握特定的技术或方法,甚至可以对其进行修改和优化以适应特定的需求。此外,策略源码也是开发者之间交流、合作和分享知识的重要工具。通过分享策略源码,开发者可以共同提高技术水平,推动技术的进步和发展。 3. 策略源码的应用场景 策略源码的应用场景非常广泛。在编程领域,各种软件、应用和游戏等都需要使用到策略源码。在决策支持系统或人工智能领域,策略源码是实现智能决策和优化的关键。此外,在金融、医疗、教育等领域,策略源码也有着广泛的应用。通过对策略源码的研究和应用,我们可以提高系统的效率、性能和智能化水平,为社会的发展做出贡献。 总的来说,策略源码是描述和实现特定策略或方法的原始代码,具有可理解性和可编辑性。通过研究和应用策略源码,我们可以提高系统的效率、性能和智能化水平,推动技术的进步和发展。kungfu源码阅读(五)wingchun模块
本文将探讨策略引擎的执行逻辑,首先,我们聚焦于位于core/cpp/wingchun/include/kungfu/wingchun/strategy/strategy.h的虚基类Strategy。注释部分简明扼要地描述了每个函数的功能。
在Strategy的子类中,需要实现策略的逻辑。kungfu提供了一种C++版本的实现方式,在examples/strategy/cpp/src/demo_strategy.cpp文件中,尽管示例策略并未完全完善,但其设计允许C++实现对性能要求高的策略。kungfu随后封装这些策略为Python接口,以方便通过Python进行统一管理。
同样,kungfu也为Python直接提供了Strategy接口,让不熟悉C++的量化交易员能够轻松编程,这部分接口在core/cpp/wingchun/pybind/pybind_wingchun.cpp中实现,原理与之前介绍的locator中相似。
在Python环境中,Strategy的实现位于core/python/kungfu/wingchun/strategy.py。在这里,通过ctx变量存储不同类型的全局变量,__init_strategy方法通过importlib将具体策略代码文件动态导入,变为impl模块,实现了策略代码的隔离与调用。策略的回调函数通过调用impl模块中的相应功能函数得以实现,大大提高了策略的拓展性和简洁性。
为了运行多个策略,kungfu引入了策略管理器——Runner。该管理器负责添加Python或C++策略到对象中,集中负责数据的分发,确保多个策略共享同一数据源。例如,当接收股票快照时,会将快照数据推送至多个策略,每个策略执行其相应的on_quote函数。这一设计通过core/cpp/wingchun/src/strategy/runner.cpp中的C++实现完成。
Runner.run中的执行逻辑依赖于rxcpp库,采用惰性执行策略。在on_start函数中预先处理了可观察对象events_,确保每当接收快照或订单回报时,都能触发相应策略的回调函数。
至此,本文全面介绍了功夫的核心部分,包括策略引擎、策略实现、Python接口、策略管理、数据分发机制以及多策略运行。理解了这些内容,就能建立起对功夫框架的全面认识,掌握其核心功能。
Zadig 基于 OPA 实现 RBAC 和 ABAC 权限管理技术方案详解
Zadig 采用开源策略引擎 OPA 实现了企业级的RBAC和ABAC权限管理,成为云原生策略管理的主流选择。OPA,作为通用策略引擎,通过高级语言rego实现策略决策,适用于Microservices、Kubernetes等环境。RBAC以角色为基础,简化权限配置,适用于SAAS等场景;ABAC则通过动态属性匹配提供更灵活的细粒度权限控制,适合处理复杂需求。
在Zadig中,权限管理架构基于Gloo网关,OPA负责认证和鉴权,异步从权限管理服务和后端获取数据。数据库模型包含用户角色、角色绑定、策略定义、策略绑定和标签关联等表,以实现精细化的权限控制。决策数据是OPA执行决策的关键,包括角色、绑定、资源和特殊url等。
具体实现中,鉴权流程涉及rego规则,如RBAC和ABAC的规则匹配和资源过滤。Zadig的源码中提供了详细示例,展示了这一技术在实际项目中的应用。未来,Zadig将扩展更多功能,如项目级别的权限控制和角色/组管理。
对于更深入的交流和讨论,Zadig开源社区提供了交流平台,欢迎加入探讨权限管理的最新动态和实践。
常见的十大量化投资策略(附源码)
量化投资策略,通过量化方法在金融市场上分析、判断和交易的策略和算法的总称,主要有以下十种:
、海龟交易策略。这是一种全面的趋势跟随型自动化交易策略,详细设计了入场条件、仓位控制、资金管理与止损止盈,可作为复杂交易策略设计与开发的模板。
、阿尔法策略。基于传统基本面分析,通过在期指市场做空,在股票市场构建拟合指数的组合,赚取价差,被动套利。
、多因子选股策略。通过找到与收益率相关的指标,构建股票组合,期望其在一段时间内跑赢或跑输指数,实现正向或反向阿尔法收益。
、双均线策略。通过建立移动平均线,依据均线交叉点进行交易,抓住股票的强势与弱势时刻。
、行业轮动策略。利用市场趋势获利,通过切换行业品种实现收益最大化。
、跨品种套利策略。利用不同相关联指数期货产品之间的价差进行交易,有助于扭曲市场价格回复正常水平,增强市场流动性。
、指数增强策略。旨在提供高于标的指数回报水平的投资业绩,力求保持标的指数的各种特征。
、网格交易策略。利用投资标的在震荡行情中的价格波动进行加仓减仓,捕捉价格震荡趋势以实现盈利。
、跨期套利策略。在同一交易所进行不同交割月份的套利活动,最常见于股指期货。
、高频交易策略。通过利用市场变化中极短的时间差获利,交易速度极快,服务器群组可能被安置在交易所附近以缩短交易时间。
非线性优化(三):g2o源代码
新年伊始,让我们探讨一下g2o(通用图优化)在SLAM(Simultaneous Localization and Mapping)中的后端优化库应用。在《十四讲》中,我们对g2o有了初步的了解,并总结了其在SLAM中的使用情况。与ceres相比,g2o的文档较为简略,主要依赖于两篇论文进行参考。本文将深入探讨g2o的源代码,特别是核心文件夹中的部分,以揭示这个在SLAM领域广为人知的后端优化库的内在机理。
首先,让我们通过一张类关系图来直观理解g2o的架构。整个g2o系统分为三层:HyperGraph、OptimizableGraph、以及SparseOptimizer。HyperGraph作为最高层,提供了一个高度抽象的框架,其内部通过内类的方式实现了Vertex和Edge的结构。Vertex和Edge相互关联,Vertex存储与节点相关联的边的集合,而Edge则记录了与之链接的节点信息。HyperGraph提供了基本的节点和边的操作,如获取、设置等,同时也包含了更复杂的功能,如节点和边的合并、删除等。
OptimizableGraph继承自HyperGraph,进一步丰富了Vertex和Edge的实现,为图优化提供了更具体的接口。OptimizableGraph引入了海塞矩阵和b向量的概念,以及与之相关的操作,如获取海塞矩阵元素、设置参数位置等。此外,它还支持通过栈操作(pop、push)来管理节点信息。
在OptimizableGraph之上,SparseOptimizer作为优化操作的对象,实现了优化的接口,并提供了初始化、辅助函数以及优化的核心函数。SparseOptimizer通过内部类实现了Vertex和Edge的实例化,为具体的优化算法提供了操作图的接口。
在实现细节方面,BaseVertex和BaseEdge类继承了OptimizableGraph中的相应类,实现了节点和边的基本功能。BaseVertex类负责记录节点的海塞矩阵、b向量和估计值,并提供了数值求导的备份和恢复功能。BaseEdge类则负责处理测量信息和信息矩阵的计算,包括计算误差、构造二次形式等。此外,不同类型的边(BaseUnaryEdge、BaseBinaryEdge、BaseMultiEdge)通过继承BaseEdge类,实现了不同链接节点数量的边的特殊操作。
鲁棒核函数的实现是g2o优化框架中一个关键部分,它在处理非线性优化问题时提供了鲁棒性,确保了优化过程的稳定性。g2o通过RobustKernel虚基类提供了设置和获取核函数参数的接口,并在具体实现中使用了简化版本的计算公式,以保证信息矩阵的正定性。
最后,OptimizationAlgorithm类定义了优化器的一系列接口,如初始化、计算边际值和求解等。g2o的优化算法包括GN、LM和dog-leg,它们分别实现了不同的求解策略,而具体的矩阵求解任务则通过Solver类及其派生类(如BlockSolver)完成。BlockSolver类提供了一个通用框架,允许用户自定义线性求解器,如直接求解、迭代求解等。
综上所述,g2o通过层次化的类结构,提供了从抽象到具体、从基础到进阶的图优化解决方案,其设计旨在高效、鲁棒地解决SLAM中的后端优化问题。深入理解g2o的源代码,对于开发者和研究者来说,不仅能够提高优化算法的实现效率,还能深刻理解SLAM系统中的优化机制。