HQChart使用教程30-K线图如何对接第3方数据18-如何绘制自定义柱子

HQChart使用教程30-K线图如何对接第3方数据18-如何绘制自定义柱子

使用自定义柱子数据结构可以快速绘制出柱子
效果图
在这里插入图片描述

前面的步骤和第3方指标替换一样, 通过网络协议回调,知道需要执行的指标, 替换自己的数据。这里就不说了, 不知道的看以下2个教程
HQChart使用教程30-K线图如何对接第3方数据1
HQChart使用教程30-K线图如何对接第3方数据5-指标数据

自定义柱子集合是做为一组输出变量, 填入到输出变量数组(outvar)中

数据格式

在这里插入图片描述

name

填’MULTI_BAR’ 固定

type

填 1 固定

Draw

柱子绘制数据

Draw.DrawType

固定 ‘MULTI_BAR’

Draw.DrawData

绘制的自定义柱子集合, 支持多组柱子集合
格式
{
Color:柱子颜色,
Width: 柱子宽度 , 缺省使用K线柱子宽度
Type: 0 实心 1空心 缺省使用实心
Point:[绘制柱子的点数组] }
单个Point数据结构:
{ Date:日期, Time: 时间(分时用,日线不需要), Value:Y轴值(柱子顶部/底部), Value2: Y轴值2(柱子底部/顶部) }
下面是绘制一组柱子实例

var point=
{ 
    Color:'rgb(244,55,50)', //柱子颜色
    //Type:1,
    Point:
    [
        {Date:20190916, Value:15.5, Value2:0 },   //在20190916上画一个底部是0 顶部是15.5的柱子
        {Date:20190917, Value:15.5, Value2:20 },  //在20190917上画一个底部是15.5 顶部是20的柱子
        {Date:20190902, Value:10.5,Value2:0}, 
    ] 
};

完整实例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>K线图-3方数据-多柱子指标</title>  
    <link rel="stylesheet" href="../jscommon/umychart.resource/css/tools.css" />
    <link rel="stylesheet" href="../jscommon/umychart.resource/font/iconfont.css" />
    <!-- 使用阿里云图片 -->
    <!--<link rel="stylesheet" href="https://at.alicdn.com/t/font_1040563_1d1tgaoqofpi.css" />-->
    <!--<link rel="stylesheet" href="https://at.alicdn.com/t/font_1196214_ny3l0dbclr.css" />-->
    
