程序员的量化交易(34)--QuantConnect_Lean如何定义Indicator指标2

基于QuantConnect开源引擎Lean本地实现Fama-French五因子Python策略 5.目录\ToolBox\CoarseUniverseGenerator\CoarseUniverseGeneratorProgram.cs下语句修改成var hasFundamentalData = true;目录\Common\Data\UniverseSelection\CoarseFundamentalDataProvider.cs下语句修改成return coarse.HasFundamentalData; 阅读详情

转载需注明出处:http://blog.youkuaiyun.com/minimicall,http://cloudtrade.top/


指标(Indicator)由三大关键组件组成:
1. 实现你指标的类
2. 在ACAlgorithm基类中的Helper方法,用于简化对你指标实现的调用。
3. 测试方法用于测试指标的表现。
为了实现一个指标,上述所有组件需要实现。下面的教程会带你浏览这些组件。我们将会使用  AroonOscillator作为案例。我们不会去介绍指标的基本概念。

1. 实现你的指标(Implementing Your Indicator)

你的指标类应该在工程根下的QuantConnect.Indicators项目下实现。它必须是一个单独的类,不能缩写,名如“AroonOscillator.cs”。
第一步
指标必须是下面指标基类的一个派生:
Indicator – 如果你的指标只需要单个值(例如ExponontialMovingAverage),你就可以用Indicator作为基类。
TradeBarIndicator – 如果你的指标需要用到TradeBars,那么你的指标必须是由TradeBarIndicator类扩展而来的。(例如AroonOscillator)。
WindowIndicator<T> - 如果你的指标需要一个rolling window of data(数据的滚动窗口),那么你就要继承这个类。(例如Minimum)。


所有的指标都必须实现下面四个组件,为了在Lean中正常运作。
Constructor – 实现你的构造函数,用于接收和保存必要的指标配置信息。例如Aroon指标需要Aroon Up 和 Aroon Down值。
IsReady – 它是一个Boolean值,用于指示算法是否有了充足的历史价格数据用于算出指标的值。Aroon只有当有了n个周期的样本数据后才能开始计算。
ComputeNextValue()- 用提供的数据,计算和返回下一个指标的值。这里是你实现指标具体算法的地方。
保持可扩展性
Aroon作为案例是非常有代表性的,它有多个属性,Aroon-Up和Aroon-Down。这两个值在计算Aroon的时候都需要用到,但只有delta(up – down)会返回。这个例子中的dela叫做Aroon Percentage(比例)。许多指标会有一个主值(Primary value),多个属性,用于交易决策。


为了处理这些情况-每个属性都应该作为子指标(sub-indicator)。你可以查看下AroonOscillator.cs的源码。Aroon创建了AroonUp,AroonDown指标作为属性。这使得你可以单独的使用这些子指标。
例如下面的代码:
var smaAroonUp = sma.Of( aroon.AroonUp )
就直接用属性(子指标)。


现在我们贴出AroonOscillator的代码:

using QuantConnect.Data.Market;


namespace QuantConnect.Indicators
{
    /// <summary>
    /// The Aroon Oscillator is the difference between AroonUp and AroonDown. The value of this
    /// indicator fluctuats between -100 and +100. An upward trend bias is present when the oscillator
    /// is positive, and a negative trend bias is present when the oscillator is negative. AroonUp/Down
    /// values over 75 identify strong trends in their respective direction.
    /// </summary>
    public class AroonOscillator : TradeBarIndicator
    {
        /// <summary>
        /// Gets the AroonUp indicator
        /// </summary>
        public IndicatorBase<IndicatorDataPoint> AroonUp { get; private set; }


        /// <summary>
        /// Gets the AroonDown indicator
        /// </summary>
        public IndicatorBase<IndicatorDataPoint> AroonDown { get; private set; }


        /// <summary>
        /// Gets a flag indicating when this indicator is ready and fully initialized
        /// </summary>
        public override bool IsReady
        {
            get { return AroonUp.IsReady && AroonDown.IsReady; }
        }


