笔记:AI量化策略开发流程-基于BigQuant平台(二)

五、模型训练+股票预测

完成了数据处理,接下来就可利用平台集成的各算法进行模型训练和模型预测啦。本文将详细介绍“模型训练”、“模型预测”两大模块操作、原理。

模型训练模型预测是AI策略区别于传统量化策略的核心,我们通过模型训练模块利用训练集因子和标注数据构建一个模型,并通过模型预测模型将预测集的因子数据输入模型进行预测。

在模块列表的 机器学习 、 深度学习 下可找到众多AI算法,可根据需要选择对应算法做训练和预测。本文以BigQuant专为量化开发的有监督性机器学习算法StockRanker为例,用 StockRanker训练 模块来训练模型,用 StockRanker预测 模块来做出股票预测。

操作流程

添加模块

第一步:在模块列表搜索框中输入“StockRanker”,在 机器学习 下找到 StockRanker训练 、 StockRanekr预测 模块并拖入画布。

连接StockRanker模块

第二步:将训练集的 缺失数据处理 和 输入特征列表 连接至 StockRanker训练 模块。

运行训练模块

第三步:选中 StockRanker训练 模块,保持默认设置,右键 运行选中模块 。

StockRanker算法原理、模块属性参数含义,请继续查看下文。

右键查看结果1 ,可观察训练好的模型(StockRanker为决策树)样子。如下图所示,可以看到有20个决策树,每个节点表示决策树的分支条件,每个分支都会依据各自的条件根据预测集中每只股票的因子数据进行打分。最终将所有决策树的打分结果汇总得到每只股票的得分和排序。

再右键 查看结果2 ,可观察各因子对此模型的贡献重要度分值(gain)。 

连接至StockRanker预测

第四步:将训练好的 StockRanker训练 和测试集的 缺失数据处理 模块连接至 StockRanker预测

运行预测模块

右键 查看结果1 ,可观察每日各股票的得分、排序,即每日最值得买入的股票排序。

StockRanker算法介绍

StockRanker 算法专为量化而生,核心思想是排序学习和梯度提升树。 如下图这个模型有20棵决策树组成,每棵决策树最多有30个叶节点。给定一个样本,每个决策树会对样本打分(分数为样本根据判定条件到达的叶节点的值);最后的分数是所有决策树打分的总和。决策树的结构、判定条件和叶节点的分数等等都是由算法在训练数据上学习出来的。将测试集数据喂给训练好的决策树,则可得到测试集数据数据在该模型上的分数,再根据分数形成股票排序、回归、分类预测,指导后续的买入卖出。

StockRanker模块参数说明

输入数据1:训练数据,如本例中由 缺失数据处理 模块输出的含因子数据、标注数据的训练数据。
输入数据2:因子列表。
学习算法:StockRanker下包含排序、回归、二分类、logloss四种优化算法,默认为排序。
叶节点数量:如上图决策树中每棵树最大叶节点数量。一般情况下,叶子节点越多,则模型越复杂,表达能力越强,过拟合的可能性也越高;默认值是30。
每叶节点最小样本:每个叶节点最少需要的样本数量,一般值越大,泛化性性越好;默认值是1000。
树的数量:如上图决策树中树的数量。一般情况下,树越多,则模型越复杂,表达能力越强,过拟合的可能性也越高;默认值是20。
学习率:学习率如果太大,可能会使结果越过最优值,如果太小学习会很慢;默认值是0.1。
特征值离散化数量:离散化即在不改变因子(即特征)数据相对大小的前提下,对数据进行相应的映射,减小复杂度。离散化数量越大,数据复杂度越高,过拟合的可能性也越高;默认值是1023。
特征使用率:在构建每一颗树时,每个特征(即因子)被使用的概率,如果为1,则每棵树都会使用所有特征;默认值是1。
输出数据1:训练好的模型
输出数据2:各因子对模型的贡献度

StockRaner预测模块说明

输入数据1:训练好的模型
输入数据2:测试数据集
输出数据1:预测结果。即每日各股票的得分、顺序。

小结:至此,完成了 模型训练 和 股票预测 ,接下来就可利用预测好的股票进行买入卖出,计算并评估对应的收益、风险。

六、策略回测

