Lean — 优秀好用的开源量化交易平台

一个免费开源的专业级量化交易软件 Northstar国内最优秀的基于JAVA的AI开源量化交易平台,秒替文华、MC、金字塔。具备历史回放、策略研发、模拟交易、实盘交易等功能。兼顾全自动与半自动的使用场景。Northstar是一款基于GPL-3.0协议分发的开源软件。 阅读详情
AI摘要

本文介绍了QuantConnect的开源量化交易平台Lean,详细阐述了如何安装、配置和运行Lean,包括回测内置的C#和Python策略。Lean允许用户在Linux、Mac或Windows上使用Python或C#编写策略,并提供了丰富的数据源和券商集成。通过修改配置文件,可以回测内置的策略,并观察详细的回测统计指标。文章还展示了如何阅读和理解策略代码,例如MACD趋势策略,强调了LEAN在策略编写上的灵活性和功能强大。

Lean 是 QuantConnect 开源的一款非常强大的开源量化交易平台,可以回测或运行Python或者C#写的策略,并在代码仓库中内置了上百个C#和Python的策略算法。

这个开源的算法交易引擎,专为让用户方便轻松地进行策略研究、回测和实时交易而构建。它集成了常见的数据提供商和券商,因此还可以快速部署算法交易策略。

bb92a23e4530df9e4ef4a1605dcdfa55.png

LEAN Engine 的核心是用 C# 编写的;但它可以在 Linux、Mac 和 Windows 操作系统上无缝运行。它支持用 Python 3.6+ 或 C# 编写的算法。

引擎分为许多模块化部分,可以在不接触其他文件的情况下对某个模块进行扩展。

最重要的几个模块是:

  • 结果处理(IResultHandler)处理来自算法交易引擎的所有消息。决定应该发送什么,以及消息应该去哪里。结果处理系统可以将消息发送到本地 GUI 或 Web 界面。

  • 数据源(IDataFeed)连接并下载算法交易引擎所需的数据。从磁盘文件中读取文件进行回测;实时交易则连接到一个流并生成数据对象。

  • 事务处理(ITransactionHandler)处理新的订单请求;要么使用算法提供的模拟模型,要么使用实际券商。

  • 实时事件管理(IRealtimeHandler)生成实时事件 - 例如一天结束的事件。触发对实时事件处理程序的回调。

  • 算法状态设置(ISetupHandler)配置算法资金、投资组合和请求的数据。初始化所需的所有状态参数。

这些都可以从 Launcher 项目中的 config.json 文件进行配置。

1.Leon 安装教程

由于Leon是基于C#开发的,因此我推荐使用 Visual Studio 进行开发。

1、克隆项目。从 https://github.com/QuantConnect/Lean 克隆项目到本地。

2、使用 Visual Studio 打开项目中的 QuantConnect.Lean.sln

bb9b8672fc86bcc43b591319a2d0dd4b.png

d33a9bea368bb4ca334f2d165d6d665e.png

3、点击 生成 - 生成解决方案

5d225d1f18f0ad20473663a3ab57a88a.png

4、点击 F5 则可以运行程序。

如果你在生成解决方案的过程中遇到了类似于如下的错误:

bc9f413ce3e97765b86e50cd9683c35a.png

请在工具 - NuGet包管理器 - 程序包管理器设置 中 添加如下的源, 名字任取,链接对了就行: https://api.nuget.org/v3/index.json

94d3b993b9d18f78a75e88e9f1c1301a.png

2.回测 Lean 内置的C#策略

Lean 中比较有意思的一点是,其所有C#策略算法都位于 QuantConnect.Algorithm.CSharp 中,所有的Python策略算法都位于 QuantConnect.Algorithm.Python 中:

e6888fcae99a13cb6b3da39d07c1bd74.png

如果你想回测C#的策略,你只需要修改 QuantConnect.Lean.Launcher 中的 config.json,将 QuantConnect.Algorithm.CSharp 中对应策略名称,修改到 algorithm-type-name 字段对应的值中,如图所示:

abc5909507b737257b7f02154e611772.png

