echarts画k线图
var charset = echarts.init(document.getElementById("k_line"))
$.get(k_line.url_A).done(function (info) {
var rawData = info.Data.History;
var single = info.Data.Signal;
var single_ = [];
var arr = [];
for (var i = 0; i < single.length; i++) {
var data = single[i][0];
var y = single[i][1];
var origle = single[i][2];
arr.push(data);
var obj = {};
if (origle == '0') {
obj = {
name: '0',
coord: [data, y],
symbol: k_line.buy_,
symbolSize: [40, 40],
label: "卖出"
}
} else {
obj = {
name: '1',
coord: [data, y],
symbol: k_line.sell_,
symbolSize: [40, 40],
label: "卖出"
}
}
single_.push(obj)
}
var dates = rawData.map(function (item) {
return item[0];
});
var data = rawData.map(function (item) {
return [+item[1], +item[2], +item[5], +item[6], ];
});
var option = {
title: {
text: k_line.title,
textStyle: {
color: "rgba(255,255,255,0.4)",
fontSize: "18"
}
},
backgroundColor: '#000',
brush: {
toolbox: ['rect'],
xAxisIndex: 0,
inBrush: {
symbolSize: '40px',
color: '#000',
color0: '#54FFFF',
borderColor: '#FF3232',
borderColor0: '#54FFFF'
},
outOfBrush: {
color: '#000',
color0: '#54FFFF',
borderColor: '#FF3232',
borderColor0: '#54FFFF'
},
z: 1000
},
toolbox: {
color: "red",
borderWidth: "10px",
itemGap: 25,
itemSize: 25,
left: 'center',
iconStyle: {
normal: {
color: 'red',
borderType: "solid",
borderColor: "red",
textPosition: "left"
},
emphasis: {
fontSize: "24px"
}
},
feature: {
brush: {
title: {
rect: "点击进入选中模式"
},
}
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
animation: false,
type: 'cross',
lineStyle: {
color: '#376df4',
width: 2,
opacity: 1
}
},
formatter: function (params) {//鼠标在k线上显示的模态框
var res = params[0].seriesName + ' ' + params[0].name;
res += '<br/> 开盘 : ' + params[0].value[1];
res += '<br/> 最高 : ' + params[0].value[3];
res += '<br/> 收盘 : ' + params[0].value[2];
res += '<br/> 最低 : ' + params[0].value[4];
return res;
},
axisPointer: {
type: "cross",
crossStyle: {
color: "#666",
type: "solid"
},
},
textStyle: {
backgroundColor: "blue"
}
},
xAxis: {
type: 'category',
data: dates,
axisLine: { lineStyle: { color: 'red' } },
axisLabel: {//坐标轴文本样式
textStyle: {
color: "red",
},
}
},
yAxis: {
scale: true,
position: "right",
axisLine: { lineStyle: { color: 'red' } },
//背景的虚线
splitLine: {
show: true,
lineStyle: {
color: "red",
type: "dashed"
}
},
axisLabel: {//坐标轴文本样式
textStyle: {
color: "red",
}
},
boundaryGap: [0, 0.2]
},
grid: {//网格的区域 大小
width: "95%",
height: "100%",
left: 0,
bottom: 80
},
dataZoom: [
{
type: 'inside',
start: 88,
}],
animation: false,
series: [//放跟数据相关的
{
type: 'candlestick',
name: '日K',
data: data,
markPoint: {
data: single_
},
itemStyle: {
normal: {
color: '#FF3232',
color0: '#54FFFF',
borderColor: '#FF3232',
borderColor0: '#54FFFF'
},
emphasis: {
color: '#FF3232',
color0: '#54FFFF',
borderColor: '#FF3232',
borderColor0: '#54FFFF'
}
}
},
]
};
//实现响应式
window.onresize = charset.resize;
//绘图
charset.setOption(option);
//鼠标框选事件
charset.on('brushSelected', renderBrushed);
function renderBrushed(params) {
var brushed = [];
var brushComponent = params.batch[0];
for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) {
var rawIndices = brushComponent.selected[sIdx].dataIndex;
brushed.push(rawIndices)
}
var start = brushed[0][0];
s_ = start = rawData[start][0];//框选开始位置
var end = brushed[0][brushed[0].length - 1];
n_ = end = rawData[end][0];//框选结束位置
var v1 = '您选择的回测的日期是:\n\n\n' + start + "--" + end + '\n\n\n点击进入回测页面';
var url_1 = k_line.success_link + "?" + start + "&" + end;
var v2 = '您选择的回测的日期不存在可回测数据';
var v3 = "您选择的区间过大,请重新选择";
var len_ = arr.length;
for (var i = 0; i < len_; i++) {
if (arr[i] > start && arr[i] < end) {
if (getDays(end, start) > 360) {
k_line.msg(v3, 'javascript:;')
break;
}
k_line.msg(v1, url_1);
break;
} else {
k_line.msg(v2, 'javascript:;')
}
}
}
})//画图完毕
function getDays(strDateStart,strDateEnd){
var strSeparator = "-"; //日期分隔符
var oDate1;
var oDate2;
var iDays;
oDate1= strDateStart.split(strSeparator);
oDate2= strDateEnd.split(strSeparator);
var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数
return iDays;
}//判断日期
需求是通过后台给的数据去框选区间回测数据,如果超出一年了,就不让其回测了。
var k_line = { //k线图对象
msg: function (v, url) {//提示框函数
charset.setOption({
title: {
backgroundColor: '#333',
text: v,
top: '50px',
right: 0,
width: '100px',
height: '80px',
textStyle: {
fontSize: 12,
color: '#fff',
},
link: url,
target: "self",
}
});
},
url_A: "/Home/GetKLineData?code=" + nums_code + "&areaType=" + areatype,//后台接口
buy_: 'image:///public/imags/gou.png', //买入图片
sell_: 'image:///public/imags/sale.png',//卖出图片
title: areaname_ + ':' + nums_code,
success_link: 'javascript:void(0)',//框选成功后的跳转链接
};
layer.open({ //打开k线图
type: 1,
title: 0,
shade: 0.8,
shadeClose: false,
area: ['90%', '90%'],
content: "<div style='position:relative;width:100%;height:100%;'><div id='k_line' style='width:100%;height:100%;'></div><div id='k_line_' style='width:158px;height:28px;position:absolute;right:0;top:116px;z-index:99999;cursor:pointer'></div></div>"
});
var s_ = "", n_ = "";
$('#k_line_').on("click", function () { //关闭k线图
if (s_ != '' && n_ != '') {
jBcs.s_time = s_, jBcs.n_time = n_;
jBcs.iSdisabled = false;
layer.close(layer.index);
}
});
echarts画k线图的更多相关文章
- 使用ECharts画K线图
需引入echarts.js插件,开发环境建议选择源代码版本,该版本包含了常见的警告和错误提示.下载地址 http://echarts.baidu.com/download.html 下面是代码,注释很 ...
- 【React】react项目引入echarts插件 K线图
参考npm文档:https://www.npmjs.com/package/echarts-for-react 由于npm上已经有针对react项目出的echarts插件,所以在这里直接安装 第一步: ...
- echarts绘制k线图为什么写candlestick类型就报错
错误提示:echarts-en.common.js:11713 Uncaught Error: Component series.candlestick not exists. Load it fir ...
- 功能分解——Android下画分时图与k线图有感
最近工作极度繁忙,已经好久没有更新博客了,总感觉要是再不抽空总结总结点东西,分分钟就会被懒惰的状态给打到了.同时也希望同学们谨记,如果你已经决定要坚持某些正确的东西,比如背完某章单词,看一完本书抑或是 ...
- 在MPAndroidChart库K线图的基础上画均线
CombinedChart 可以直接使用MPAndroidChart库里面提供的CombinedChart实现组合图形 Demo:CombinedChartDemo ------分割线(如果想在一个图 ...
- 关于k Line Chart (k线图)
K Line Chart python实现k线图的代码,之前找过matplotlib中文文档但是画k线图的finance方法已经弃用了.所以自己在网上搜寻一下加上改编,很好的实现出k线图, 代码如下: ...
- 基于Echarts的股票K线图展示
发布时间:2018-10-31 技术:javascript+html5+canvas 概述 基于echarts的股票K线图展示,只需引用单个插件,通过简单配置,导入数据,即可实现炫酷复杂的K线 ...
- 百度 echarts K线图使用
看个效果图先 首先在需要插入图例的HTML中嵌入 <div id="main" style="height:400px"></div> ...
- K线图学习
本博文(适合入门的股民朋友)内容来自网络,股市有风险,入市需谨慎 一.起源 K线图(Candlestick Charts)又称蜡烛图.日本线.阴阳线.棒线等,常用说法是“K线”,起源于日本十八世纪德川 ...
随机推荐
- C++智能指针 unique_ptr
C++智能指针 unique_ptr unique_ptr 独占所指向的对象, 同一时刻只能有一个 unique_ptr 指向给定对象(通过禁止拷贝语义, 只有移动语义来实现), 定义于 memory ...
- crontab 定期拉取代码
* * * * * cd /home/wwwroot/default/lion/ && /usr/bin/git pull origin 5hao >> /tmp/git. ...
- java synchronized 用法
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this ...
- java RSA加密解密实现(含分段加密)
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detail/centralperk/50255 ...
- mpvue开发小记
1.组件嵌套组件时,子组件作用域bug 组件A内的slot包含子组件B的话,无法正常使用变量(这种情况下,B组件的template错误地使用了A的作用域). 我的解决方案:减少一层组件提炼,即这种情况 ...
- 代码Review发现问题
FrmMain.cs中存在问题 1. int i=0 设定为了全局常量且未在类顶部,出现问题时不好查找 i 属于常用临时变量,设定全局变量容易引起混乱 2.定义的全局变量但仅在一处方法中使用,定义全局 ...
- MySQL新建用户,授权
登录MySQL mysql -u root -p 添加新用户 允许本地 IP 访问 localhost, 127.0.0.1 create user 'test'@'localhost' identi ...
- jQuery拖拽 & 弹出层
了解更多请查看 官网 和 API iDrag & iDialog 介绍 特点: iDialog.js依赖于jquery编写的简单易用的对话框,同时还可以通过添加css3,改变对话框的展现动画. ...
- MyBatis 系列五 之 延迟加载、一级缓存、二级缓存设置
MyBatis的延迟加载.一级缓存.二级缓存设置 首先我们必须分清延迟加载的适用对象 延迟加载 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟加载规则推迟对关联对象的se ...
- Vuejs - 单文件组件
为什么需要单文件组件 在之前的实例中,我们都是通过 Vue.component 或者 components 属性的方式来定义组件,这种方式在很多中小规模的项目中还好,但在复杂的项目中,下面这些缺点就非 ...