完成了模型训练和股票预测,生成的股票排序,应该在何时买入卖出?行情突变,怎么止盈止损?交易费、成交率等怎么设置?这些都在“回测”模块中找到答案。

如下图所示,在AI策略开发中回测通常是策略构建的最后一步,通过Trade模块实现。回测是利用测试集数据的模型预测结果编写策略,并用测试集的历史数据对策略进行校验的过程。

AI策略的编写思路是利用AI模型的预测结果构建买卖交易逻辑,根据AI模型的类别不同,利用模型预测值构建的交易逻辑也不尽相同。例如本例的AI模板策略中根据每日股票的排序预测值构建买卖逻辑,每天卖出持仓中预测排名靠后的股票并买入当日预测排名靠前的股票。

回测机制简介

 BigQuant交易引擎把每一个K线当做一个事件,按照时间发生先后顺序,即从左往右依次运行。

具体而言,回测程序在第一根K线上会依次调用初始化函数数据准备函数盘前处理函数主函数,从第二根K线起的每根K线会依次调用盘前处理函数和主函数。
注意:最左侧黑色箭头表示只会在第一根K线会执行一次初始化函数。而每根K线上的灰箭头代表每根K线都会执行一次主函数。

函数详解

初始化函数:通常设置手续费、滑点、买卖股票数量、换仓周期等全局变量。

数据准备函数:通常计算交易所需的信号、每日交易的股票列表等变量。

盘前处理函数:通常编写订单的撤销/更改等订单处理逻辑。

主函数:通常编写策略的换仓买卖、风险控制等核心交易逻辑。

如下图所示,在回测模块的属性栏中可以看到对应函数的编写位置:

每根K线回调细节,见下图:

回测步骤

添加Trade模块

第一步: 在模块列表的 回测与交易 下找到 Trade(回测/模拟) 模块并拖入画布。

连接模块

第二步:将 证券代码列表 和 StockRanker预测 模块连接至 Trade(回测/模拟) 。注意输入端, Trade(回测/模拟) 第一个输入端只接收 证券代码列表 。

Trade参数属性设置

第三步:选中 Trade(回测/模拟) ,可在左侧属性栏更改初始资金、回测价格类型、成交率等交易参数;在主函数、数据准备函数、初始化函数中更改交易逻辑。我们先保持默认设置。

Trade(回测/模拟)模块参数

交易参数设置

开始时间:start_date (str),设定值只在回测模式有效,在模拟实盘模式下为当前日期。一般不需要指定,自动继承证券代码列表模块里的开始日期。

结束时间:end_date (str),设定值只在回测模式有效,在模拟实盘模式下为当前日期。一般不需要指定,自动继承证券代码列表模块里的结束日期。

成交率限制:执行下单时控制成交量。设置为0,不进行成交量检查; 默认值是0.025,下单量如果超过该K线成交量的0.025,多余的订单量会自动取消。

买入点:在何时下单买入。open=开盘买入,close=收盘买入;可选值有: ‘open’,‘close’;默认值是’open’。

卖出点:在何时下单卖出。open=开盘卖出,close=收盘卖出;可选值有: ‘open’,‘close’;默认值是’close’。

初始资金:默认值是1000000.0。

自动取消无法成交订单:是否自动取消因为停牌、一字涨跌停等原因不能成交的订单;默认值是True。

回测数据频率:股票、期货暂只支持日线、分钟级回测。

可选值有: ‘daily’和’minute’;默认值是daily。

回测价格类型:回测中买卖下单使用的价格, 支持真实价格或后复权(默认值)价格回测。

回测产品类型:交易品种类型,可选值有股票、期货,默认为股票。

基准代码:策略比较基准,不影响回测结果,一般传入指数代码,如000300.HIX(沪深300) 。更多A股指数代码请查看A股指数代码表。

主函数

[回调函数]主函数,必须实现的函数,该函数每个单位时间(每根K线)会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次。在回测中,可以通过对象data获取单只股票或多只股票的时间窗口价格数据。如果算法中没有schedule_function函数,那么该函数为必选函数。一般策略的交易逻辑和订单生成体现在该函数中;默认值是None。

数据准备函数

[回调函数]数据准备函数,运行过程中只调用一次,在initialize前调用,准备交易中需要用到数据;默认值是None。

初始化函数