然后按 F5 运行程序,回测开始,此时会弹出一个cmd窗口,里面有本次回测的统计数据:

d4dfb3c280adf84f14c8dcc603587e14.png

3. 回测 Lean 内置的 Python策略

如果你想要回测内置的Python策略,我们需要先指定Lean使用的Python环境位置:

1.打开系统变量(我的电脑-右键属性-高级系统设置->环境变量->系统变量)

2.点击新建变量,name为 PYTHONNET_PYDLL;value则为你的Python环境的dll文件所在文件夹,如我的为 G:\Anaconda3\python36.dll

3.在此Python环境中安装Lean的依赖:

pip install pandas
pip install wrapt==1.11.2


然后在项目的 config.json 中需要多改几个配置:

a9994050765e7f1d1dbd33a405835ab1.png

然后按F5进行回测,效果如下:

29e6bf66dda5b3c2df2f4a93fb7440fd.png

这些统计指标令人眼花缭乱,对于股票的回测我们只要重点关注这些即可:

  • Total Trades: 总交易量

  • Average Win: 平均盈利率

  • Average Loss: 平均亏损率

  • Compounding Annual Return: 复合年回报率

  • Drawdown: 最大回撤率

  • Expectancy: 期望值

  • Net Profit: 净利润

  • Sharpe Ratio: 夏普比率

  • Probabilistic Sharpe Ratio: 概率性夏普比率

  • Loss Rate: 失败率

  • Win Rate: 胜率

  • Profit-Loss Ratio: 盈亏比

  • Alpha: Alpha值

  • Beta: Beta值

  • Total Fees: 总手续费

其他的,按需关注即可。

4. Lean 策略是怎么写的?

开始之前,让我们先学习下 Lean 内置策略的写法:

上滑查看更多代码

from AlgorithmImports import *


