当程序启动时,第一个函数被调用并执行一次启动逻辑。作为一个参数,initialize() 函数接受一个context,用于储存在回溯测试或实时交易期间的状态,并且可以在算法的不同部分中被引用,如下面的代码所示;你会看到context在第一个移动平均窗口的定义中返回。你会看到你通过符号来制定查找安全的结果(在这种情况下,股票),(AAPL在这种情况下)并指定到context.security。 handle_data() 函数在模拟或现场交易中每分钟被调用一次,已决定每分钟防止什么订单(如果有的话)。该函数需要context 和data 作为输入:context与上文刚刚读到的相同,而data是储存多个API函数的对象,例如current() 来检索给定资产给定领域的最新值或者history() 来获取历史定价或交易量数据的追踪窗口。这些API函数不在下面的代码中返回也不在本教程的范围内。 请注意 你在Quantopian控制台敲入的代码只能在平台运行而不能在本地Jupyter Notebook中,比如!你会看到data对象允许你检索price, 用于forward-filled,通过得到最近的已知价格,如果有的话。如果没有,将返回一个NaN值。 你在上面代码块中看到的另一个储存你的投资组合重要信息的对象是portfolio。正如你在context.portfolio.positions代码中看到的,该对象储存在context中也可以作为用户提供给你的核心函数访问。 注意 你刚刚读到的positions,是用来储存仓位对象并包括股数和支付的价格等信息。此外,你能看到 portfolio 还有cash property来获取你投资组合中的现金数额,而positions对象也有amount property来查看某一仓位的全部股数。 order_target() 放置一个订单来调整目标股数的仓位。如果资产中没有仓位,则设置一个完整目标数的订单。如果资产中有仓位,则设置一个目标股数或合约与当有持有量差额的订单。放置负面目标订单将导致一个做空仓位等同于特定的负数。 建议:如果你对函数或对象有任何疑问,请确保查看Quantopian Help page,其中包含有关本教程中简要介绍的所有内容(以及更多)。 当你使用initialize() 和handle_data() 函数(或复制粘贴上述代码)到界面左侧的控制台中创建策略时,只需按“构建算法”(Build Algorithm)按钮构建代码并且运行回溯测试。如果你按“运行完全的回测”(Run Full Backtest)按钮,则会运行完整的回溯测试,这与你在构建算法时运行的基本相同,但你将能够更详细地查看更多内容。回溯测试,无论是“简单”还是完整版,运行都可能需要一段时间,请确保注意页面顶部的进度条! 你可以在这里找到更多关于如何开始Quantopian的信息。 请注意Quantopian是开始使用zipline的简洁方式,但是你通常会移动在本地库里使用它,比如,你的Jupyter notebook里。 改进交易策略 你已经成功地做了一个交易算法,并通过Pandas,Zipline和Quantopian进行回溯测试。可以说你已经被普及了如何用Python进行交易。但是,当你完成了交易策略的编写并回溯测试它,你的工作还没有结束;你可能希望改进你的策略。这里有一个或多个算法来持续地改进模型,例如KMeans,K近邻(KNN),分类或递归树和遗传算法。这将是以后DataCamp教程的话题。 除了你可以使用其他算法之外,你还可以观察到你可以通过使用投资组合来改善策略。只将一个公司或符号并入你的策略,通常不会有太多改进。你还会在评估你的移动平均交叉策略看到改进提醒。其他你可以添加或采取不同的做法是使用风险管理框架或使用事件驱动的回溯测试来帮助减轻你之前阅读到的前瞻性偏差。还有许多其他可以改善你策略的方式,但现在,这是一个很好的开始! 评估移动平均线交叉策略 改进你的策略并不意味着你已经完成了。你可以轻松使用Pandas来计算一些指标,来进一步判断你的简单交易策略。在本节中,你将了解夏普比率,最大跌幅和复合年增长率(GAGR)。 在这里获取更多阅读和训练。 除了这两个指标外,你还可以考虑许多其他因素,如回报分配,贸易水平指标… 再进一步! 干的漂亮,你已经通过了这个Python金融介绍教程!你已经学会了很多基础知识,但还有更多的需要你去发现! (责任编辑:本港台直播) |