[回调函数]初始化函数,整个回测中只在最开始时调用一次,用于初始化一些账户状态信息和策略基本参数,context也可以理解为一个全局变量,在回测中存放当前账户信息和策略基本参数

盘前处理函数

[回调函数]盘前处理函数,每日开盘前调用一次。该函数是可选函数,在handle_data函数之前运行。你的算法可以在该函数中进行一些数据处理计算,比如确定当天有交易信号的股票池。

看不懂回测模块? 请移步回测模块详解
看不懂策略的逻辑? 请移步AI模板策略交易逻辑解读

运行并查看结果

第四步:点击右上角 运行全部 ,等待策略回测完成并查看分析结果。

生成的回测曲线和回测结果如何解读?查看下篇教程查看、分析结果

常见问题

编写策略并回测是策略构建中的核心内容,我们将常用功能和模板案例进行了归纳整理主要包括:

1.如何设置股票买卖比例?
2.如何设置手续费和滑点?
3.如何设置策略固定周期运行?
4.如何设置持仓股票持有固定天数后卖出?
5.如何设置下单数量为整百?
6.如何实现大盘风控?
7.如何实现个股的止盈止损?

如果有上述策略开发方面的疑惑,请移步宽客学院查看自定义买入卖出专题

小结:至此完成了策略构建基本步骤。在构建策略后通常还需要对策略进行反复的评价、优化、测试才算完成策略开发。

七、查看、分析结果

当策略回测完成时,系统会输出包含各种指标的收益曲线图,但可能因对这些指标的释义和内容不太熟悉,导致无法准群判断策略好坏,本文从回测各指标概念入手,希望可以帮助大家更好地理解策略回测结果。

当完成一个策略回测时,会得到如下图形,包含 收益概况交易详情每日持仓和收益输出日志 。接下来,我们详细介绍这几个部分。

收益概况及指标含义

收益概况以曲线图的方式显示了策略在时间序列上的收益率。红色曲线为 策略收益率 ,蓝色为 基准收益率 (默认的基准设置是沪深300指数)。绿色曲线为 持仓占比 ,10%的持仓占比表示账户里股票市值占账户总资产的10%。 可通过缩放、拖动下方时间轴控件或在右上角填入起止时间来查看不同时间段的曲线走势。

不仅如此,衡量一个策略好坏的关键指标在收益概况页面也充分展示出来了。各指标含义如下:

收益率

(Total Returns*)*

策略整个回测时间段上的总收益率。比如,如果收益率为30%,表明起始时间是1万的本金,结束时间本金就变成1.3万了,一共赚了3000元。计算公式如下,该值越大越好。

年化收益率

(Total Annualized Returns)

该策略每一年的收益率。比如,如果回测时间段为2年,总收益率为30%,那么每年的年化收益率就在15附近(不考虑复利)。计算公式如下,该值越大越好。

基准收益率

(Benchmark Returns)

策略需要有一个比较基准,比较基准为沪深300。若基准收益率为15%,表明在整个回测时间段,大盘本身就上涨了15%,如果策略收益率小于基准收益率,说明策略表现并不好,连大盘都没有跑赢。计算公式如下。

阿尔法

(Alpha)

投资中面临着系统性风险(即$Beta$)和非系统性风险(即$Alpha$),$Alpha$是投资者获得与市场波动无关的回报。比如投资者获得了15%的回报,其基准获得了10%的回报,那么Alpha或者价值增值的部分就是5%。计算公式如下,该值越大越好。

Alpha值解释:

α>0 策略相对于市场,获得了超额收益;

α=0 策略相对于市场,获得了适当收益;

α<0 策略相对于市场,获得了较少收益;

贝塔

(Beta)

表示投资的系统性风险,反映了策略对大盘变化的敏感性。例如一个策略的$Beta$为1.5,则大盘涨1%的时候,策略可能涨1.5%,反之亦然;如果一个策略的$Beta$为-1.5,说明大盘涨1%的时候,策略可能跌1.5%,反之亦然。计算公式如下,该值的绝对值越小越好。

Beta值解释:

β<0 投资组合和基准的走向通常反方向,如空头头寸类;

β=0 投资组合和基准的走向没有相关性,如固定收益类;

0<β<1 投资组合和基准的走向相同,但是比基准的移动幅度更小;

