输入/搜索内容
内置函数
结构体
Trade
Ticker
Record
Order
OrderBook
Depth
Account
Position
Market
OtherStruct
HttpQuery-options
HttpQuery-return
LogStatus-table
LogStatus-btnTypeOne
LogStatus-btnTypeTwo
Chart-options
KLineChart-options
SetData-data
EventLoop-return
DBExec-return
Thread.join-return
内置变量

市场成交记录的数据结构。

属性

名称类型描述

Id

string

市场成交记录的唯一标识符。

Time

number

成交时间的毫秒级时间戳。

Price

number

成交价格。

Amount

number

成交数量。

Type

number

订单类型,请参考ORDER_TYPE_BUYORDER_TYPE_SELL

参考

备注

exchange.GetTrades()函数返回Trade数组或空数组。

市场行情(Tick数据)的数据结构。

属性

名称类型描述

Info

object

交易所接口返回的原始数据,回测时无此属性。

Symbol

string

合约代码。

High

number

最高价。

Low

number

最低价。

Sell

number

当前时刻的卖一价。

Buy

number

当前时刻的买一价。

Last

number

最新成交价。

Open

number

当前交易日的开盘价。

Volume

number

成交量。

Time

number

毫秒级时间戳。

OpenInterest

number

持仓量。

参考

备注

exchange.GetTicker()函数返回一个Ticker结构。

K线柱的数据结构,采用标准OHLC格式,用于绘制K线图和技术指标计算分析。

属性

名称类型描述

Time

number

毫秒级时间戳,表示该K线柱周期的起始时间。

Open

number

开盘价。

High

number

最高价。

Low

number

最低价。

Close

number

收盘价。

OpenInterest

number

持仓量。

Volume

number

成交量。

参考

备注

exchange.GetRecords()函数返回Record数组或空数组。每个Record结构代表一根K线柱。

对于Python语言,不同版本的pandas包处理方式可能有所差异,例如:

python
pandas.DataFrame(records) // 可能需要调整为:pandas.DataFrame(list(records))

相关报错信息:in getattr KeyError: 'dtype'

订单的数据结构。

属性

名称类型描述

Info

object

交易所接口返回的原始数据,回测时无此属性。

Symbol

string

合约代码。

Id

string

订单ID。

Price

number

下单价格。

Amount

number

下单数量。

DealAmount

number

已成交数量。

AvgPrice

number

成交均价。

Status

number

订单状态,参考ORDER_STATE_PENDINGORDER_STATE_CLOSEDORDER_STATE_CANCELEDORDER_STATE_UNKNOWN

Type

number

订单类型,参考ORDER_TYPE_BUYORDER_TYPE_SELL

Offset

number

合约订单的开平仓方向,参考ORDER_OFFSET_OPENORDER_OFFSET_CLOSE

ContractType

string

合约订单中该属性为具体的合约代码。

Time

number

订单创建时间,毫秒级时间戳。

参考

备注

Order订单结构可由exchange.GetOrder()、exchange.GetOrders()函数返回。exchange.GetOrders()函数返回的是Order结构数组或空数组,如果当前没有未完成的订单,则返回[]即空数组。Order订单结构的Status属性可以直接与ORDER_STATE_PENDING等常量进行比较,判断是否相等从而确定订单状态。

商品期货CTP协议/易盛协议中Order结构字段AvgPrice数据由成交回报计算得出。一旦策略实盘停止,成交回报数据将会丢失,之后无法计算出该字段数据,该字段值将为0。如果策略一直处于运行状态,订单Order结构字段AvgPrice会正常显示。

市场深度中的订单簿结构。

属性

名称类型描述

Price

number

订单价格。

Amount

number

订单数量。

参考

备注

exchange.GetDepth()函数返回的数据结构中,Bids、Asks属性值为OrderBook数组。

市场深度数据结构。

属性

名称类型描述

Info

object

交易所接口返回的原始数据,回测时无此属性。