class MACDTrendAlgorithm(QCAlgorithm):

    def Initialize(self):
        '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

        self.SetStartDate(2004, 1, 1) #Set Start Date
        self.SetEndDate(2015, 1, 1) #Set End Date
        self.SetCash(100000) #Set Strategy Cash
        # Find more symbols here: http://quantconnect.com/data
        self.AddEquity("SPY", Resolution.Daily)

        # define our daily macd(12,26) with a 9 day signal
        self.__macd = self.MACD("SPY", 12, 26, 9, MovingAverageType.Exponential, Resolution.Daily)
        self.__previous = datetime.min
        self.PlotIndicator("MACD", True, self.__macd, self.__macd.Signal)
        self.PlotIndicator("SPY", self.__macd.Fast, self.__macd.Slow)


    def OnData(self, data):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.'''
        # wait for our macd to fully initialize
        if not self.__macd.IsReady: return

        # only once per day
        if self.__previous.date() == self.Time.date(): return

        # define a small tolerance on our checks to avoid bouncing
        tolerance = 0.0025

        holdings = self.Portfolio["SPY"].Quantity

        signalDeltaPercent = (self.__macd.Current.Value - self.__macd.Signal.Current.Value)/self.__macd.Fast.Current.Value

        # if our macd is greater than our signal, then let's go long
        if holdings <= 0 and signalDeltaPercent > tolerance:  # 0.01%
            # longterm says buy as well
            self.SetHoldings("SPY", 1.0)

        # of our macd is less than our signal, then let's go short
        elif holdings >= 0 and signalDeltaPercent < -tolerance:
            self.Liquidate("SPY")


        self.__previous = self.Time

可以看到,其实它和Backtrader的写法相差无几,Initialize 函数设置基本的回测参数,如:

  • self.SetStartDate: 回测起始时间

  • self.SetEndDate: 回测结束时间

  • self.setCash: 回测资金

  • self.AddEquity: 回测对象(Resolution.Daily 是指按日回测)

  • self.PlotIndicator: 绘图时添加指标

而 onData 函数则会在每个数据点上做操作,如果是日线,则每天的数据都会流入到这个函数并运行一遍。因此 onData 就是算法分析的主逻辑。

在这里,你可以检查需要的指标是否已经准备完毕,因为可能存在一些滞后性指标在回测刚开始的时候并没有对应的值;此外,在日线的情况下,你还可以检测上一个数据点是不是和这个点在同一天上,如果是的话则不作任何操作返回:

if not self.__macd.IsReady: return
if self.__previous.date() == self.Time.date(): return

然后就是核心的买入卖出逻辑:

tolerance = 0.0025

holdings = self.Portfolio["SPY"].Quantity

signalDeltaPercent = (self.__macd.Current.Value - self.__macd.Signal.Current.Value)/self.__macd.Fast.Current.Value

# if our macd is greater than our signal, then let's go long
if holdings <= 0 and signalDeltaPercent > tolerance: # 0.01%
    # longterm says buy as well
    self.SetHoldings("SPY", 1.0)

# of our macd is less than our signal, then let's go short
elif holdings >= 0 and signalDeltaPercent < -tolerance:
    self.Liquidate("SPY")
    
self.__previous = self.Time

如果我持仓的股数<=0, 且信号值大于我设定的阈值,则将我资产的1%买入这只股票。这里和backtrader最大的不同,买入是以资产的百分比为单位的动态买入。当然,你也可以使用限定数量的买入方式:

self.LimitOrder("IBM", 100, self.Securities["IBM"].Price)

如果持仓股市>=0, 且触发卖出信号,则进行清仓操作:

elif holdings >= 0 and signalDeltaPercent < -tolerance:
    self.Liquidate("SPY")

如果你不希望全部清仓,也可以使用 SetHoldings 来调整仓位。

可以看到,Lean相对于Backtrader有更灵活的仓位管理方式,甚至能够进行自动仓位调整、构建投资组合、实时交易等等。而且针对一些比较复杂的策略,你还可以用C#而不是Python来编写以提高运行速度。

综上所述,Lean是一个非常值得深入学习的量化交易平台,有兴趣的同学可以在他们官网学习到更多的内容:

https://www.quantconnect.com/docs

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注我们哦~

觉得还不错就给我一个小小的鼓励吧!
市场上几款量化交易软件梳理对比 随着deepseek的火爆,证劵市场上也掀起了一阵AI热潮。deepseek不仅仅是一款AI软件,背后的老板尤为让人关注,那就是大名鼎鼎的幻方量化的老板。其实也给我们指明了一条道路,股票量化交易,是可行的,是大有可为的。市场上的量化软件按照功能、对交易人员的要求可以简单分为两类。可视化量化软件和非可视化量化软件。其中可视化量化平台对交易者要求较低,创建策略、回归验证等都是在可视化界面上操作,大大降低了技术门槛。但是灵活性也收到了一定的限制。 阅读详情

相关推荐

基于QuantConnect开源引擎Lean本地实现Fama-French五因子Python策略

5.目录\ToolBox\CoarseUniverseGenerator\CoarseUniverseGeneratorProgram.cs下语句修改成var hasFundamentalData = true;目录\Common\Data\UniverseSelection\CoarseFundamentalDataProvider.cs下语句修改成return coarse.HasFundamentalData;

gregmankiw的博客 2664

量化交易平台——QuantConnect Lean CLI

量化交易平台——QuantConnect Lean CLI lean-cliCLI for running the LEAN engine locally and in the cloud项目地址:https://gitcode.com/gh_mirrors/le/lean-cli QuantConnect的Lean CLI是一个跨平台的命令行工具,专为简化本地和云端LEAN引擎开发而设计。通...

gitblog_00046的博客 5067

从solidworks导出URDF模型

一、下载sw_urdf_exporter插件 ROS目前提供了SolidWorks转URDF的插件,叫做sw_urdf_exporter,从http://wiki.ros.org/sw_urdf_exporter下载sw2urdfSetup.exe文件,下载后点击安装,安装完成后就能在solidworks中导出URDF模型了。 二、创建solidworks模型 下面以较为简单的四轮小车为例进行说...

weixin_45168199的博客 4万+

必览!全球算法交易平台 TOP 5 全面揭秘

本文介绍了全球最有名的五大算法交易平台,它们分别是QuantConnect、TradingView、MetaTrader 5、QuantRocket和AlgoTrader平台,我根据官方介绍并结合自己的使用感受,分析它们各自的特点、优势和不便之处,希望能帮助到我的读者选择最适合自己使用的平台。

weixin_70955880的博客 4451

先进封装技术 Part03---重布线层(RDL)的科普

RDL是一种在芯片封装过程中用于重新分布电气连接的技术。它通过在芯片表面或中介层上形成额外的布线层,重新分配芯片的I/O(输入/输出)位置,以适应不同的封装需求和提高电气连接的灵活性。

阿拉伯梳子的专栏 4697

elevation mapping算法3之使用D435i相机离线或在线订阅点云和tf关系生成高程图

本文主要学习使用D435i相机发出的点云作为高程图的点云输入,如何离线输入点云生成高程图,进一步学习如何在线订阅点云生成高程图。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 3488

你应该知道的21大Python量化交易工具

技术可用性的快速增长使个人交易者也能够进行系统和算法交易。下面为大家分享2022年 Python 量化交易使用最广泛的21大交易平台和框架、经纪自营商、数据提供商和其他有用的交易库等,这些交易库适用于搭建个人完整的量化分析和交易系统。一、云交易平台 对于大多数人来说,开始进行算法交易的最佳方式是使用在线交易平台。这些平台提供了自动化交易所需要的基础...

Python金融量化 1万+

PINN驱动的3D不可压缩流场重建——从稀疏2D2C观测到完整物理场反演——含源码实现

多尺度融合策略在此发挥作用:高分辨率的2D2C数据用于约束平面内的精细结构,而低分辨率的3D3C数据提供第三维度的粗尺度信息。迁移学习架构在此发挥关键作用。这种策略在湍流封闭模型构建中尤为有效,其中RANS提供的平均流场与DNS的雷诺应力数据融合,显著提升了分离流的预测精度。在稀疏数据场景下,注意力权重根据观测数据的分布动态调整,强化数据缺失区域的物理约束,同时避免过拟合于观测点。这种机制与自适应采样的结合,实现了计算效率与重建精度的平衡,在仅保留约百分之十关键节点的情况下,仍能保持高物理一致性。

u012133341的博客 135

从零到专业:Lean量化交易引擎终极入门指南

你是否渴望进入量化交易的世界,却被复杂的系统搭建和回测流程吓退?😱 是否曾经尝试开发交易策略,却在回测与实盘之间遭遇巨大落差?Lean量化交易引擎正是为你解决这些痛点的完美工具!这是一个开源的专业算法交易研究平台,让你能够专注于策略逻辑而非技术实现,真正实现从回测到实盘的无缝过渡。 Lean算法交易引擎由QuantConnect团队开发,支持C#和Python双语言开发,提供了完整的量化交易解

gitblog_01035的博客 860

Buck电源设计常见的一些问题(四)MOS管振荡抑制方法(二)

另一方面,开关振铃为远超开关频率的高频振铃,并伴随很高的 dV/dt,会带来传导和辐射的 EMI 问题,可能会使得终端产品不能通过 EMI 标准测试,更严重时甚至会干扰开关电源自身的信号电路或临近的其他功能电路的正常工作。选用二极管反向特性好的器件;该电路可等效成图 3 中 LC 谐振电路,新的 LR和 CR为 Lp1、Lp5,Lp3, Lp4, CD等所有参与振铃的寄生感容的复合值。通常 Snubber 的 Csnub取值在数 nF 以上,在振铃频率 fR(加了 snubber 后)下的阻抗很小。

小幽余生不加糖 2892

自动化Google Chrome的强大工具:chromedriver下载、安装、简单使用

本文介绍了 ChromeDriver 的基本概念和安装配置方法,重点讲解了如何通过 Selenium 实现 Chrome 浏览器的自动化测试。内容涵盖了 ChromeDriver 下载、版本匹配、依赖引入和简单的自动化测试脚本示例,帮助读者快速上手并避免常见问题。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 88万+

5步掌握Lean量化交易引擎:从零到实战的完整指南

你是否曾想过构建自己的量化交易系统,却苦于技术门槛太高?或者已经尝试过各种交易策略,但缺乏一个稳定可靠的执行平台?Lean Algorithmic Trading Engine正是为解决这些问题而生的开源量化交易平台。作为QuantConnect开发的专业级交易引擎,Lean将复杂的技术细节封装成简洁的API,让开发者能够专注于策略逻辑本身。 无论你是刚刚踏入量化交易领域的新手,还是寻求更强大工

gitblog_00544的博客 1069

后仿真中的必懂VCS仿真选项之initreg和deposit

后仿真中,我们常常对于没有复位寄存器和存储器单元,使用仿真选项之initreg和deposit,两种处理方式。今天做总结。请注意:请勿将两者进行同时使用。对于到底选取哪种方式,要结合实际的情况决断。但是,两者同时使用,会有冲突,得不到预期结果。

那么菜的博客 4329

一个基于 C# 编写的事件驱动、具备专业水准的算法交易平台(量化交易引擎)

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。GitHub开源地址:https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md。一个易于安装和使用的 LEAN 发行版;项目在线文档地址:https://www.lean.io/docs/v2。

weixin_42153801的博客 262

Raspberry Pi 4 ARM Trusted Firmware 技术解析

摘要: 本文详细介绍了在树莓派4(Raspberry Pi 4)上移植ARM可信固件(TF-A)的实现方案与安全考量。该移植专注于BL31功能,作为非安全世界(如Linux内核)的启动桥梁,支持加载EL2级别程序。文章分析了启动流程、内存映射设计,并对比了RPi3与RPi4的关键差异,指出当前版本缺乏硬件级安全内存保护的局限性。此外,提供了构建指南、配置说明及设备树自动修补的实现细节,强调通过config.txt简单配置即可启动64位内核。该方案充分利用树莓派原有GPU固件流程,兼顾兼容性与简易性。

Linux内核架构师 932

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

如何快速构建专业量化交易系统:Lean算法交易引擎完全指南

在当今金融市场中,量化交易已成为专业投资者和机构的核心竞争力。然而,构建一个稳定可靠的量化交易系统往往需要数月甚至数年的开发时间,涉及复杂的回测框架、实时数据处理、风险管理和执行系统。这正是Lean算法交易引擎的用武之地——一个开源的专业级量化交易平台,让你能够专注于策略逻辑而非技术实现。 Lean是由QuantConnect开发的开源算法交易研究平台,支持C#和Python双语言开发,提供从策

gitblog_01068的博客 326

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

5分钟快速上手QuantConnect Lean:打造专业量化交易系统的终极指南

你是否想进入量化交易领域,但被复杂的编程和系统搭建吓退?或者已经在使用其他交易平台,却受限于功能不够强大、灵活性不足?**QuantConnect Lean算法交易引擎**正是为你量身打造的开源解决方案!这个强大的**量化交易系统**能够帮助你从零开始构建专业的**算法交易系统**,支持股票、期货、期权、外汇和加密货币等多种资产类型,提供从策略回测到实盘交易的一站式服务。 ## 🚀 为什么选择

gitblog_00144的博客 1102

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

从零到专业:3步掌握Lean量化交易引擎,打造你的智能交易系统

你是否曾梦想拥有一个完全开源的量化交易平台?你是否渴望将复杂的交易策略转化为可执行的代码?Lean算法交易引擎正是为你量身打造的专业工具!这个由QuantConnect开发的开源平台,让每个人都能构建自己的智能交易系统,从简单的回测到复杂的实盘交易,一切尽在掌握。 ## 🚀 为什么选择Lean算法交易引擎? 在传统量化交易中,开发者往往需要从零开始搭建整个交易系统,耗费大量时间在基础设施上而

gitblog_00836的博客 456
上一篇: 13个你一定要知道的PyTorch特性
下一篇: 开发神器 VsCode 配置指南!(含 Python、C++、Java环境配置)
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值