</head>  
<body>
    <div id="kline" style="width: 900px;height:400px;position: relative;"></div>

    <script src="content/js/jquery.min.js"></script>
    <script src="content/js/webfont.js"></script>

    <script src="../jscommon/umychart.network.js"></script>
    <script src="../jscommon/umychart.js"></script>
    <script src="../jscommon/umychart.complier.js"></script>
    <script src="../jscommon/umychart.index.data.js"></script>
    <script src="../jscommon/umychart.style.js"></script>
    

     <!-- 引入vConsole的JS-->
     <script src="../vConsole-3.2.0/dist/vconsole.min.js"></script>
    
    <script>

        //预加载下阿里云图片
        WebFont.load({ custom: { families: ['iconfont'] } });

        function getURLParams(name) 
        {
        	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        	var r = window.location.search.substr(1).match(reg);
        	if (r != null) return decodeURI(r[2]);
        	return null;
        }
        
        $(window).resize(resizeCanvas);
        
        function resizeCanvas()
        {
            var height= $(window).height();
            var width = $(window).width();
            var divKline=document.getElementById('kline');
            divKline.style.top=0+'px';
            divKline.style.left=0+'px';
            divKline.style.width=(width)+'px';
            divKline.style.height=(height)+'px';
            divKline.JSChart.OnSize();
        }

        function NetworkFilter(data, callback)
        {
            console.log('[NetworkFilter] data', data);

            if (data.Name=='APIScriptIndex::ExecuteScript')
            {
                var request=data.Request;
                if (request.Data.indexname=='多柱子指标')
                {
                    var hqchart=data.HQChart;
                   // var kData=hqchart.ChartPaint[0].Data;
                    //var closeLine={name:'收盘价线', type:0, data:kData.GetClose() };
                    var bar= 
                    { 
                        name:'MULTI_BAR', type:1, 
                        Draw: { DrawType:'MULTI_BAR', DrawData:[] } //绘制柱子数组
                    };

                    //第一组柱子
                    var point=
                    { 
                        Color:'rgb(244,55,50)', //颜色
                        //Type:1,
                        Point:
                        [
                            {Date:20190916, Value:15.5, Value2:0 },
                            {Date:20190917, Value:15.5, Value2:10 }, 
                            {Date:20190902, Value:10.5,Value2:0}, 
                            //{Date:20190917, Value:15.05},
                            //{Date:20190916, Value:15.5} 
                        ] 
                    };

                    //第2组柱子
                    var point2=
                    { 
                        Color:'rgb(0,55,50)', //颜色
                        Point:
                        [
                            { Date:20190902, Value:15.5,Value2:0},
                            { Date:20190903, Value:15.33,Value2:0}, 
                            { Date:20190904, Value:15.21,Value2:20} , 
                            { Date:20190906, Value:15.05,Value2:0},
                            { Date:20190909, Value:15.5,Value2:0} 
                        ] 
                    };
                    
                    bar.Draw.DrawData.push(point2);
                    bar.Draw.DrawData.push(point);
                    
                    var apiData=
                    {
                        code:0, 
                        stock:{ name:hqchart.Name, symbol:hqchart.Symbol }, 
                        //outdata: { date:kData.GetDate() , outvar:[closeLine,line2] } 
                        outdata: { outvar:[bar] } 
                    };
                    
                    data.PreventDefault=true;
                    console.log('[NetworkFilter::NetworkFilter] apiData ', apiData);
                    callback(apiData);
                }
            }
        }
        
        
        $(function ()
        {
            var debug=getURLParams('debug');
            if (debug==1) 
            {
                var vConsole = new VConsole();
                console.log('create VConsole');
            }

            var symbol=getURLParams('symbol');
            if (symbol==null) symbol='000001.sz';
        
            // 创建股票K线图
            var chart=JSChart.Init(document.getElementById('kline'));

            var height= $(window).height();
            var width = $(window).width();
            var divKline=document.getElementById('kline');
            divKline.style.width=width+'px';
            divKline.style.height=height+'px';
            chart.OnSize();
        
            var option=
            {
                Type:'历史K线图',
                //Type:'历史K线图横屏',
                
                Windows: 
                [
                    {
                        Index:'MA',
                    },
                    {
                        Index:"多柱子指标", 
                        API: 
                        {
                            Name:'多柱子指标',
                            Script:null,
                            Args:null, 
                            Url:'http://127.0.0.1:18080/api/jsindex' 
                        } 
                    },
                            
                ], //窗口指标

                Symbol:symbol,
                IsAutoUpdate:true,          //是自动更新数据
                AutoUpdateFrequency:3000,   //数据更新频率
                //TradeIndex: {Index:'交易系统-BIAS'},    //交易系统
                NetworkFilter:NetworkFilter,
    
                IsShowRightMenu:true,          //右键菜单
                IsShowCorssCursorInfo:true,    //是否显示十字光标的刻度信息
                CorssCursorInfo:{ Left:1, Right:1, Bottom:1, IsShowCorss:true, PressTime:300 },  //十字光标刻度设置
    
                KLine:
                {
                    DragMode:1,                 //拖拽模式 0 禁止拖拽 1 数据拖拽 2 区间选择
                    Right:1,                    //复权 0 不复权 1 前复权 2 后复权
                    Period:0,                   //周期 0 日线 1 周线 2 月线 3 年线 
                    MaxReqeustDataCount:1000,   //数据个数
                    MaxRequestMinuteDayCount:6,
                    PageSize:90,               //一屏显示多少数据
                    IndexTreeApiUrl:"https://opensourcecache.zealink.com/cache/hqh5/index/commonindextree.json",        //指标树下载地址
                    //Info:["互动易","大宗交易",'龙虎榜',"调研","业绩预告","公告"],       //信息地雷
                    //Info:["公告","互动易","调研"],           //信息地雷
                    InfoPosition:1,                         //显示位置
                    KLineDoubleClick:false,              //双击分钟走势图
                    IsShowTooltip:true,                 //是否显示K线提示信息
                    //FirstShowDate:20180401,             //首屏显示的起始日期   
                    DrawType:0,           
                },
    
                KLineTitle: //标题设置
                {
                    IsShowName:true,       //不显示股票名称
                    IsShowSettingInfo:true //不显示周期/复权
                },
    
                Border: //边框
                {
                    Left:5,           //左边间距
                    Right:60,       //右边间距
                    Bottom:25,
                    Top:25
                },

                Language:"CN",  //英文 'EN' 中文:'CN'

                ExtendChart:    //扩展图形
                [
                    {Name:'画图工具',Top:25}
                ],
                
                Frame:  //子框架设置 (Height 窗口高度比例值)
                [
                    {   SplitCount:5,
                        //Height:4,
                        IsShowLeftText:false, 
                        IsShowRightText:true
                    },
                    {
                        SplitCount:3,
                        //Height:2,
                        IsShowLeftText:false, 
                        IsShowRightText:true
                    },
                    {
                        SplitCount:2,
                        //Height:2,
                        IsShowLeftText:false, 
                        IsShowRightText:true
                    }
                ],

                Overlay:
                [
                    //{Symbol:'000001.sh', DrawType:0},   
                    //{Symbol:'002415.sz', DrawType:0}
                ],

                
            }

            var windowHeight= $(window).height();
            var windowWidth = $(window).width();
            if (windowWidth<=420)   //手机小屏左右不显示坐标
            {
                option.Border.Left=1;
                option.Border.Right=1;
                option.KLine.IsShowTooltip=false;   //关闭pc端tooltip
                option.KLine.Info=null;
                option.KLine.PageSize=30;   
                option.ExtendChart=[{Name:'KLineTooltip' }]; //开启手机端tooltip
                //option.ExtendChart=null;
                option.IsCorssOnlyDrawKLine=true;
                option.CorssCursorTouchEnd=true;
                for(var i in option.Windows)
                {
                    option.Windows[i].Modify=false;
                    option.Windows[i].Change=false;
                }
            }
            
        
            chart.SetOption(option);

            resizeCanvas();
        })
        
    </script>  
</body>  
</html>

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

HQChart代码地址
地址:github.com/jones2000/HQChart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值