Asks

array

卖单数组,即OrderBook数组,按价格从低到高排序,数组中第一个OrderBook结构的Price最低。

Bids

array

买单数组,即OrderBook数组,按价格从高到低排序,数组中第一个OrderBook结构的Price最高。

Time

number

毫秒级时间戳。

参考

备注

exchange.GetDepth()函数返回一个Depth结构。

账户信息的数据结构。

属性

名称类型描述

Info

object

交易所接口返回的原始数据,回测时无此属性。

Balance

number

账户可用资产余额。

FrozenBalance

number

未成交订单冻结的资产数值。

Equity

number

账户权益,包含可用资产余额、持仓保证金、持仓盈亏等。

UPnL

number

所有持仓的未实现盈亏。

参考

备注

exchange.GetAccount()函数返回Account结构体。

合约仓位信息的数据结构。

属性

名称类型描述

Info

object

交易所接口返回的原始数据,回测时不包含此属性。

Symbol

string

合约代码。

MarginLevel

number

持仓杠杆大小,商品期货无法修改杠杆值。

Amount

number

持仓量。

FrozenAmount

number

仓位冻结量,即平仓订单未成交时临时冻结的仓位数量。

Price

number

持仓均价。

Profit

number

股票不支持此字段,商品期货显示盯市盈亏。

Type

number

仓位类型,参考PD_LONG, PD_SHORT, PD_LONG_YD, PD_SHORT_YD

ContractType

string

合约代码或股票代码,具体请参考exchange.SetContractType函数的描述内容。

Margin

number

仓位占用的保证金。

参考

备注

exchange.GetPositions()函数返回Position数组或空数组。

交易品种市场信息的数据结构

属性

名称类型描述

Symbol

string

合约代码、股票代码或交易品种代码。

BaseAsset

string

基础资产标识,商品期货固定为:FUTURES。

QuoteAsset

string

交易所的计价货币代码,商品期货为:CNY。

TickSize

number

最小价格变动单位,即价格的最小变动量。

AmountSize

number

下单数量的最小变动单位。

PricePrecision

number

订单价格的小数位精度。

AmountPrecision

number

订单数量的小数位精度。

MinQty

number

订单的最小下单数量。

MaxQty

number

订单的最大下单数量。

MinNotional

number

订单的最小成交金额。

MaxNotional

number

订单的最大成交金额。

CtVal

number

合约乘数。

CtValCcy

string

合约价值的计价货币,商品期货固定为:FUTURES。

Info

object

协议返回的原始数据信息,回测时不包含此字段。

参考

备注

exchange.GetMarkets()函数返回包含此Market结构的字典。

该JSON结构用于配置HttpQuery函数、HttpQuery_Go函数发送HTTP请求的各项参数。

属性

名称类型描述

method

string

请求方法,例如:GETPOST等。

body

string

请求体。例如在POST请求中,body可以包含表单数据、JSON、文本等。

charset

string

字符集编码。例如指定文本数据在body中的编码方式为:"UTF-8"

cookie

string

Cookie是一种用于在客户端(通常是浏览器)和服务器之间存储和交换状态信息的小型数据片段。

debug

bool

设置为true时,此次HttpQuery函数调用返回完整的响应报文。设置为false时仅返回响应报文Body中的数据。

headers

JSON

请求头信息,以键值对的形式存在(JSON结构),用于传递各种信息,如内容类型、认证信息、缓存控制等。

timeout

number

超时设置,设置1000表示1秒超时。

参考

备注

使用示例:

javascript
function main() { var options = { method: "POST", body: "a=10&b=20&c=30", charset: "UTF-8", cookie: "session_id=12345; lang=en", debug: false, headers: {"TEST-HTTP-QUERY": "123"}, timeout: 1000 } var ret = HttpQuery("http://127.0.0.1:8080", options) Log(ret) }

以上代码执行时发出的HTTP报文:

log
POST / HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cookie: session_id=12345; lang=en Host: 127.0.0.1:8080 Test-Http-Query: 123 Transfer-Encoding: chunked User-Agent: Mozilla/5.0 (Macintosh; ... Accept-Encoding: gzip, deflate, br e a=10&b=20&c=30 0

该JSON结构为HttpQuery函数调用时,在参数options结构中将debug字段设置为true后,HttpQuery函数在调试模式下返回的数据结构。

属性

名称类型描述

StatusCode

number

HTTP状态码

Header

JSON

请求头信息

Cookies

array

Cookie信息

Trace

JSON

请求的完整路径信息

Length

number

响应报文长度

Body

string

响应报文内容

参考

备注

返回的JSON数据结构示例:

json
{ "StatusCode": 302, "Header": { "Content-Type": ["text/html"], // ... }, "Cookies": [{ // ... }], "Trace": {}, "Length": 154, "Body": "..." }

该JSON结构用于配置策略状态栏中显示的表格内容。

属性

名称类型描述

type

string

用于设置要解析显示的UI控件类型,对于状态栏表格,固定设置为:table

title

string

用于设置状态栏表格的标题。

cols

array

用于设置状态栏表格的列标题,数组的第一个元素为第一列的标题,依此类推。

rows

array

用于设置状态栏表格的行数据。该rows数组为二维数组,其第一个元素也是数组结构,该数组结构的长度应与表格列数一致(数组中的元素与表格列名一一对应),即表格的第一行数据。

参考

备注

javascript
function main() { var tbl = { type: "table", title: "标题", cols: ["列1", "列2", "列3"], rows: [ ["行1列1", "行1列2", "行1列3"], ["行2列1", "行2列2", "行2列3"], ["行3列1", "行3列2", "行3列3"], ] } LogStatus("`" + JSON.stringify(tbl) + "`") }

该JSON结构用于配置状态栏中的按钮控件,按钮控件JSON结构可以嵌入到状态栏表格JSON结构中。此结构为旧版本结构,平台目前仍然兼容,建议使用最新版本的按钮JSON结构。
状态栏按钮控件构造示例(按钮触发点击后,弹框中包含单个输入控件,通过input字段构造):

json
{ "type": "button", "cmd": "open", "name": "开仓", "input": { "name": "开仓数量", "type": "number", "defValue": 1 } }

状态栏按钮控件点击触发后的弹框中的控件通过inputgroup字段设置。

属性

名称类型描述

type

string

对于按钮控件,固定设置为:button

class

string

按钮类型设置。

name

string

按钮控件上显示的文本,即按钮名称。

cmd

string

按钮控件触发点击操作时,发送给策略的交互命令内容。

description

string

按钮控件的描述信息。当鼠标悬停在状态栏中该按钮上时显示此描述信息。

disabled

bool

设置按钮为禁用(true)或启用(false)。

input

JSON

在构造状态栏按钮进行交互时支持输入数据,交互指令最终由GetCommand()函数捕获。在状态栏按钮控件的JSON数据结构中添加input项,用于配置按钮触发时显示的弹框中的输入控件。
例如,设置input字段值为:

json
{ "name": "开仓数量", "type": "number", "defValue": 1, "description": "test" }

上述JSON结构中各字段描述:

  • name
    状态栏按钮触发点击操作后,弹出的弹框中控件的标题。
  • description
    状态栏按钮触发点击操作后,弹出的弹框中控件的描述信息。
  • type
    状态栏按钮触发点击操作后,弹出的弹框中控件的类型。type字段可取以下值:
    1、"number":数值输入控件。
    2、"string":字符串输入控件。
    3、"selected":下拉框控件。
    4、"boolean":开关控件。
  • defValue
    状态栏按钮触发点击操作后,弹出的弹框中控件的默认值。
    如果是下拉框类型控件(selected),defValue字段用于设置下拉框选项,例如:"input": {"name": "开仓数量", "type": "selected", "defValue": "A|B|C"},下拉框选项的文本描述被设置为A、B、C。

对于下拉框类型控件的扩展字段:

  • options
    状态栏按钮控件触发的页面中的下拉框控件,可以使用options字段设置选项。options字段中的选项不仅支持字符串,还支持使用{text: "描述", value: "值"}结构。使用defValue字段设置默认选项,默认选项可以多选。
  • multiple
    当该字段设置为true时,支持下拉框多选。

group

array

input字段配置状态栏按钮触发点击后弹出的弹框中的单个控件,而group字段用于配置一组控件。group中的元素与input字段值的数据结构一致,请参考input字段的相关描述说明。

参考

备注

状态栏中按钮JSON结构的class属性取值示例:

javascript
function main() { var table = { type: "table", title: "状态栏按钮样式", cols: ["默认", "原始", "成功", "信息", "警告", "危险"], rows: [ [ {"type":"button", "class": "btn btn-xs btn-default", "name": "默认"}, {"type":"button", "class": "btn btn-xs btn-primary", "name": "原始"}, {"type":"button", "class": "btn btn-xs btn-success", "name": "成功"}, {"type":"button", "class": "btn btn-xs btn-info", "name": "信息"}, {"type":"button", "class": "btn btn-xs btn-warning", "name": "告警"}, {"type":"button", "class": "btn btn-xs btn-danger", "name": "危险"} ] ] } LogStatus("`" + JSON.stringify(table) + "`") }

group字段与input字段使用示例:

javascript
function main() { // 状态栏按钮控件(通过设置input字段实现)testBtn1按钮触发的页面中的下拉框控件使用options字段设置选项,使用defValue字段设置默认选项。与本章其他示例中直接使用defValue设置选项的方式不同。 var testBtn1 = { type: "button", name: "testBtn1", cmd: "cmdTestBtn1", input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1} } /* 状态栏按钮控件(通过设置input字段实现)testBtn2按钮触发的页面中的下拉框控件使用options字段设置选项,options字段中的选项不仅支持字符串, 还支持使用```{text: "描述", value: "值"}```结构。使用defValue字段设置默认选项,默认选项可以是多选(通过数组结构实现多选)。多选需要将额外的字段multiple设置为真值(true)。 */ var testBtn2 = { type: "button", name: "testBtn2", cmd: "cmdTestBtn2", input: { name: "testBtn2MultiComboBox", type: "selected", description: "实现下拉框多选", options: [{text: "选项A", value: "A"}, {text: "选项B", value: "B"}, {text: "选项C", value: "C"}], defValue: ["A", "C"], multiple: true } } // 状态栏分组按钮控件(通过设置group字段实现)testBtn3按钮触发的页面中的下拉框控件使用options字段设置选项,也支持直接使用defValue设置选项。 var testBtn3 = { type: "button", name: "testBtn3", cmd: "cmdTestBtn3", group: [ {name: "comboBox1", label: "labelComboBox1", description: "下拉框1", type: "selected", defValue: 1, options: ["A", "B"]}, {name: "comboBox2", label: "labelComboBox2", description: "下拉框2", type: "selected", defValue: "A|B"}, {name: "comboBox3", label: "labelComboBox3", description: "下拉框3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, { name: "comboBox4", label: "labelComboBox4", description: "下拉框4", type: "selected", defValue: ["A", "C"], multiple: true, options: [{text: "选项A", value: "A"}, {text: "选项B", value: "B"}, {text: "选项C", value: "C"}, {text: "选项D", value: "D"}] } ] } while (true) { LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n") var cmd = GetCommand() if (cmd) { Log(cmd) } Sleep(5000) } }

该JSON结构用于配置状态栏中的按钮控件,按钮控件JSON结构可以嵌入到状态栏表格JSON结构中。这是目前最新版本的按钮JSON结构。
状态栏按钮控件构造示例(按钮触发点击后,弹出框中包含多个输入控件,通过group字段构造):

json
{ "type": "button", "cmd": "open", "name": "开仓下单", "group": [{ "type": "selected", "name": "tradeType", "label": "下单类型", "description": "市价单、限价单", "default": 0, "group": "交易设置", "settings": { "options": ["市价单", "限价单"], "required": true, } }, { "type": "selected", "name": "direction", "label": "交易方向", "description": "买入、卖出", "default": "buy", "group": "交易设置", "settings": { "render": "segment", "required": true, "options": [{"name": "买入", "value": "buy"}, {"name": "卖出", "value": "sell"}], } }, { "type": "number", "name": "price", "label": "价格", "description": "订单的价格", "group": "交易设置", "filter": "tradeType==1", "settings": { "required": true, } }, { "type": "number", "name": "amount", "label": "下单量", "description": "订单的下单量", "group": "交易设置", "settings": { "required": true, } }], }

状态栏按钮控件点击触发后弹出框中的控件通过inputgroup字段进行设置。

属性

名称类型描述

type

string

对于按钮控件,固定设置为:button

name

string

按钮控件上显示的文本,即按钮名称。

cmd

string

按钮控件被点击时,发送给策略的交互命令内容。

input

JSON

在构造状态栏按钮进行交互时支持输入数据配置,交互指令最终由GetCommand()函数捕获。在状态栏按钮控件的JSON数据结构中增加input项,用于配置按钮触发时弹出对话框中的输入控件。
相对于旧版本的input结构,新版本增加了一些字段并进行了改动:

json
{ "type": "selected", "name": "test", "label": "topic", "description": "desc", "default": 1, "filter": "a>1", "group": "group1", "settings": { ... }, // 组件配置 }

以上JSON结构中各字段的描述和说明:

  • type
    控件类型(必填字段),支持设置为:"number"数值输入框、"string"字符串输入框、"selected"下拉框、"boolean"开关控件。
  • name
    如果当前JSON结构是input字段的值,当未设置label字段时,name将作为状态栏按钮点击触发后弹出对话框中的控件标题。
    如果当前JSON结构是group字段值(数组结构)中的一个元素,name不作为控件标题使用,而是用于表示控件输入内容的字段名。例如以下group字段的示例片段:
    json
    var testBtn3 = { type: "button", name: "testBtn3", cmd: "cmdTestBtn3", group: [ {name: "comboBox1", label: "labelComboBox1", description: "下拉框1", type: "selected", defValue: 1, options: ["A", "B"]}, {name: "comboBox2", label: "labelComboBox2", description: "下拉框2", type: "selected", defValue: "A|B"}, {name: "comboBox3", label: "labelComboBox3", description: "下拉框3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, { name: "comboBox4", label: "labelComboBox4", description: "下拉框4", type: "selected", defValue: ["A", "C"], multiple: true, options: [{text: "选项A", value: "A"}, {text: "选项B", value: "B"}, {text: "选项C", value: "C"}, {text: "选项D", value: "D"}] } ] }
    根据此示例,当状态栏按钮触发交互时,将弹出包含4个下拉框控件的对话框。设置好各控件的选项并点击确定发送交互消息后,策略中的GetCommand函数将接收到cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
    JSON结构中name的值都作为返回交互信息的字段名,例如:comboBox1、comboBox2等。
  • label
    用于设置控件的标题。
  • description
    控件的描述信息。如果当前JSON结构是group字段值(数组结构)中的一个元素,当未设置label字段时,description将作为状态栏按钮点击触发后弹出对话框中的控件标题。
  • default
    控件的默认值。
  • filter
    选择器,用于控制控件的显示与隐藏。不设置该字段表示不过滤(显示控件);设置该字段时,当表达式为真时不过滤(显示控件),当表达式为假时过滤(不显示控件)。
  • group
    用于控制控件分组,支持折叠显示。
  • settings
    组件配置,控件有多种UI样式可供选择,通过此选项进行具体设置。例如:
    json
    settings:{ multiple:true, customizable:true, options:[{name:'xxx|yyy',value:0}] }
    settings相关设置:
    settings.required:是否为必填项。
    settings.disabled:是否禁用。
    settings.min:type=number时有效,表示最小值或字符串最小长度。
    settings.max:type=number时有效,表示最大值或字符串最大长度。
    settings.step:type=number且render=slider时有效,表示步长。
    settings.multiple:type=selected时有效,表示支持多选。
    settings.customizable:type=selected时有效,表示支持自定义;用户可以直接在下拉框控件中编辑添加新选项,如果选中新编辑的选项,在触发交互时将使用该选项的名称而非其代表的值。
    settings.options:type=selected时有效,表示选择器的选项数据格式:["选项1","选项2"]、[{'name':'xxx','value':0}, {'name':'xxx','value':1}]。
    settings.render:渲染组件类型。
    type=number时,settings.render不设置(默认为数字输入框),可选:slider(滑动条)、date(时间选择器,返回时间戳)。
    type=string时,settings.render不设置(默认为单行输入框),可选:textarea(多行输入)、date(时间选择器,返回yyyy-MM-dd hh:mm:ss格式)、color(颜色选择器,返回#FF00FF格式)。
    type=selected时,settings.render不设置(默认为下拉框),可选:segment(分段选择器)。
    type=boolean时,目前仅支持默认复选框。

group

array

input字段配置状态栏按钮触发点击后弹出的对话框中的一个控件,groupinput的区别在于其配置的是一组控件,group中的元素与input字段值的数据结构保持一致,请参考上述input字段的相关描述说明。

参考

备注

支持双语设置:

json
{ type:'selected', name:'test', label:'选项|options', description:'描述|description', default:0, // 此处default默认值设置为0,表示{name:'xxx|yyy',value:0}选项中的value值 filter:'a>1&&a<10', group:'分组|group', settings:{ multiple:true, customizable:true, options:[{name:'xxx|yyy',value:0}] } }

此JSON用于配置自定义绘图函数Chart()的图表设置信息,图表库采用Highcharts。此处仅列出几个基本配置字段。

属性

名称类型描述

__isStock

string

平台扩展字段。设置为true时,使用Highstocks图表;设置为false时,使用Highcharts图表。

extension

JSON

json
{ layout: 'single', // 不参与分组,单独显示,默认为分组模式 'group' height: 300, // 指定高度 }

title

string

图表标题

xAxis

JSON

X轴配置。

yAxis

JSON

Y轴配置。

series

JSON

图表数据系列。

参考

备注

简单的绘图示例:

javascript
// 在JavaScript语言中,chart是一个对象。在使用Chart函数之前,需要先声明一个用于配置图表的对象变量chart var chart = { // 该字段标记图表是否为股票图表,可以尝试改为false运行查看效果 __isStock: true, // 缩放工具 tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'}, // 标题 title : { text : '差价分析图'}, // 选择范围 rangeSelector: { buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}], selected: 0, inputEnabled: false }, // 坐标轴横轴(X轴),当前设置的类型为时间 xAxis: { type: 'datetime'}, // 坐标轴纵轴(Y轴),默认数值随数据大小自动调整 yAxis : { // 标题 title: {text: '差价'}, // 是否启用右侧纵轴 opposite: false }, // 数据系列,该属性保存各个数据系列(线、K线图、标签等) series : [ // 索引为0,data数组内存储该索引系列的数据 {name : "line1", id : "线1,buy1Price", data : []}, // 索引为1,设置了dashStyle:'shortdash',即设置为虚线 {name : "line2", id : "线2,lastPrice", dashStyle : 'shortdash', data : []} ] } function main(){ // 调用Chart函数,初始化图表 var ObjChart = Chart(chart) // 清空图表 ObjChart.reset() while(true){ // 获取本次轮询的时间戳(毫秒级时间戳),用于确定写入图表X轴的位置 var nowTime = new Date().getTime() // 获取行情数据 var ticker = _C(exchange.GetTicker) // 从行情数据的返回值中获取买一价 var buy1Price = ticker.Buy // 获取最后成交价,为避免两条线重合,加1处理 var lastPrice = ticker.Last + 1 // 使用时间戳作为X值,买一价作为Y值,传入索引0的数据序列 ObjChart.add(0, [nowTime, buy1Price]) // 同上 ObjChart.add(1, [nowTime, lastPrice]) Sleep(2000) } }

该JSON用于配置自定义绘图函数KLineChart的图表参数。此处仅列出几个基本配置字段。

属性

名称类型描述

overlay

bool

是否叠加在主图上。

xAxis

JSON

X轴配置参数。

yAxis

JSON

Y轴配置参数。

candle

JSON

K线图配置参数。

参考

备注

参见使用KLineChart函数绘图的专题文章

该JSON用于设置exchange.SetData()函数所要加载的数据。该JSON数据为数组结构,其中每个元素也是一个数组,即[time, data]

属性

名称类型描述

time

number

数据的时间戳,标记该条数据(data)的时间。

data

string / number / bool / object / array 等。

data是exchange.SetData()函数加载的数据中某个时间对应的一条数据内容。策略运行时,exchange.GetData()函数根据当前时间获取对应时间戳的数据。

参考

备注

回测系统中加载数据,策略回测运行时获取数据的示例:

javascript
/*backtest start: 2020-01-21 00:00:00 end: 2020-02-12 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] */ function main() { exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]]) while(true) { Log(exchange.GetData("test")) Sleep(1000 * 60 * 60 * 24) } }

该JSON是EventLoop()函数返回的数据结构。EventLoop()函数监听以下事件:1、任意WebSocket的可读数据事件;2、HttpQuery_Go()函数并发任务的完成事件;3、JavaScript语言策略中通过threading.Thread()函数创建的线程发送的消息事件。

属性

名称类型描述

Seq

number

事件序列号。

Event

string

事件名称。

ThreadId

number

事件线程ID。

Index

number

事件索引。

Nano

number

纳秒时间戳。

参考

备注

在JavaScript语言策略中,当并发执行的线程(通过threading.Thread()函数创建)使用线程对象的postMessage()函数发送消息时,接收消息的线程中EventLoop()函数会监听到以下事件数据结构:

json
{ "Seq":4, "Event":"thread", "ThreadId":1, "Index":0, "Nano":1727592066508674000 }

该JSON是DBExec()函数返回的数据结构;使用Dial()函数创建的对象的exec()方法执行SQL语句时,也会返回该JSON数据结构。

属性

名称类型描述

columns

array

查询数据的列名,为字符串数组。

values

array

查询的具体数据,其中每条数据与列名一一对应。values字段的值是一个二维数组,其中每个元素为一个数组,代表一条数据记录。

参考

备注

查询数据库中的数据示例:

json
{ "columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"], "values":[ [1518970320000,100,99.1,90,100,12345.6], [1518960320000,100,99.1,90,100,12345.6] ] }

该JSON是Thread对象的成员函数join()返回的数据结构,保存了JavaScript语言策略中并发线程的相关信息。Thread对象指线程对象,通过threading.Thread()方法创建。

属性

名称类型描述

id

number

线程ID。

terminated

bool

线程是否被强制终止。

elapsed

number

线程的运行时间(纳秒)。

ret

number

线程函数的返回值。

参考

备注

以下代码测试Thread对象的join()函数的超时机制,并打印输出join()函数的返回值。

javascript
function testFunc() { for (var i = 0; i < 5; i++) { Log(i) Sleep(300) } } function main() { var t1 = threading.Thread(testFunc) Log(t1.join(1000)) // undefined Log(t1.join()) // {"id":1,"terminated":false,"elapsed":1506864000} }