
选择编程语言
现在我们将考虑单个编程语言的优点和缺点。我大致将这些语言分为高性能/更难开发和低性能/更容易开发。编写自定义回测环境最重要的一个方面是,程序员熟悉所使用的工具。这可能是一个比开发速度更重要的标准。然而,对于那些刚刚接触编程语言领域的人来说,下面的内容应该能够帮助他们弄清算法交易中倾向于使用什么。
C++, C# and Java
c++、c#和Java都是通用面向对象编程语言的例子。它们可以在没有相应IDE(集成开发环境)的情况下使用,它们都是跨平台的(可以在Windows、Mac OSX或Linux上运行),具有几乎所有可以想象的任务的库,并且具有快速的执行速度。如果希望最终执行速度尽可能快,那么c++(或C)可能是最佳选择。它为管理内存和优化执行速度提供了最大的灵活性。这种灵活性是有代价的。众所周知,c++很难学好,而且常常会导致一些细微的bug,开发时间可能比其他语言要长得多。c#和Java的相似之处在于,除了浮点数和整数等基本数据类型,它们都要求所有组件都是对象。它们与c++的不同之处在于它们都执行自动垃圾收集。这意味着,在对象被销毁时,不需要手动取消内存的分配。垃圾收集增加了性能占用,但它大大加快了开发速度。这些语言都是开发回测的好选择,因为它们具有本地GUI功能、数值分析库和快速执行速度。
MATLAB, R and Python
MATLAB是一个用于数值计算的商业集成开发环境(IDE)。它在学术界、工程界和金融界得到了广泛的认可。它为许多科学计算任务提供了大量的数字库,并且具有快速的执行速度,假设正在开发的任何算法都要服从向量化或并行化。它很贵,这有时会降低它对预算有限的零售交易员的吸引力。MATLAB有时用于直接执行到经纪公司,如交互式经纪公司。
R
不是一种通用编程语言,而是一种统计脚本环境。它是免费的、开源的、跨平台的,包含了大量免费的统计软件包,用于进行极其高级的分析。R在定量对冲基金行业中被广泛用于统计/策略研究。虽然R可以连接到经纪公司,但不太适合这项任务,应该考虑更多的研究工具。此外,除非操作是向量化的,否则它缺乏执行速度。
Python
介于MATLAB、R和前面提到的通用语言之间。它是免费的、开源的、跨平台的。被解释为反对编译,这使得它比c++慢得多。尽管如此,它包含用于执行几乎所有可以想象的任务的库,从科学计算到低级web服务器设计。它包含NumPy、SciPy、panda、matplotlib和scikit-learn,它们提供了一个健壮的数值研究环境,当向量化时,可以与编译语言的执行速度相媲美。此外,它还有用于连接到代理的成熟库。这使得它成为创建事件驱动的回溯测试和实时执行环境的“一站式商店”,而无需进入其他语言。对于以分钟为单位进行交易的日内交易员来说,执行速度已经足够了。最后,与c++这样的底层语言相比,学习和掌握这些语言非常简单。本书使用的是Python。
Integrated Development Environments
IDE这个术语在算法交易中有多重含义。软件开发人员使用它来表示一个GUI,它允许使用语法突出显示、文件浏览、调试和代码执行特性进行编程。算法交易员使用它来表示一个完全集成的回测/交易环境,包括历史或实时数据下载、图表、统计评估和实时执行。出于我们的目的,使用这个术语来表示任何不是通用编程语言的环境(比如C++、Python这类通用编程语言),例如,MATLAB被认为是一个IDE。
Excel
对于检查结果非常有用。所有数据都是直接可用的,而不是隐藏在对象后面,这使得实现非常基本的信号/过滤器策略变得非常简单。尽管易于使用,Excel对于任何合理的数据规模或数值计算水平都非常慢。Excel由于电子表格的软件性质,可以确保已经避免了前视性偏见。
商业/零售回测软件
零售制图、“技术分析”和回测软件市场竞争异常激烈。这些软件提供的功能包括实时价格图表、丰富的技术指标、定制的回测语言和自动执行。一些供应商提供了一个一体化的解决方案,例如TradeStation。
TradeStation是一家在线经纪公司,它生产交易软件(也称为TradeStation),提供跨多个资产类别的电子订单执行,目前他们不能提供一个直接用于自动执行的API,而是必须通过软件下订单。这与Interactive Brokers Trader形成了鲜明的对比,Interactive Brokers Trader具有更简单的图表/交易接口(交易员工作站),但同时提供了专有的实时市场/订单执行API和修复接口。
另一个非常受欢迎的平台是MetaTrader,它被用于外汇交易中创建“专家顾问”。这些是用专有语言编写的自定义脚本,可用于自动交易。如果您不熟悉深入的软件开发,并且希望处理很多细节,那么这些工具非常有用。然而,使用这样的系统会牺牲很多灵活性,而且您常常被绑定到一个经纪公司。
基于网络的工具
目前流行的两个基于web的反向测试系统是quant(https://www.quantopian.com/)和QuantConnect (https://www.quantconnect.com/)。前者使用Python而后者使用c#。Quantopian目前支持与交互式经纪人进行实时交易,而QuantConnect正在努力实现实时交易。
开源回测软件
Algo-Trader是一家总部位于瑞士的公司,为他们的系统提供开源和商业许可,该系统允许完整的历史回溯测试和复杂的事件处理,并且它们与交互式代理相结合。marketetc提供了一个回溯测试系统,它可以绑定到许多其他语言,比如Python和R,以便利用您已经编写的代码。trategy Studio提供了编写回测代码以及优化执行算法的能力,并随后从历史的回测转换到实时的交易。
ZipLine是一个Python库,支持上面提到的Quantopian服务。这是一个完全由事件驱动的回测环境,目前支持美国股市以分钟作为基准。以下是一些github和google的代码托管项目
OpenQuant (http://code.google.com/p/openq...),
TradeLink (https://code.google.com/p/trad...),
PyAlgoTrade (http://gbeced.github.io/pyalgo...).
机构级别的回测软件
机构级的回溯测试系统,如Deltix和QuantHouse,通常不会被散户算法交易员使用。软件许可证通常远远超出了基础设施的预算。也就是说,这类软件被量子基金、自营交易公司、家族理财室等广泛使用。
这些系统的好处是显而易见的。它们为数据收集、策略开发、历史回溯测试和跨单个工具或投资组合的实时执行提供了一个一体化的解决方案,最高可达超高频率级别。这些平台已经进行了广泛的测试和大量的“实战”使用,因此被认为是健壮的。系统是事件驱动的,因此回测环境通常可以很好地模拟活动环境。该系统还支持优化的执行算法,以尽量降低交易成本。因为这些回测软件超出了大多数零售交易员的承受能力,因此不会详细讨论。
【交易学习】
【交易员洞察】
【基础知识】
【货币交易】
【黄金交易】
إخلاء المسؤولية: الآراء الواردة هنا تعبر فقط عن رأي الكاتب، ولا تمثل الموقف الرسمي لـ Followme. لا تتحمل Followme مسؤولية دقة أو اكتمال أو موثوقية المعلومات المُقدمة، ولا تتحمل مسؤولية أي إجراءات تُتخذ بناءً على المحتوى، ما لم يُنص على ذلك صراحةً كتابيًا.

اترك رسالتك الآن