交易策略开发的脚本语言

Pie*_*ten 15 ruby python scripting dsl trading

我目前正在研究交易产品的一个组件,它允许定量或策略开发人员编写自己的自定义策略.我显然不能让他们用本机编译的语言编写这些策略(甚至是编译为在vm上运行的字节码的语言),因为他们的开发/测试周期必须是几分钟.

到目前为止,我已经看过lua,python,ruby并且真的非常喜欢它们,但仍然发现它们对我的目标用户来说有点"低级别".我是否需要以某种方式编写自己的解析器+解释器来支持最少支持循环,简单算术,逻辑表达式评估的语言,或者您是否还有其他建议?提前致谢.

FMc*_*FMc 10

Perl的Text :: Template模块的作者Mark-Jason Dominus 有一些可能相关的见解:

当人们制作像这样的模板模块时,他们几乎总是从发明一种特殊的替换语法开始.例如,他们构建它以便像%% VAR %%这样的字符串替换为$ VAR的值.然后他们意识到需要额外的格式化,所以他们为格式化添加了一些特殊的语法.然后他们需要一个循环,所以他们发明了一个循环语法.很快他们就有了一个新的小模板语言.

这种方法有两个问题:第一,他们的小语言瘫痪.如果你需要做一些作者没有想到的事情,那你就输了.第二:谁想学习另一种语言?

如果你编写自己的迷你语言,你可能会陷入同样的​​困境 - 维护一个语法和一个解析器来获得一个因设计而瘫痪的工具.

如果真正的编程语言看起来有点过于低级,那么解决方案可能不是放弃语言,而是为最终用户提供更高级别的实用功能,这样他们就可以使用熟悉的概念进行操作而不会陷入困境.基础语言的杂草.

这允许初级用户在高级别操作; 但是,您和任何具有诀窍的最终用户 - 您的超级用户 - 仍然可以充分利用Ruby或Python的全部功能.

  • 非常优质的答案; 谢谢.我想我们大多数人应该意识到我们不是语言设计师,我们是开发人员!我喜欢为高级用户设计基于GUI的工具和脚本界面的想法; 真正是两全其美的. (2认同)

tad*_*man 8

听起来您可能需要为您的用户创建某种域特定语言(DSL),这些语言可以在目标语言之上松散地构建.Ruby,Python和Lua都有各种关于语法的怪癖,并且在某种程度上,其中一些可以用巧妙的函数定义进行按摩.

相当强大的DSL的一个例子是Cucumber,它实现了一种有趣的策略,即通过应用于输入数据的一系列正则表达式将用户指定的措辞转换为实际的可执行代码.

另一个候选者可能是JavaScript,或某种DSL到JavaScript桥接器,因为这将允许策略在客户端或服务器端运行.这可能有助于扩展您的应用程序,因为与负载很重的服务器相比,客户机通常具有过剩的计算能

  • Ruby特别适合编写DSL(可选括号和块可以实现这一点).看看Martin Fowler关于Ruby's Rake的这篇文章:http://martinfowler.com/articles/rake.html (3认同)