以下策略脚本生命周期接口 用户可以根据功能需要 自行灵活实现 不需要的接口 可以不声明和实现
脚本加载到图表后触发此函数
async function create() {
// ...
}
当前图表标的或周期更切换时触发此函数
/**
*
* @param {string} symbol - 当前图表浏览标的代码
* @param {string} level - K线周期 (sec5、sec15、sec30、min1、min5、min15、min30、min60、min120、min240、day、week、month)
* @return {void}
*/
async function update(symbol, level) {
// ...
}
脚本停用从图表卸载后触发此函数
async function destroy() {
// ...
}
毫秒级别tick推送时更新 (注意此接口为高频回调接口 不要在此接口处理耗时或打印操作)
/**
*
* @param {string} symbol - 当前图表浏览标的代码
* @param {object} ohlcv - TICK数据对象 (格式 { open: xxxx.xx, high: xxxx.xx, low: xxxx.xx, close: xxxx.xx, volume: xxxxxxx })
* @return {void}
*/
async function tick(symbol, ohlcv) {
// ...
}
当前标的周期K线更新时触发 (单个K线周期内3~10s更新一次)
/**
*
* @param {string} symbol - 当前图表浏览标的代码
* @param {string} level - K线周期 (sec5、sec15、sec30、min1、min5、min15、min30、min60、min120、min240、day、week、month)
* @param {Kline[]} klines - K线数据对象 (格式 { day: 'YYYY-MM-DD HH:mm:ss' | 'YYYY-MM-DD', open: xxxx.xx, high: xxxx.xx, low: xxxx.xx, close: xxxx.xx, volume: xxxxxxx })
* @param {object} twist - 壹缠数据对象 (笔段中枢走势数据 详见后表)
* @param {array} echartsCustomSeries - 图表绘图配置数组 (详见 https://echarts.apache.org/zh/option.html#series)
* @return {void}
*/
async function kline(symbol, level, klines, twist, echartsCustomSeries) {
// ...
}
{
// 历史笔段走势结构
struct: {
typing: [Typing], // 分型数据
stroke: [Stroke], // 笔数据
segment: [Segment], // 段数据
trend: [Trend], // 走势数据
strokebox: [StrokeBox], // 笔中枢数据
segmentbox: [SegmentBox], // 段中枢数据
},
// 当前笔段走势结构 (即最后一笔段走势状态)
state: {
typing: Typing, // 分型数据
stroke: Stroke, // 笔数据
segment: Segment, // 段数据
trend: Trend, // 走势数据
strokebox: StrokeBox, // 笔中枢数据
segmentbox: SegmentBox, // 段中枢数据
},
// 当前笔段买卖点状态
trade: {
stroke: TradePoint,
segment: TradePoint,
}
}
class TradePoint {
// 买卖点类型 1、2、3 即三类买卖点标识
type: null,
// 交易方向 'up' | 'down'
direction: null,
// 是否确认 (买卖点未确认前为准备状态)
isConfirm: false,
// 时间戳 (当前买卖点笔段时间戳)
timestamp: null,
// 买卖点说明 如 1买准备、3买确认等
tip: '',
}
class Typing {
// 类型 'top' | 'bottom'
type
// 分型顶点
point = [ 'day', 'value' ]
// 分型顶点K线
kline
// 分型顶点K线索引
kindex
// 提示信息 (背驰|小转大|MACD|买卖点| ...)
tip
// 索引值
index
// 时间戳
timestamp
}
class Stroke {
// 方向 'up' | 'down'
type
// 起始分型
styping
// 结束分型
etyping
// 提示信息 (背驰|小转大|买卖点| ...)
tip
// MACD值
macd
// 索引值
index
// 时间戳
timestamp
}
export class Segment {
// 方向 'up' | 'down'
type
// 起始笔
sstroke
// 结束笔
estroke
// 笔中枢集合
box = []
// 提示信息 (背驰|小转大|MACD|买卖点| ...)
tip
// MACD值
macd
// 索引值
index
// 时间戳
timestamp
}
export class Trend {
// 方向 'up' | 'down'
type
// 起始段
sstroke
// 结束段
estroke
// 段中枢集合
box = []
// 提示信息 (背驰|小转大|MACD|买卖点| ...)
tip
// MACD值
macd
// 索引值
index
// 时间戳
timestamp
}
class Box {
// 方向 'up' | 'down'
type
// 中枢区间
range = {
// 中枢上沿
top: 0,
// 中枢下沿
bottom: 0,
// 中枢最高点 (在中枢外)
high: 0,
// 中枢最低点 (在中枢外)
low: 0,
}
// 起始段
ssegment
// 结束段
esegment
// 中枢段集合
segments = []
// 是否为扩张中枢
isExpand
// 是否为更大级别中枢(中枢段数量大于9)
isLevelUp
// 提示信息 (扩张|九段| ...)
tip
// 索引值
index
// 时间戳
timestamp
}
用户可以根据绘图需要 扩展此配置数组 详见 https://echarts.apache.org/zh/option.html#series
示例 (图表增加10日均线)
echartsCustomSeries.push({
name: "MA10",
type: "line",
symbol: "none",
data: [均线数据],
lineStyle: {
color: '#fc97af',
width: 1,
},
emphasis: {
lineStyle: {
width: 1,
}
},
})
更多配置示例 可参见 壹缠策略脚本编辑器 -> 示例脚本
/**
*
* @param {number[]} close - K线收盘价数组
* @param {number} n - 均线周期值
* @return {number[]} 均线数据数组
*/
indicator.ma(close, n)
/**
*
* @param {number[]} close - K线收盘价数组
* @param {number} fast - 短周期值 (默认值 12)
* @param {number} slow - 长周期值 (默认值 26)
* @param {number} mid - 移动平均周期值 (默认值 9)
* @return { dif: number[], dea: number[], bar: number[] } MACD数据对象
*/
indicator.macd(close, fast = 12, slow = 26, mid = 9)
/**
*
* @param {number[]} close - K线收盘价数组
* @param {number} size - 均线周期值 (默认值 20)
* @param {number} times - 标准差倍数 (默认值 2)
* @return { upper: number[], mid: number[], lower: number[] } BOLL数据对象
*/
indicator.boll(close, size = 20, times = 2)
/**
*
* @param {string} url - 目标数据接口地址
* @return {Promise}
*/
http.get(url)
/**
*
* @param {string} url - 目标数据接口地址
* @param {object|string} data - 提交的数据信息 (可选)
* @param {function} callback - 请求成功时执行的回调函数 (可选)
* @param {string} dataType - 预期的服务器响应的数据类型 (可选 包括xml、json、script 或 html)
* @return {Promise}
*/
http.post(url, data, callback, dataType)
示例
const rsp1 = await http.get('https://example.com/')
const rsp2 = await http.post('https://example.com/', { test: 'test' })
/**
*
* @param {string} url - 目标webhook接口地址 (默认已支持企业微信webhook地址)
* @param {object|string} data - 推送的数据信息
* @return {void}
*/
webhook.notification(data, url)
注意: 使用此接口请务必确保已安装壹缠插件 详见 (https://one-quant.com/plugin/壹缠浏览器插件安装说明.pdf)
聚宽目前支持沪深市场和国内期货市场(期货主力合约以9999标识和具体月份合约区分) 证券代码格式说明如下:
交易市场 | 代码后缀 | 示例代码 | 证券简称 |
---|---|---|---|
上海证券交易所 | .XSHG | 600519.XSHG | 贵州茅台 |
深圳证券交易所 | .XSHE | 000001.XSHE | 平安银行 |
中金所 | .CCFX | IC9999.CCFX | 中证500主力合约 |
大商所 | .XDCE | A9999.XDCE | 豆一主力合约 |
上期所 | .XSGE | AU9999.XSGE | 黄金主力合约 |
郑商所 | .XZCE | CY8888.XZCE | 棉纱期货指数 |
上海国际能源期货交易所 | .XINE | SC9999.XINE | 原油主力合约 |
/**
*
* @param {string} mobile - 聚宽账户
* @param {string} password - 聚宽密码
* @return {void}
*/
joinquant.setAccount(mobile, password)
/**
*
* @param {string} symbol - 聚宽标的代码 (格式说明: 上交所 xxxxxx.XSHG 深交所 xxxxxx.XSHE)
* @param {string} level - K线周期 (min1、min5、min15、min30、min60、min120、day、week、month)
* @param {number} length - 拉取的K线数量 (默认1024 最大值5000)
* @return {Promise<Kline[]>} K线对象数组 (Kline对象格式 { day: 'YYYY-MM-DD HH:mm:ss' | 'YYYY-MM-DD', open: xxxx.xx, high: xxxx.xx, low: xxxx.xx, close: xxxx.xx, volume: xxxxxxx })
*/
joinquant.captureKline(symbol, level, length = 1024)
示例 (获取近30交易日上证指数日K线数据)
joinquant.setAccount('聚宽账户', '聚宽密码')
const klines = await joinquant.captureKline('000001.XSHG', 'day', 30)
当level是week或month时,第一条数据是开始时间date所在的周或月的行情。当level为分钟时,第一条数据是开始时间date所在的一个level切片的行情。 最大获取1000个交易日数据
/**
*
* @param {string} symbol - 聚宽标的代码 (格式说明: 上交所 xxxxxx.XSHG 深交所 xxxxxx.XSHE)
* @param {string} level - K线周期 (min1、min5、min15、min30、min60、min120、day、week、month)
* @param {string} sdate - 起始时间 YYYY-MM-DD HH:mm:ss
* @param {string} edate - 截止时间 YYYY-MM-DD HH:mm:ss
* @return {Promise<Kline[]>} K线对象数组 (Kline对象格式 { day: 'YYYY-MM-DD HH:mm:ss' | 'YYYY-MM-DD', open: xxxx.xx, high: xxxx.xx, low: xxxx.xx, close: xxxx.xx, volume: xxxxxxx })
*/
joinquant.captureHistroyKline(symbol, level, sdate, edate)
示例 (获取 2020-07-01 ~ 2020-07-30 交易日上证指数日K线数据)
joinquant.setAccount('聚宽账户', '聚宽密码')
const klines = await joinquant.captureHistroyKline('000001.XSHG', 'day', '2020-07-01 00:00:00', '2020-07-30 00:00:00')
使用聚宽接口请务必确保已安装壹缠插件 详见 (https://one-quant.com/plugin/壹缠浏览器插件安装说明.pdf)
UI提示信息默认展示在图表正上方位置, 多个提示同时出现会自上而下依序展示。
/**
*
* @param {string} text - 消息提示信息
* @return {void}
*/
toast.info(text)
/**
*
* @param {string} text - 消息提示信息
* @return {void}
*/
toast.warn(text)
/**
*
* @param {string} text - 消息提示信息
* @return {void}
*/
toast.error(text)
浏览器DevTools(F12快捷键 -> Console) 调试信息接口,用于在脚本开发过程中打印执行信息、确定错误异常代码位置.
/**
*
* @param {object|string} msg - 日志打印信息
* @return {void}
*/
log.info(msg)
/**
*
* @param {object|string} msg - 日志打印信息
* @return {void}
*/
log.warn(msg)
/**
*
* @param {object|string} msg - 日志打印信息
* @return {void}
*/
log.errr(msg)
注意: 频繁打印日志信息 可能会影响浏览器性能 脚本开发完成后 请屏蔽不需要的日志打印信息