β=1 投资组合和基准的走向相同,并且和基准的移动幅度贴近;

β>1 投资组合和基准的走向相同,但是比基准的移动幅度更大;

夏普比率

表示每承受一单位总风险,会产生多少的超额报酬,可以同时对策略的收益与风险进行综合考虑。可以理解为经过风险调整后的收益率。计算公式如下,该值越大越好。

胜率

(Winning Percentage)

衡量策略盈利一指标。比如10次投资中有8次获利,胜率就是80%。计算公式如下,该值越大越好。

盈亏比

(The profit and coss ratio)

盈亏比是在投资市场里每次交易的盈利和亏损的比例。计算公式如下,该值越大越好 。

收益波动率

(Volatility)

收益率的标准差,用来测量策略的风险性,波动越大代表策略风险越高。计算公式如下,该值越小越好。

信息比率

(Information Ratio)

衡量单位超额风险带来的超额收益。信息比率越大,说明该策略单位跟踪误差所获得的超额收益越高,因此,信息比率较大的策略的表现要优于信息比率较低的基准。合理的投资目标应该是在承担适度风险下,尽可能追求高信息比率。计算公式如下,该值越大越好。

最大回撤

(Max Drawdown)

策略在整个时间段上亏损最严重的时候相比净值最高值下跌的百分比。如果最大回撤为20%,表明策略在某个时间点上,相比之前的净值最高。计算公式如下,该值越小越好。

交易详情

交易详情主要显示了策略在整个回测过程中每个交易日的买卖信息。包括买卖时间、股票代码、交易方向、交易数量、成交价格、交易成本。具体见下图:

可以通过右下角的下载交易详情按钮下载数据到本地进行查看。

每日持仓及收益

每日持仓及收益主要呈现每日持有股票代码、当日收盘价、持仓股票数量、持仓金额、收益等指标。具体见下图:

可以通过右下角的下载持仓详情按钮下载数据到本地进行查看。 需要注意的是这个表中的收益是指每只股票按当日收盘价结算的浮动收益,而不是该只股票真实卖出后的收益,因为卖出后的股票就不在持仓列表中了。策略总收益并不等于此列数据的总和!

输出日志

输出日志主要为策略运行过程中的一些日志。包括涨跌停股票不能交易、停牌估计不能交易等。该日志可以便于我们检查回测结果的正确性。

如图所示展示了每笔订单的执行时间和具体标的代码,以及订单的成交状态。

至此,已能初步判断判断策略效果好坏。但回测结果是否可靠?是否按照股票得分排序买入?交易参数是否真实?有无偷价漏价情形?此类情况均可参考下方高阶教程进行校验。

回测数据深入分析

策略收益风险分析

八、模拟实盘

开发好一个策略且回测收益、风险都达到目标,下一步该做什么呢?本文将详细介绍怎么将开发好的策略通过模拟交易推送每日交易信号。

提交模拟实盘

分享策略

第一步:开发出好策略后,在开发界面右上角点击 分享策略

 重要的事说三遍,在点击开始交易前请检查:

  1. 由于模拟交易需要实现每天更新预测集数据来预测最新日的结果,因此测试集的证券代码列表的开始日期和结束日期请务必确认已经勾选了绑定实盘参数 !

1.由于我们训练好的模型通常不希望每天变化,因此训练集的证券代码列表的开始日期和结束日期请务必确认已经取消了绑定实盘参数 !

2.由于模拟交易需要实现每天更新预测集数据来预测最新日的结果,如果您的因子计算需要历史数据例如过去5日收盘价的平均值,那么除了当日的收盘价因子数据外必然需要历史前4个交易日的收盘价因子,因此请检查基础特征抽取模块的参数向前取数据天数这个参数是否设置的足够长(例如取10),否则是无法计算当天的过去5日收盘价这个因子值的,会导致模拟交易报错!

3.简单测试模拟交易是否能运行。为了保证策略在模拟交易环境能正常运行,可以在提交模拟交易前,简单测试一下策略是否能在模拟交易运行成功。预测集时间更改为最近的一天,再运行回测,观测回测运行结果。

模拟交易

第二步:选择 模拟交易,点击 下一步

设置策略名称与实盘类型

第三步:输入策略名称,选择实盘类型(暂只支持股票),点击 下一步

绑定微信

