插件示例
插件可以在一段时间内执行代码,完成一些简单的操作,例如冰山委托、挂单、撤单、计算等。插件用return返回结果,返回表格、图表对象时直接显示为表格、图表。下面是两个例子,更多范例可以在策略广场中查找,例如逐笔小量买入/卖出。
返回深度快照
以表格显示当前盘口前15档:
javascript
// 返回深度快照
function main() {
var tbl = {
type: 'table',
title: '深度快照 @ ' + _D(),
cols: ['#', 'Amount', 'Ask', 'Bid', 'Amount'],
rows: []
}
var d = exchange.GetDepth()
var n = Math.min(d.Asks.length, d.Bids.length, 15)
for (var i = 0; i < n; i++) {
tbl.rows.push([i, d.Asks[i].Amount, d.Asks[i].Price + '#ff0000', d.Bids[i].Price + '#0000ff', d.Bids[i].Amount])
}
return tbl
}
画跨期差价
期货交易所对象上,取季度合约与当周合约的5分钟K线,画出收盘价差:
javascript
// 画跨期差价
var chart = {
__isStock: true,
title: {text: '差价分析图'},
xAxis: {type: 'datetime'},
yAxis: {
title: {text: '差价'},
opposite: false
},
series: [
{name: "diff", data: []}
]
}
function main() {
exchange.SetContractType('quarter')
var recordsA = exchange.GetRecords(PERIOD_M5)
exchange.SetContractType('this_week')
var recordsB = exchange.GetRecords(PERIOD_M5)
var n = Math.min(recordsA.length, recordsB.length)
for (var i = 0; i < n; i++) {
var a = recordsA[recordsA.length - n + i]
var b = recordsB[recordsB.length - n + i]
chart.series[0].data.push([a.Time, a.Close - b.Close])
}
return chart
}