使用JavaScript实现量化策略并发执行——封装Go函数

在实现量化策略时,不少状况下,并发执行能够下降延时提高效率。以对冲机器人为例,须要获取两个币的深度,顺序执行的代码以下:多线程


请求一次rest API存在延时,假设是100ms,那么两次获取深度的时间实际上不同,若是须要更多的访问,延时问题将会更突出,影响策略的执行。 JavaScript因为没有多线程,所以底层封装了Go函数解决这个问题,但因为设计机制,实现起来较为繁琐。

在大多数简单状况下,这样写策略并没有问题。但注意到每次策略循环都要重复这个过程,中间变量a,b实际上只是临时辅助。若是咱们的并发任务很是多,就要另外纪录a和depthA,b和depthB之间的对应关系,当咱们的并发任务不肯定时,状况就更加复杂。所以,咱们但愿实现一个函数:当写Go并发时,同时绑定一个变量,当并发运行结果返回时,结果自动赋值给变量,这样就省去了中间变量,使程序更加简洁。具体实现以下:

咱们定义了一个G函数,其中参数t是将要执行的Go函数,ctx是记录程序上下文,f为具体赋值的函数。等会就会看到这个函数的做用。这时,总体的程序框架能够写为相似于“生产者-消费者”模型(有一些区别),生产者不断发出任务,消费者将它们并发执行,一下代码仅为演示,不涉及到程序的执行逻辑。
看上去兜了一圈只实现了一个简单功能,实际上大大简化了代码复杂程度,咱们只需关心程序须要产生什么任务,由worker()程序自动将他们并发执行,并返回相应的结果。灵活性提高了不少。
相关文章
相关标签/搜索