dsxkline K线图帮助文档

  1. 主页
  2. 文档
  3. dsxkline K线图帮助文档
  4. 自定义指标

自定义指标

自定义指标有两种方式,一种是自定义指标数据,一种是自定义指标算法

1、自定义指标数据

自定义指标数据就是说只需要给指标数据就行,不需要前端写算法之类的,这种方式比较灵活,计算指标的任务可以放在后端等,前端只需要加载指标数据即可。

不管是自定义指标数据还是算法,定义指标之前都是需要先配置指标的,配置指标有四个属性是必须要设置的。

  1. 指标名称
  2. 指标绘制方式,画线还是画点还是画柱状图等
  3. 指标支持的图表类型,是蜡烛图还是折线图
  4. 指标显示的位置,主图还是副图

配置好指标后,把对应的指标数据一起交给函数 kline.installIndex 即可安装好指标。

示例

/*********************************************************
* 1、自定义指标数据
* 这里演示自定义指标的创建方法
* 指标数据需要预先计算好并与K线数据一一对应
* ********************************************************/
// 指标名称
var _name = "MYMA"
// 指标线的绘制方式
var _draws = {MA6:{model:'line',color:'#ff0000'},MA12:{model:'line',color:'blue'}}
// 指标支持显示的图表类型,这里是蜡烛图
var _charTypes = [dsxConfig.chartType.candle]
// 指标显示在那个位置 主图 main 幅图 sides
var _location = ['sides']
// 自定义指标的数据,需要跟K线数据对应
var _datas = [];
// 这里演示指标的数据计算,具体的计算可以后台实现,也可以前端实现
datas.forEach(element => {
    var item = element.split(",")
    var MA6 = (parseFloat(item[2])+parseFloat(item[3])) / 2;
    var MA12 = (parseFloat(item[1])+parseFloat(item[4])) / 2;
    // 每个指标线的数据计算结果
    _datas.push({MA6:MA6,MA12:MA12});
});
// 最后一步安装指标
kline.installIndex(_name,_draws,_datas,_charTypes,_location);

2、自定义指标算法

自定义算法这个需要熟悉一下框架才行,不过也很简单,只需要把算法写在一个帧函数里即可,帧函数意思是每根K线都会调用的一个函数。

函数里面可以调用一些基数函数,比如 this.MAX,MIN,EMA,MA,MACD,KDJ等,具体可以打印下看看

示例

/*********************************************************
* 2、自定义指标算法
* 放在创建k线图后面即可
* ********************************************************/
var _name2 = "MYABC"
// 指标线的绘制方式
var _draws2 = {MA10:{model:'line',color:'#ff0000'},MA30:{model:'line',color:'blue'}}
// 指标支持显示的图表类型,这里是蜡烛图
var _charTypes2 = [dsxConfig.chartType.candle]
// 指标显示在那个位置 主图 main 幅图 sides
var _location2 = ['sides']
// 指标算法函数
var _func = function(){
    // 取得当前坐标数据
    var item = this.datas[this.day];
    // 初始化指标
    if (item.ZHIBIAO[_name2] == null)
        item.ZHIBIAO[_name2] = {};
    // 开始计算指标值,这里我们计算个均线指标吧
    var N = 10;
    var amount = 0;
    for(var i=Math.max(this.day-N+1,0);i<=this.day;i++){
        var subitem = this.datas[i];
        amount += subitem.CLOSE;
    }
    var MA10 = amount / N;
    N = 30;
    amount = 0;
    for(var i=Math.max(this.day-N+1,0);i<=this.day;i++){
        var subitem = this.datas[i];
        // 这里模型数据里有K线所有的字段值可以引用
        amount += subitem.CLOSE;
    }
    var MA30 = amount / N;
    // 保存指标值
    item.ZHIBIAO[_name2]["MA10"] = MA10;
    item.ZHIBIAO[_name2]["MA30"] = MA30;
}
// 创建自定义指标算法
kline.createIndex(_name2,_draws2,_func,_charTypes2,_location2);
这篇文章对您有用吗?

我们要如何帮助您?