交易策略开发的脚本语言

14 投票
11 回答
3451 浏览
提问于 2025-04-15 19:29

我现在正在开发一个交易产品的组件,这个组件可以让量化分析师或策略开发者自己编写定制的交易策略。显然,我不能让他们使用那些需要编译的语言(或者是编译成字节码在虚拟机上运行的语言),因为他们的开发和测试周期必须在几分钟之内。

到目前为止,我看过Lua、Python和Ruby,感觉都挺不错的,但还是觉得这些语言对我的目标用户来说有点“底层”。我是不是需要自己写一个解析器和解释器,来支持一种至少能进行循环、简单算术和逻辑表达式评估的语言,还是说你们有什么其他的推荐呢?提前谢谢大家。

11 个回答

1

无论你选择什么,定制的模块都是必不可少的,这些模块会定义你公司的高级结构。

我想到了几个需求——你可能已经有了一些解决方案:需要一种方法将当前的持仓、当前和历史的报价、以前的表现数据等导入到应用程序中。还需要定义、回测和发送各种类型的订单(限价单、市场单、止损单,选择哪个交易所,触发条件等)或者期权的参数等等。你可能还需要多个测试环境来进行测试,以及一个真实的环境。

量化分析师希望能够进行矩阵运算、随机微积分和偏微分方程。如果你想用Python来做,加载NumPy库是个不错的开始。

你也可以从一个专门设计的系统开始,这种系统是为了进行数学金融研究,比如基于Mathematica或Matlab构建的系统。

8

听起来你可能需要为用户创建一种特定领域的语言(DSL),这个语言可以在目标语言的基础上松散构建。像Ruby、Python和Lua这些语言在语法上都有各自的特点,而通过巧妙的函数定义,可以在一定程度上调整这些特点。

一个比较成熟的DSL例子是Cucumber,它采用了一种有趣的策略,通过一系列正则表达式将用户指定的文字转换成实际可执行的代码。

另一个选择可能是JavaScript,或者某种连接JavaScript的DSL,这样可以让你的策略在客户端或服务器端都能运行。这可能有助于扩展你的应用,因为客户端的计算机通常比负载较重的服务器有更多的计算能力。

10

Mark-Jason Dominus是Perl的Text::Template模块的作者,他有一些可能对我们有用的见解:

当人们创建像这样的模板模块时,他们几乎总是会先发明一种特殊的语法来进行替换。比如,他们会设计成像%%VAR%%这样的字符串会被$VAR的值替换掉。然后,他们意识到需要额外的格式化功能,于是又加入了一些特殊的格式化语法。接着,他们需要循环功能,于是又发明了一种循环语法。没多久,他们就创造了一种新的小型模板语言。

这种方法有两个问题:首先,他们的小语言功能受限。如果你需要做一些作者没有想到的事情,那就麻烦了。第二:谁想学习另一种语言呢?

如果你自己写一个迷你语言,可能会陷入同样的困境——维护一个语法和解析器,但这个工具本身的功能又很有限。

如果觉得真正的编程语言太底层,解决办法可能不是放弃这门语言,而是为最终用户提供更高级的实用功能,这样他们就可以用熟悉的概念进行操作,而不必被底层语言的复杂性困扰。

这样一来,初学者可以在更高的层次上操作;而你和那些对编程有天赋的用户——也就是你的超级用户——仍然可以充分利用Ruby、Python或其他语言的强大功能。

撰写回答