K线图如何对接第3方数据19

首页 > 财经 > 正文 2021-06-04

发表自话题:怎么画k线图

HQChart使用教程30-K线图如何对接第3方数据19-如何绘制彩色K线柱

需求步骤1. 配置一个第3方指标2. 配置NetworkFilter3. 对接自己的指标数据彩色K线数据格式name:Color:DrawDataKLine完成实例代码如果还有问题可以加交流QQ群: 950092318HQChart代码地址

需求

我们需要在某几天的K线使用不同颜色来显示,已达到醒目的效果
效果图如下

步骤

1. 配置一个第3方指标

使用SetOption 来配置一个第3方指标
这里我把这个指标取名为"彩色K线"

//K线配置信息 this.Option= { Type:'历史K线图', //创建图形类型 Windows: //窗口指标 [ //{Index:"EMPTY"}, { Index:'彩色K线', API: { Name:'彩色K线', Script:null, Args:null, Url:'http://127.0.0.1:18080/api/jsindex' } }, {Index:"VOL", Modify:true,Change:false}, ], .......

2. 配置NetworkFilter

我们通过NetworkFilter网络协议回调来截获‘APIScriptIndex::ExecuteScript’这个指标协议

this.Option.NetworkFilter=(data, callback) => { this.NetworkFilter(data, callback); } , //绑定网络协议回调 this.Chart.SetOption(this.Option); //设置K线配置 ......... this.NetworkFilter=function(data, callback) { console.log('[KLineChart::NetworkFilter] data', data); switch(data.Name) { case 'APIScriptIndex::ExecuteScript': //处理指标 console.log('[KLineChart::NetworkFilter] index name ',data.Request.Data.indexname); this.Re(data,callback); break; } }

3. 对接自己的指标数据

把自己的指标数据转成hqchart指标数据, 把通过回调传给hqchart.

彩色K线数据格式

name:

固定填 “COLOR_KLINE”

Color:

K线默认颜色, 如果下面单个K线不设置颜色 就使用这个颜色

DrawData

彩色K数据

KLine

需要设置彩色K线的数组
Date: 日期
Time: 时间 (分钟K线才使用)
Color:K线颜色 ,如果不填 就使用外层Color颜色

