输入/搜索内容
内置函数
Global
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
Threads
exchange.Go
EventLoop
ctx.subscribe
ctx.poll
ctx.order
ctx.cancel
ctx.submit
Subscription
threading
Thread
ThreadLock
ThreadEvent
ThreadCondition
ThreadDict
Server
TA
Talib
OS
结构体
内置变量与常量
通用约定
交易所

本节介绍并发相关函数。exchange.Go将耗时的调用放到后台执行,EventLoop等待并发调用的结果和事件,这两个函数适用于所有支持的编程语言;下列多线程对象仅支持JavaScript。ctx.subscribe、ctx.poll是托管者的WebSocket推送接口:ctx.subscribe()用于订阅行情、全市场ticker或账户私有数据流,返回Subscription对象(一次订阅多个品种时返回订阅对象数组),ctx.poll()用于获取推送事件。ctx.order、ctx.cancel通过交易所的REST接口下单、撤单,收到交易所返回的结果后才返回;ctx.submit通过交易所的WebSocket交易接口下单、撤单(支持批量操作),请求写出后立即返回,结果通过应答事件由ctx.poll()获取。JavaScript、Python策略使用全局ctx对象,Rust使用ctx模块中的同名函数。订阅归属于发起订阅的线程,主线程和各个子线程分别订阅、分别获取事件,也都可以下单。推送与exchange.GetTicker()等REST接口互不影响,各交易所的推送支持情况见能力矩阵。

发明者量化交易平台从系统底层支持JavaScript语言策略的多线程功能,提供以下对象:

对象说明备注
threading多线程全局对象成员函数:Thread、getThread、mainThread等。
Thread线程对象成员函数:peekMessage、postMessage、join等。
ThreadLock线程锁对象成员函数:acquire、release。可作为线程执行函数的参数传入线程环境。
ThreadEvent事件对象成员函数:set、clear、wait、isSet。可作为线程执行函数的参数传入线程环境。
ThreadCondition条件变量对象成员函数:notify、notifyAll、wait、acquire、release。可作为线程执行函数的参数传入线程环境。
ThreadDict字典对象成员函数:get、set。可作为线程执行函数的参数传入线程环境。
Server服务对象由threading.Serve()返回。成员函数:addr、close、stop、join、pending。可作为线程执行函数的参数传入线程环境。

本章内容整章阅读

名称描述
exchange.Go多线程异步支持函数,可以把所有支持的函数的操作变成异步并发执行。
EventLoop监听事件:当任意WebSocket有可读数据,或exchange.Go()、HttpQuery_Go()等并发任务完成时返回。
ctx.subscribe订阅WebSocket推送,可订阅品种行情、全市场ticker或账户私有数据流,返回Subscription对象。
ctx.poll取出本线程订阅的下一条推送事件,可设置等待超时。
ctx.order通过交易所的REST接口下单,待交易所返回订单号后返回。
ctx.cancel通过交易所的REST接口撤销一个订单,等待交易所确认后返回。
ctx.submit通过交易所的WebSocket交易接口下单、撤单:请求发送后立即返回请求号,不等待交易所应答;每笔请求的结果以一条应答事件(kind为ack)发送给调用该函数的线程,通过ctx.po…
Subscription (4)订阅对象,由ctx.subscribe返回,代表一路推送订阅。
threading (10)全局多线程管理工具,提供了创建并发线程、线程锁、条件变量等功能。
Thread (9)线程对象,可以通过threading.Thread()、threading.getThread()、threading.mainThread()、threading.currentThread()创建或返回。
ThreadLock (2)线程锁对象,用于多线程同步处理。
ThreadEvent (4)事件对象,用于多线程间的事件通知和信号传递。
ThreadCondition (5)条件变量对象,用于实现多线程间的同步与通信。
ThreadDict (2)线程安全的字典对象,用于在多线程环境中进行数据共享。
Server (5)threading.Serve函数的返回值,代表一个正在运行的服务。