        /// <summary>
        /// Creates a new AroonOscillator from the specified up/down periods.
        /// </summary>
        /// <param name="upPeriod">The lookback period to determine the highest high for the AroonDown</param>
        /// <param name="downPeriod">The lookback period to determine the lowest low for the AroonUp</param>
        public AroonOscillator(int upPeriod, int downPeriod)
            : this(string.Format("AROON({0},{1})", upPeriod, downPeriod), upPeriod, downPeriod)
        {
        }


        /// <summary>
        /// Creates a new AroonOscillator from the specified up/down periods.
        /// </summary>
        /// <param name="name">The name of this indicator</param>
        /// <param name="upPeriod">The lookback period to determine the highest high for the AroonDown</param>
        /// <param name="downPeriod">The lookback period to determine the lowest low for the AroonUp</param>
        public AroonOscillator(string name, int upPeriod, int downPeriod)
            : base(name)
        {
            var max = new Maximum(name + "_Max", upPeriod + 1);
            AroonUp = new FunctionalIndicator<IndicatorDataPoint>(name + "_AroonUp",
                input => ComputeAroonUp(upPeriod, max, input),
                aroonUp => max.IsReady,
                () => max.Reset()
                );


            var min = new Minimum(name + "_Min", downPeriod + 1);
            AroonDown = new FunctionalIndicator<IndicatorDataPoint>(name + "_AroonDown",
                input => ComputeAroonDown(downPeriod, min, input),
                aroonDown => min.IsReady,
                () => min.Reset()
                );
        }


        /// <summary>
        /// Computes the next value of this indicator from the given state
        /// </summary>
        /// <param name="input">The input given to the indicator</param>
        /// <returns>A new value for this indicator</returns>
        protected override decimal ComputeNextValue(TradeBar input)
        {
            AroonUp.Update(input.Time, input.High);
            AroonDown.Update(input.Time, input.Low);


            return AroonUp - AroonDown;
        }


        /// <summary>
        /// AroonUp = 100 * (period - {periods since max})/period
        /// </summary>
        /// <param name="upPeriod">The AroonUp period</param>
        /// <param name="max">A Maximum indicator used to compute periods since max</param>
        /// <param name="input">The next input data</param>
        /// <returns>The AroonUp value</returns>
        private static decimal ComputeAroonUp(int upPeriod, Maximum max, IndicatorDataPoint input)
        {
            max.Update(input);
            return 100m * (upPeriod - max.PeriodsSinceMaximum) / upPeriod;
        }


        /// <summary>
        /// AroonDown = 100 * (period - {periods since min})/period
        /// </summary>
        /// <param name="downPeriod">The AroonDown period</param>
        /// <param name="min">A Minimum indicator used to compute periods since min</param>
        /// <param name="input">The next input data</param>
        /// <returns>The AroonDown value</returns>
        private static decimal ComputeAroonDown(int downPeriod, Minimum min, IndicatorDataPoint input)
        {
            min.Update(input);
            return 100m * (downPeriod - min.PeriodsSinceMinimum) / downPeriod;
        }


        /// <summary>
        /// Resets this indicator and both sub-indicators (AroonUp and AroonDown)
        /// </summary>
        public override void Reset()
        {
            AroonUp.Reset();
            AroonDown.Reset();
            base.Reset();
        }
    }
}



2 在QCAlgorithm中安装Helper方法

在你实现了indicator(指标)之后,i需要将它安装到基类中。指标可以手工的创建和更新,不过我们加你使用helper方法,这样后面使用起来会简单很多。
在Aroon的案例中,实现是在AroonOscillator类,但它的helper方法是在QCAlgorithm中。这个helper方法—AROON—总是是大写的,总是返回一个指标实现类的实例对象。
public AroonOscillator AROON(string symbol, int upPeriod, int downPeriod, Resolution? resolution = null)  {
      var name = CreateIndicatorName(symbol, string.Format("AROON({0},{1})", upPeriod, downPeriod), resolution);
      var aroon = new AroonOscillator(name, upPeriod, downPeriod);
      RegisterIndicator(symbol, aroon, resolution);
      return aroon;
}