第四步:至此提交模拟交易成功。扫描 BigQuant公众号 ,绑定微信, 实时接收调仓信号(强烈建议绑定)。

查看模拟交易详情

模拟交易表

第一步:在导航栏点击 我的交易 查看提交的所有模拟交易详情。

模拟交易表中各字段含义
  • 类型:模拟交易类型,暂只支持股票。

  • 状态:表明该策略是否处于模拟交易运行中,可通过操作中的 开始/暂停 按钮控制。

  • 累计收益:从开始模拟至今的所有收益。

  • 今日收益:最近一个交易日的当日收益。

  • 开始时间:策略是什么时候开始进行模拟交易的

  • 调仓通知-微信:表明是否开启微信订阅功能,开启之后,每日在微信上将收到策略调仓信号。可点击开启、关闭

  • 调仓通知-邮件:表明是否开启邮件订阅功能,开启之后,每日在邮件里将受到策略调仓信号。可点击开启、关闭。

  • 分享:表明是否将策略分享至 策略天梯 供其他人查看、付费订阅。

  • 操作:有三个按钮,为 开始/暂停、删除 。开始表明开始或重新运行该策略,暂停表明暂停运行该策略,删除是将策略从模拟交易中永久删除(一旦删除不可恢复,请谨慎操作)。

交易详情

第二步:点击某个 策略名称 查看该模拟交易详情,包括:

整体指标、收益走势、计划交易(即调仓信号)、持仓详情、交易详情、卖出详情、风险指标、策略日志等。

查看每日调仓信号

在 我的交易 中查看

BigQuant 访问 我的交易,在某交易详情页中查看 计划交易 信息。

通过微信、邮箱查看

打开模拟交易的 微信调仓信号邮箱调仓信号 ,通过微信、邮件消息查看。

通过API查看

通过 模拟交易API 获取交易信号并与实盘对接

使用方式请查看通过API获取自己/订阅的模拟交易持仓数据。

模拟交易运行时间

对于日线策略,每个交易日收盘后,BigQuant会立即更新数据,再利用最新数据运行所有用户的模拟交易,一般会从17:00持续到23:00。每个用户的模拟交易运行成功、失败均会推送对应的调仓信号、成功失败消息。用户可通过 模拟交易详情微信调仓信号邮件调仓信号模拟交易API 等多种方式获取每日调仓信号及相关收益、风险信息。为了消息的及时接收,小编强烈建议您 绑定微信、邮箱

小结:至此,分享了 策略开发的整体思路、常用功能。有任何功能使用、量化思路、AI技术相关的疑问均可社区提问、讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/136451.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言练习11周(6~10)

输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。 题干 输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。输入样例gfedcba输出样例gbcdefa 选择排序 #include<s…

每日一题(LeetCode)----数组--长度最小的子数组

每日一题(LeetCode)----数组–长度最小的子数组 1.题目&#xff08; 209.长度最小的子数组&#xff09; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &…

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来很大的困扰。那么&#xff0c;如何解决msvcp120.dll丢失的问题呢&#xff1f;本文将为大家介绍…

手机地磁传感器与常见问题

在手机中&#xff0c;存在不少传感器&#xff0c;例如光距感&#xff0c;陀螺仪&#xff0c;重力加速度&#xff0c;地磁等。关于各传感器&#xff0c;虽功能作用大家都有所了解&#xff0c;但是在研发设计debug过程中&#xff0c;却总是会遇到很多头疼的问题。关于传感器&…

BM65 最长公共子序列(二)

动态规划 BM65 最长公共子序列&#xff08;二&#xff09; 这道题是动态规划的典型例题。 思路 题目要求获取最长公共子序列&#xff0c;我们要先求最长公共子序列的长度&#xff0c;然后根据这个长度倒推从而获取这个子序列。注意&#xff1a;子序列不是子串&#xff0c;子…

C语言进阶

数组 在基础篇说过&#xff0c;数组实际上是构造类型之一&#xff0c;是连续存放的。 一维数组 定义 定义格式&#xff1a;[存储类型] 数据类型 数组名标识符[下标]; 下面分模块来介绍一下数组的定义部分的内容。 1、初始化和元素引用&#xff1a; 可以看到数组是连续存储…

第六章 DNS域名解析服务器