var colorKlineData= { name:'COLOR_KLINE', type:1, Draw: { DrawType:"COLOR_KLINE", Color:'rgb(255,0,255)', //默认颜色 DrawData: { KLine: [ {Date:20190916, Color:'rgb(255,140,0)'}, //Color 可选, 不设置 使用外层Color颜色 {Date:20190919, Color:'rgb(0,0,255)'}, {Date:20190909, Color:'rgb(72,61,139)'}, {Date:20200303 }, {Date:20200304 }, {Date:20200305 }, ] } } }

完成实例代码

这个实例有2组数据 一个组图标一个组彩色K线
demo页面

K线图-彩色K线 //JSConsole.Chart.Log=() =>{} //JSConsole.Complier.Log=()=>{} /* MARKET_SUFFIX_NAME.GetMarketStatus = function (symbol) { return 2; } */ //简单的把K线控件封装下 function KLineChart(divKLine) { this.DivKLine=divKLine; this.Chart=JSChart.Init(divKLine); //把K线图绑定到一个Div上 this.Barrage; //弹幕输出控制器 //K线配置信息 this.Option= { Type:'历史K线图', //创建图形类型 Windows: //窗口指标 [ //{Index:"EMPTY"}, { Index:'彩色K线', API: { Name:'彩色K线', Script:null, Args:null, Url:'http://127.0.0.1:18080/api/jsindex' } }, {Index:"VOL", Modify:true,Change:false}, ], Symbol:'600000.sh', IsAutoUpdate:true, //是自动更新数据 AutoUpdateFrequency:3000, //数据更新频率 //TradeIndex: {Index:'交易系统-BIAS'}, //交易系统 IsShowRightMenu:true, //右键菜单 IsShowCorssCursorInfo:true, //是否显示十字光标的刻度信息 //CorssCursorTouchEnd:true, KLine: //K线设置 { DragMode:1, //拖拽模式 0 禁止拖拽 1 数据拖拽 2 区间选择 Right:1, //复权 0 不复权 1 前复权 2 后复权 Period:0, //周期 0 日线 1 周线 2 月线 3 年线 MaxRe:1000, //数据个数 MaxRe:10, //分钟数据取5天 PageSize:50, //一屏显示多少数据 //Info:["互动易","大宗交易",'龙虎榜',"调研","业绩预告","公告"], //信息地雷 IsShowTooltip:true, //是否显示K线提示信息 DrawType:0, //K线类型 0=实心K线柱子 1=收盘价线 2=美国线 3=空心K线柱子 4=收盘价面积图 //FirstShowDate:20161201, KLineDoubleClick:false, //禁止双击弹框 }, KLineTitle: //标题设置 { IsShowName:true, //不显示股票名称 IsShowSettingInfo:true //不显示周期/复权 }, Border: //边框 { Left:5, //左边间距 Right:60, //右边间距 Bottom:25, //底部间距 Top:25 //顶部间距 }, Frame: //子框架设置 [ {SplitCount:3,StringFormat:0, IsShowLeftText:false}, {SplitCount:2,StringFormat:0, IsShowLeftText:false, }, {SplitCount:2,StringFormat:0, IsShowLeftText:false} ], ExtendChart: //扩展图形 [ //{Name:'KLineTooltip' } //手机端tooltip ], Overlay: [ // {Symbol:'399300.sz', DrawType:1, Color:'rgb(0,0,255)'} ], }; this.Create=function() //创建图形 { var self=this; $(window).resize(function() { self.OnSize(); }); //绑定窗口大小变化事件 var blackStyle=H.GetStyleConfig(STYLE_TYPE_ID.BLACK_ID); //读取黑色风格配置 //JSChart.SetStyle(blackStyle); //this.DivKLine.style.backgroundColor=blackStyle.BGColor; //设置最外面的div背景 this.Option.NetworkFilter=(data, callback) => { this.NetworkFilter(data, callback); } , //绑定网络协议回调 this.OnSize(); //让K线全屏 this.Chart.SetOption(this.Option); //设置K线配置 } this.OnSize=function() //自适应大小调整 { var height= $(window).height(); var width = $(window).width(); this.DivKLine.style.top='px'; this.DivKLine.style.left='px'; this.DivKLine.style.width=width+'px'; this.DivKLine.style.height=height+'px'; this.Chart.OnSize(); } this.NetworkFilter=function(data, callback) { console.log('[KLineChart::NetworkFilter] data', data); switch(data.Name) { case 'APIScriptIndex::ExecuteScript': //处理指标 console.log('[KLineChart::NetworkFilter] index name ',data.Request.Data.indexname); this.Re(data,callback); break; } } this.Re=function(data,callback) { var request=data.Request; if (request.Data.indexname!='彩色K线') return; var hqchart=data.HQChart; //var kData=hqchart.ChartPaint[0].Data; //var closeLine={name:'收盘价线', type:0, data:kData.GetClose() }; var svgData= { name:'MULTI_SVGICON', type:1, Draw: { DrawType:'MULTI_SVGICON', DrawData: { Family:'js-iconfont', Icon: [ { Date:20190916, Value:12.5, Symbol:'\ue611', Color:'rgb(240,0,0)', Baseline:1 }, //0 居中 1 上 2 下 { Date:20190919, Value:11.3, Symbol:'\ue615', Color:'rgb(240,240,0)',Baseline:2 }, { Date:20190909, Value:11.4, Symbol:'\ue615', Color:'rgb(240,100,30)'} ] } } //绘制图标数组 }; var colorKlineData= { name:'COLOR_KLINE', type:1, Draw: { DrawType:"COLOR_KLINE", Color:'rgb(255,0,255)', //默认颜色 DrawData: { KLine: [ {Date:20190916, Color:'rgb(255,140,0)'}, //Color 可选, 不设置 使用外层Color颜色 {Date:20190919, Color:'rgb(0,0,255)'}, {Date:20190909, Color:'rgb(72,61,139)'}, {Date:20200303 }, {Date:20200304 }, {Date:20200305 }, ] } } } var apiData= { code:0, stock:{ name:hqchart.Name, symbol:hqchart.Symbol }, //outdata: { date:kData.GetDate() , outvar:[closeLine,line2] } outdata: { outvar:[svgData,colorKlineData] } }; data.PreventDefault=true; console.log('[KLineChart::Re] apiData ', apiData); callback(apiData); } } $(function () { WebFont.load({ custom: { families: ['iconfont'] } }); //预加载下iconfont资源 WebFont.load({ custom: { families: ['js-iconfont'] } }); var klineControl=new KLineChart(document.getElementById('kline')); klineControl.Create(); }) /* .klineframe-toolbar { color:rgb(238,233,233); } .klineframe-toolbar span:hover { color: #0182d4; } */

如果还有问题可以加交流QQ群: 950092318

HQChart代码地址

地址:github.com/jones2000/HQChart

标签组:[date] [callback

上一篇WPF中使用amCharts绘制股票K线图

下一篇K线图、均线与成交量绘制

相关阅读

相同话题文章

推荐内容

热门阅读