在helper方法中,你需要创建你指标的一个唯一的名字,使用你指标实现类的构造函数去构造一个指标实例,将其注册(注册后意味着指标的值会随着symbol(指定证券)的价格数据变动而自动的变动)。

3 创建测试方法

3.1 准备测试数据

 将准备好的测试数据放到QuantConnect.Tests\TestData目录下。

3.2 写测试类

在QuantConnect.Tests\Indicators下面。可以拷贝已经有的进行改写。

using System;
using NUnit.Framework;
using QuantConnect.Data.Market;
using QuantConnect.Indicators;

namespace QuantConnect.Tests.Indicators
{
    [TestFixture]
    public class AroonOscillatorTests
    {
        [Test]
        public void ComparesWithExternalData()
        {
            var aroon = new AroonOscillator(14, 14);
            TestHelper.TestIndicator(aroon, "spy_aroon_oscillator.txt", "Aroon Oscillator 14",
                (i, expected) => Assert.AreEqual(expected, (double)aroon.Current.Value, 1e-3));
        }

        [Test]
        public void ResetsProperly()
        {
            var aroon = new AroonOscillator(3, 3);
            aroon.Update(new TradeBar
            {
                Symbol = "SPY",
                Time = DateTime.Today,
                Open = 3m,
                High = 7m,
                Low = 2m,
                Close = 5m,
                Volume = 10
            });
            aroon.Update(new TradeBar
            {
                Symbol = "SPY",
                Time = DateTime.Today.AddSeconds(1),
                Open = 3m,
                High = 7m,
                Low = 2m,
                Close = 5m,
                Volume = 10
            });
            aroon.Update(new TradeBar
            {
                Symbol = "SPY",
                Time = DateTime.Today.AddSeconds(2),
                Open = 3m,
                High = 7m,
                Low = 2m,
                Close = 5m,
                Volume = 10
            });
            Assert.IsFalse(aroon.IsReady);
            aroon.Update(new TradeBar
            {
                Symbol = "SPY",
                Time = DateTime.Today.AddSeconds(3),
                Open = 3m,
                High = 7m,
                Low = 2m,
                Close = 5m,
                Volume = 10
            });
            Assert.IsTrue(aroon.IsReady);

            aroon.Reset();
            TestHelper.AssertIndicatorIsInDefaultState(aroon);
            TestHelper.AssertIndicatorIsInDefaultState(aroon.AroonUp);
            TestHelper.AssertIndicatorIsInDefaultState(aroon.AroonDown);
        }
    }
}


Python量化交易机器人实战:QuantConnect平台应用 在现代金融市场的复杂性和动态性之中,交易机器人成为了投资者和金融机构不可或缺的工具。交易机器人,也被称作算法交易机器人或量化交易机器人,通过编程实现自动执行交易策略,以适应市场变化,优化投资回报。这一章节我们将探讨交易机器人领域的基础概念,它们如何运作,以及在金融市场中扮演的角色。交易机器人是基于特定算法和预设条件,在金融市场上自动进行买卖决策的软件系统。它们的功能多样,从简单的市场监控到复杂的风险管理,交易机器人涵盖了金融交易的各个方面。 阅读详情

相关推荐

Tutorials:QuantConnect网站上的Jupyter笔记本教程,适用于Python,Finance和LEAN

QuantConnect LEAN教程 | | | 该存储库是WordPress和Jupyter笔记本教程的集合,这些教程针对LEAN展示了财务概念和LEAN。 教程分为每个类别和教程系列的文件夹。 Jupyter笔记本和关联HTML网页必须使用匹配的文件名。 HTML是使用wordpress生成并显示的。 精益引擎是一个开放源代码的完全托管的C#算法交易引擎,专为桌面和云使用而构建。 它是在Mono中设计的,可在Windows,Linux和Mac平台上运行。 有关LEAN算法交易引擎的更多信息,请参见引擎存储库。 新教程要求和编辑 请将新的教程请求作为问题提交给存储库。 在提交问题之前,请阅读其他内容以确保它不是重复的。 热烈欢迎进行编辑和修复以使内容更加清晰! 邮件列表 该项目的邮件列表可以在找到 贡献者和请求请求 我们非常欢迎您提供稿件,但请您阅读现有代码,以了解其格式,注释和确保