1、DNS简介 DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS系统使用的是网络的查询&#xff0c;那么自然需要有监听的port。DNS使用的是53端口…

【Python】python读取,显示,保存图像的几种方法

一、PIL&#xff1a;Python Imaging Library&#xff08;pillow&#xff09; PIL读取图片不直接返回numpy对象&#xff0c;可以用numpy提供的函数np.array()进行转换&#xff0c;亦可用Image.fromarray()再从numpy对象转换为原来的Image对象&#xff0c;读取&#xff0c;显示&…

【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法2】

文章目录 概要Gray-world AlgotithmGround Truth Algorithm结论&#xff1a; 概要 随着数字图像处理技术的不断发展&#xff0c;白平衡算法成为了图像处理中一个关键的环节。白平衡的目标是校正图像中的颜色偏差&#xff0c;使得白色在图像中呈现真实的白色&#xff0c;从而提…

transfomer模型——简介,代码实现,重要模块解读,源码,官方

一、什么是transfomer Transformer是一种基于注意力机制&#xff08;attention mechanism&#xff09;的神经网络架构&#xff0c;最初由Vaswani等人在论文《Attention Is All You Need》中提出。它在自然语言处理&#xff08;NLP&#xff09;领域取得了巨大成功&#xff0c;特…

虚拟机CentOS 8 重启后不能上网

情况说明&#xff1a;原本虚拟机是可以上网的&#xff0c;然后嘚一下&#xff0c;重启后&#xff0c;连接不上网络&#xff0c;完了&#xff0c;上网查找一堆质料&#xff0c;我的连接方式是桥接模式&#xff08;复制物理网络连接状态&#xff09;。 好&#xff0c;有人说是vmn…

Git基本概念和使用方式

Git 是一种版本控制系统&#xff0c;用于管理文件版本的变化。以下是其基本概念和使用方式&#xff1a; 仓库&#xff08;repository&#xff09;&#xff1a;Git 存储代码的地方&#xff0c;可以理解为一个项目的文件夹。提交&#xff08;commit&#xff09;&#xff1a;Git …

【Go入门】struct类型

【Go入门】struct类型 struct Go语言中&#xff0c;也和C或者其他语言一样&#xff0c;我们可以声明新的类型&#xff0c;作为其它类型的属性或字段的容器。例如&#xff0c;我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性&#xff1a;姓名和年龄。这样…

前端开发引入element plus与windi css

背景 前端开发有很多流行框架&#xff0c;像React 、angular、vue等等&#xff0c;本文主要讲vue 给新手用的教程&#xff0c;其实官网已经写的很清楚&#xff0c;这里再啰嗦只是为了给新手提供一个更加简单明了的参考手册。 一、打开element plus官网选则如图所示模块安装命令…

c语言练习第11周(1~5)

数列 1 1 2 3 5 8 13 21 ... 被称为斐波纳数列。 输入若干个正整数N&#xff0c;输出这个序列的前 N 项的和。 题干数列 1 1 2 3 5 8 13 21 ... 被称为斐波纳数列。 输入若干个正整数N&#xff0c;输出这个序列的前 N 项的和。输入样例3 5 4 1输出样例…

【第七章】软件设计师 之 程序设计语言与语言程序处理程序基础

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 1、前言 正规式 2、编译过程 编译型&…

【操作系统】4.2 文件系统

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

如何有效的保护Windows登录 安当加密

为了有效保护Windows安全登录&#xff0c;以下是一些建议&#xff1a; 使用强密码&#xff1a;强密码是保护Windows登录安全的重要措施之一。确保密码包含大写字母、小写字母、数字和特殊字符&#xff0c;长度至少为8位&#xff0c;并且不要使用容易猜到的单词或短语。启用多因…

pointnetgpd复现

参考&#xff1a; Installation Instructions — Dex-Net 0.2.0 documentation Install git clone https://github.com/lianghongzhuo/PointNetGPD.git 添加环境变量 gedit ~/.bashrc #添加下面这一行 export PointNetGPD_FOLDER$HOME/code/PointNetGPD #然后source source…

SLAM从入门到精通(SLAM落地的难点)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在所有的slam算法中&#xff0c;基于反光柱的激光slam和基于二维码的视觉slam是落地最彻底的两种slam方法。和磁条、色带等传统导航方式相比较&…