量化交易平台——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的博客 5068

Lean, QuantConnect ( C#,python,F# )的精益算法交易引擎.zip

Lean, QuantConnect ( C#,python,F# )的精益算法交易引擎 精益算法交易引擎 Lean Home | 文档| 下载邮编简介精益引擎是为轻松策略研究。backtesting和实时交易而构建的开源算法交易引擎。 我们与通用数据提供者和brokerages集成,因此你可以快速部署算

探索量化交易的未来:QuantConnect深度解读

探索量化交易的未来:QuantConnect深度解读 DocumentationQuantConnect Wiki Style Documentation Behind QuantConnect项目地址:https://gitcode.com/gh_mirrors/documentation11/Documentation 在金融技术的浩瀚宇宙中,QuantConnect犹如一颗璀璨的新星,以...

gitblog_00046的博客 4661

从零开始学嵌入式之STM32——1.什么是STM32

它是ST公司推出的一系列单片机的统称。ST----指的是ST公司----意法半导体。意法半导体,成立于1987年,是由意大利的SGS微电子公司和法国的Thomson半导体公司合并而成。ARM目前主要是ARM架构处理器及外围组件的电路设计方案,知识产权授权的形式收取费用,其他公司根据ARM的方案设计出CPU产品。,它以应用为核心,软硬件可裁剪,旨在实现对设备的控制、监测或辅助功能,区别于通用计算机(如 PC、服务器)的 “一机多用” 属性。在嵌入式领域,目前主流的是cortex-M3内核推出的芯片。

qshdyy的博客 1854

Bode图、ABCD矩阵与EET结合:三步搞定复杂电路传递函数分析

在模拟电路与电源控制设计中,传递函数和频率响应是衡量系统稳定性的核心指标。Bode图以直观的幅频/相频曲线揭示带宽与相位裕度,ABCD二端口矩阵可将级联网络结构化表达,而EET额外元素定理则针对寄生电容、负载效应等局部修正提供显式公式。三者互补,组合成一套从整体拓扑到局部寄生修正的完整分析方法:先用ABCD搭建主体网络,再用EET快速加入额外元件,最后用Bode图验证传递函数和稳定裕度。该方法适用于滤波器设计、电源环路补偿、运放稳定性分析等线性小信号场景,支持Python/SciPy和SPICE交叉验证,显

weixin_32496547的博客 363

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

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

weixin_70955880的博客 4451

地质建模师必备:用Petrel快速生成浅地层TST/TVT厚度图的5个关键步骤

本文详细解析了地质建模师如何利用Petrel平台,将二维浅地层SEG-Y数据高效转化为真实地层厚度图(TST)和真实垂直厚度图(TVT)。文章系统梳理了从数据规范化导入、坐标系统一、地质界面解释到厚度计算与成图的5个关键实战步骤,并强调了误差控制与工程应用,为海上风电等工程地质评估提供了完整解决方案。

weixin_29204205的博客 518

量化交易系统开发-实时行情自动化交易-8.17.Quant Connect平台

QuantConnect是国际领先的量化交易平台,提供云端量化策略开发、回测与部署服务,支持多资产类别(股票、期货、加密货币等)以及多种编程语言(如C#、Python)。凭借其强大的算法库和与主要券商的集成,QuantConnect成为全球量化交易爱好者和专业投资者的理想平台。

fengbuyu的博客 3795

使用LSTM(长短期记忆)模型处理文本数据的典型流程

对于序列到序列的任务(如机器翻译),可以使用LSTM的隐状态来生成目标序列。这些向量捕获了词之间的语义关系,每个词都被表示为一个高维空间中的点,语义上相似的词在向量空间中彼此靠近。这通常是通过创建一个词汇表(vocabulary)来实现的,词汇表中的每个词都会被分配一个唯一的数字ID。:由于LSTM等循环神经网络(RNN)需要固定长度的输入,所以需要将不同长度的句子填充到相同的长度。由于计算机不能直接理解连续的文本,第一步是将文本分割成独立的词或标记(token)。:将词嵌入作为输入传递给LSTM模型。

YHKKun的博客 2500

QST QMC5883L —— 经典磁传感器的生存指南与替代预案

本文聚焦于QST旗下经典三轴磁力计 QMC5883L,解析其技术渊源、核心特性及当前面临的停产风险。结合真实应用场景提供续命方案与选型建议,为依赖该芯片的开发团队争取过渡时间窗口期。文章包含实测数据对比、生命周期管理策略及潜在替代方案拆解。存续价值判断✔️ 现有产品设计无需大幅改动即可延续生命;❌ 新项目采用将面临更高的维护成本;⚠️ 建议在6个月内完成技术路线切换。#磁传感器 #嵌入式开发 #供应链管理 #QST #QMC5883L。

2501_93066786的博客 998

程序员的量化交易之路(33)--QuantConnect之案例1

转载需注明:http://blog.youkuaiyun.com/minimicall,http://cloudtrade.top/ 分析Cointrader有一定层度了,发现它毕竟不是一个产品,没有得到验证。在架构、编码等方面都非常的不规范。 想编写一个云交易平台,任道而重远。我们需要参照一些成熟的架构。 Quantopian的zipline不行,因为我就是看...

weixin_34364135的博客 4493

【ISP图像处理】Demosaic去马赛克技术演进与边缘优化策略

本文深入解析了ISP图像处理中的Demosaic(去马赛克)技术。从Bayer阵列原理出发,梳理了从双线性插值、Hamilton-Adams边缘导向算法到利用通道相关性与自相似性的技术演进历程,并重点探讨了针对边缘与纹理伪影的优化策略,为工程实践中的算法选型与硬件协同设计提供了专业指导。

weixin_29091445的博客 388

量化交易学习2--量化交易入门

1、数据获取 2、数据清理 3、数据分析 4、数据优化 5、策略回测 6、策略参数优化 7、策略模拟和实盘 8、风控模块 9、资金管理

二毛的博客 3790

大模型_WIN10使用hyper-v安装Ubuntu24.04虚拟机_配置独立静态IP地址_连接外网_并与内网其他机器互通_通过容器安装Dify_超详细安装过程002--人工智能工作笔记0247

本文详细描述了在Hyper-V环境中配置网络、安装Ubuntu虚拟机、设置IP地址、安装Docker以及部署Dify应用的过程。首先,通过Hyper-V管理器创建外部虚拟交换机(ExternalSwitch),并配置本机、虚拟交换机和Ubuntu虚拟机的IP地址,确保网络互通。接着,在Ubuntu虚拟机中安装Open-VM-Tools和Docker,并配置Docker的国内镜像源。最后,通过Git克隆Dify源码,使用Docker Compose启动Dify应用,完成部署。整个过程涵盖了网络配置、虚拟机管理

添柴程序猿的专栏 1751

银行业数据科学家的 6 条经验教训

原本希望在计算机科学、统计学和机器学习领域工作。运用新方法获得独特见解,实现一切自动化。简而言之,最终成了这个职业炒作的牺牲品。我想和你们分享一下。希望我们能够摆脱炒作,提高你对数据科学家工作的理解。

茶桁专栏 246

【亲测免费】 QuantConnect Lean 项目教程

QuantConnect Lean 是一个开源的算法交易引擎,支持多种资产类别和市场。以下是其主要目录结构的介绍: - **.`/Algorithm.CSharp`**: 包含用C#编写的示例算法。 - **`/Algorithm.Python`**: 包含用Python编写的示例算法。 - **`/Brokerages`**: 包含与不同经纪商接口的实现。 - **`/Common`**: 包...

gitblog_00345的博客 1155

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【免费下载】【量化交易学习之旅:QuantConnect教程解析与新手导航】**

###【量化交易学习之旅:QuantConnect教程解析与新手导航】** 项目基础介绍: QuantConnect Tutorials 是一个专为Python和LEAN引擎设计的开源教育性项目,托管于GitHub上。LEAN是一个功能强大的C#算法交易平台,支持Windows、Linux和Mac系统,旨在提供全面的金融算法开发、回测和执行环境。此教程集合涵盖了从金融Python基础知识到期权交易...

gitblog_01220的博客 2667

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【亲测免费】 QuantConnect LEAN CLI 使用教程

QuantConnect LEAN CLI 是一个跨平台的命令行工具,旨在简化 LEAN 引擎的本地和云端开发。LEAN 引擎是 QuantConnect 提供的一个开源算法交易平台,支持回测、优化和实时交易。LEAN CLI 提供了丰富的功能,包括本地和云端的回测、优化、实时交易以及 Jupyter 研究环境等。 ## 2. 项目快速启动 ### 安装 LEAN CLI 首先,确保你已经安...

gitblog_01121的博客 1450

怀旧版电脑GBC模拟器

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

【亲测免费】 探秘QuantConnect Tutorials:开启量化交易的新篇章

是一个开源教程集合,由QuantConnect提供,旨在帮助开发者和投资者掌握量化交易的知识和技术。该项目提供了一系列详细的教程,涵盖了从基础到进阶的各种主题,包括算法交易、数据处理、回测和实时交易等。 ## 技术分析 1. **Python与C#支持**:QuantConnect Tutorials 支持Python和C#编程语言,这两种语言在金融界和科技圈都广泛应用,易于学习且功能强大。 ...

gitblog_00057的博客 2217

算法交易领域QuantConnect、TradingView、MetaTrader 5 (MT5)、QuantRocket 和 AlgoTrader 在开源领域的表现和贡献

通过Lean算法框架大力推动开源文化,允许开发者创建和分享高质量的交易策略。虽然Pine Script不完全开源,但其共享策略和脚本的机制促进了知识的传播。的MQL5社区提供了一个开放平台,虽然不是完全开源,但鼓励代码的共享与交流。结合开源工具和平台,提供了灵活的Python开发环境,但平台本身是商业化的。AlgoTrader的Community Edition是一个完全开源的量化交易平台,适合需要高度定制化的用户。

qq_34068440的博客 2925

【免费下载】 QuantConnect Tutorials 项目下载及安装教程

QuantConnect Tutorials 是一个开源项目,旨在为金融和算法交易领域的开发者提供丰富的 Jupyter Notebook 教程。这些教程涵盖了从基础的金融概念到高级的算法交易策略,帮助开发者更好地理解和使用 QuantConnect 的 LEAN 引擎。LEAN 引擎是一个开源的、完全托管的 C# 算法交易引擎,支持桌面和云端使用,适用于 Windows、Linux 和 Mac ...

gitblog_01225的博客 1838

【亲测免费】 探索QuantConnect的开放源代码算法交易引擎——Lean

![QuantConnect Lean Logo](https://cdn.quantconnect.com/web/i/20180601-1615-lean-logo-small.png) --- ## 项目简介 QuantConnect的Lean引擎是一个强大的开放源代码算法交易平台,专为策略研究、回测和实时交易设计。它无缝支持C#和Python两种编程语言,并能在Linux、Mac和W...

gitblog_00063的博客 1854

程序员的量化交易之路(36)--Lean之数据读取SubscriptionDataReader4

转载需注明出处:http://blog.youkuaiyun.com/minimicall?viewmode=contents,http://cloudtrade.top 数据读取需要定义一个读者。直接见下面代码: namespace QuantConnect.Lean.Engine.DataFeeds { /**********************...

weixin_34277853的博客 420

在Quantconnect上实现强化学习多因子选股策略

roe = self.GetFundamental(symbol, "OperationRatios.ROE", 4) # 季度数据。注意强化学习模型在金融市场中的过拟合风险,需采用严格的前向验证方法。self.state_dim = len(self.factors) + 2 # 因子数 + 持仓状态 + 时间特征。self.action_dim = 3 # 买入/持有/卖出。# 获取多因子数据(示例数据源)2. 添加基准比较(如等权重组合、单因子策略)- 分阶段训练(预训练+在线学习)

gregmankiw的博客 1152
上一篇: 程序员的量化交易之路(33)--QuantConnect之案例1
下一篇: 程序员的量化交易之路(35)--Lean之DataFeed数据槽3
minimicall
博客等级 码龄18年 407粉丝 174原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值