配置项如下
app.title = 'Alpha2B';
//----------------------------原始数据-------------------------------
let btc = [6111.15,6126.51,6117.40,6113.89,6101.06,6105.93,6126.26,6108.05,6086.78,6105.70,6086.57,6085.01,6093.46,6108.82,6108.62,6113.89,6120.69,6125.99,6118.63,6117.05,6110.09,6145.90,6100.81,6112.49,6411.27,6403.19,6376.81,6368.17,6372.35,6377.93,6371.47,6384.20,6376.80,6381.48,6377.32,6383.28,6378.81,6394.29,6383.30,6211.55,6264.98,6264.16,6252.24,6253.22,6269.52,6278.64,6265.16,6276.14,6266.60,6262.23,6321.49,6329.59,6313.53,6320.25,6321.37,6301.48,6297.36,6304.62,6314.23,6325.43,6314.76,6327.20,6327.89,6336.44,6320.03,6322.36,6310.39,6256.15,6249.37,6263.93,6308.51,6313.06,6320.57,6322.02,6320.85,6322.13,6318.71,6301.07,6303.20,6299.38,6294.90,6310.31,6296.91,6318.93,6310.45,6322.06,6333.24,6329.01,6332.98,6346.11,6343.03,6312.50,6328.08,6335.62,6325.17,6320.12,6352.31,6354.46,6348.75,6352.79,6345.33,6343.66,6334.01,6339.39];
let net = [1.0,0.9974928629839827,0.9974928629839827,0.9980655262064274,0.9980655262064274,0.9972694838160584,0.9972694838160584,1.000242654844503,1.000242654844503,0.9971431591225287,0.9971431591225287,0.997398794417825,0.997398794417825,0.9948909376660697,0.9948909376660697,0.994033369858749,0.994033369858749,0.9931733657026449,0.9931733657026449,0.9934298968602797,0.9934298968602797,0.9876415298828531,0.9876415298828531,0.9857543033893895,0.9857543033893895,0.9869981981936022,0.9869981981936022,0.9883373057287957,0.9883373057287957,0.9874726173164164,0.9874726173164164,0.9855036115806254,0.9855036115806254,0.9847808706330401,0.9847808706330401,0.9838613913075251,0.9838613913075251,0.9814795515196143,0.9814795515196143,1.0086175626397846,1.0086175626397846,1.008749594133451,1.008749594133451,1.0085915036453104,1.0085915036453104,1.0071264802464144,1.0071264802464144,1.0053645296281832,1.0053645296281832,1.006066107659408,1.006066107659408,1.0047786410980601,1.0047786410980601,1.0037103111319703,1.0037103111319703,1.0068784237163815,1.0068784237163815,1.005718966468176,1.005718966468176,1.0039382096778164,1.0039382096778164,1.0019643521534152,1.0019643521534152,1.000612363464039,1.000612363464039,1.0002436045185072,1.0002436045185072,1.0089155853867864,1.0089155853867864,1.0065704424935498,1.0065704424935498,1.0058449788493986,1.0058449788493986,1.005614281189579,1.005614281189579,1.0054106810927885,1.0054106810927885,1.0082253529524057,1.0082253529524057,1.0088367497641997,1.0088367497641997,1.0063731347731981,1.0063731347731981,1.0028661586826724,1.0028661586826724,1.0010244684579186,1.0010244684579186,1.0016935041367336,1.0016935041367336,0.9996210163120165,0.9996210163120165,1.004455619025364,1.004455619025364,1.003260219779915,1.003260219779915,1.004061860272483,1.004061860272483,1.0037221409258217,1.0037221409258217,1.0030838328046119,1.0030838328046119,1.0033478996052891,1.0033478996052891,1.0024963962745463];
//目前两组数据对应的x值是一样的
//即2018-08-04 11:12:59同时对应btc-7473.61,net-1,ydata-'up'
let xdata = ['2018-08-11 16:16:02','2018-08-11 16:24:00','2018-08-11 16:48:00','2018-08-11 17:15:01','2018-08-11 17:24:00','2018-08-11 17:51:01','2018-08-11 18:57:15','2018-08-11 19:52:02','2018-08-11 20:04:00','2018-08-11 20:17:00','2018-08-11 20:26:45','2018-08-11 20:54:00','2018-08-11 21:15:36','2018-08-11 21:28:02','2018-08-11 21:50:00','2018-08-11 22:20:00','2018-08-11 22:58:00','2018-08-11 23:06:00','2018-08-11 23:11:01','2018-08-11 23:37:19','2018-08-11 23:47:00','2018-08-12 00:22:05','2018-08-12 00:39:00','2018-08-12 00:54:00','2018-08-12 02:15:00','2018-08-12 02:47:01','2018-08-12 03:01:00','2018-08-12 03:28:42','2018-08-12 04:19:00','2018-08-12 04:37:06','2018-08-12 04:43:49','2018-08-12 04:47:00','2018-08-12 05:12:00','2018-08-12 05:36:01','2018-08-12 05:52:00','2018-08-12 06:18:00','2018-08-12 06:48:00','2018-08-12 07:03:01','2018-08-12 07:22:00','2018-08-12 08:24:00','2018-08-12 09:07:01','2018-08-12 09:28:00','2018-08-12 09:43:21','2018-08-12 09:58:27','2018-08-12 10:39:00','2018-08-12 10:58:00','2018-08-12 11:20:00','2018-08-12 11:44:00','2018-08-12 12:01:01','2018-08-12 12:37:00','2018-08-12 14:06:01','2018-08-12 14:45:00','2018-08-12 15:11:27','2018-08-12 15:37:01','2018-08-12 15:59:00','2018-08-12 16:33:01','2018-08-12 17:02:00','2018-08-12 17:21:01','2018-08-12 17:52:01','2018-08-12 18:00:00','2018-08-12 18:05:01','2018-08-12 18:18:00','2018-08-12 18:56:00','2018-08-12 19:43:17','2018-08-12 20:07:02','2018-08-12 20:43:01','2018-08-12 20:48:01','2018-08-12 21:15:00','2018-08-12 21:35:02','2018-08-12 21:47:00','2018-08-12 22:41:39','2018-08-12 23:08:43','2018-08-12 23:48:01','2018-08-13 00:22:01','2018-08-13 00:46:01','2018-08-13 01:13:00','2018-08-13 01:34:00','2018-08-13 02:02:00','2018-08-13 02:30:01','2018-08-13 02:55:00','2018-08-13 03:10:00','2018-08-13 03:25:56','2018-08-13 03:46:01','2018-08-13 04:11:02','2018-08-13 04:13:33','2018-08-13 04:37:01','2018-08-13 05:07:00','2018-08-13 05:27:02','2018-08-13 06:12:48','2018-08-13 06:35:57','2018-08-13 06:45:15','2018-08-13 07:57:01','2018-08-13 08:54:00','2018-08-13 09:08:02','2018-08-13 09:32:00','2018-08-13 10:35:07','2018-08-13 11:46:20','2018-08-13 11:55:01','2018-08-13 12:15:00','2018-08-13 12:34:17','2018-08-13 12:43:36','2018-08-13 13:05:01','2018-08-13 13:33:00','2018-08-13 14:06:00'];
let ydata = ['down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up', 'down', 'up'];
//----------------------------配置参数-------------------------------
let colors = ['#5d8bc3', '#76b981'];
let names = ['基金净值', 'BTC走势'];
let xMin = '2018-08-11 16:00:00';
let xMax = '2018-08-13 15:00:00';
let downColor = '#FFAEB955';
let upColor = '#008B0055';
let leftMin = 0.90;
let leftMax = 1.05;
let rightMin = 6000;
let rightMax = 7500;
let axisFontSize = 16;
let circleSize = 7; //设置为0即去掉折线上的圆圈
//----------------------------组织绘图数据-------------------------------
let btcLen = Math.min(btc.length, xdata.length);
let btcList = [];
let netList = [];
for (let i = 0; i < btcLen; i++) {
btcList.push({
name: xdata[i],
value: [xdata[i], btc[i]]
});
netList.push({
name: xdata[i],
value: [xdata[i], net[i]]
})
}
let firstData = [{
name: names[0],
data: netList,
type: 'line',
yAxisIndex: 0,
lineStyle: {
normal: {
width: 2.5,
color: colors[0]
}
},
symbolSize: circleSize,
},
{
name: names[1],
data: btcList,
type: 'line',
yAxisIndex: 1,
lineStyle: {
normal: {
width: 2.5,
color: colors[1]
}
},
symbolSize: circleSize,
}
];
let shadowLen = Math.min(xdata.length, ydata.length);
for (let index = 1; index < shadowLen; index++) {
let preIndex = index - 1;
let color = downColor;
if (ydata[preIndex] == 'up') {
color = upColor;
}
firstData.push({
name: '信号',
symbol: 'none',
type: 'line',
yAxisIndex: 0,
data: [{
name: xdata[preIndex],
value: [xdata[preIndex], leftMax]
},
{
name: xdata[index],
value: [xdata[index], leftMax]
}
],
lineStyle: {
color: '#FFFFFF00'
},
areaStyle: {
color: color
}
})
}
//----------------------------走势主图-------------------------------
option = {
color: colors,
grid: [{
left: '10%',
right: '10%',
bottom: 60
}],
legend: {
itemWidth: 25,
itemHeight: 15,
data: names,
textStyle: {
fontSize: 16
}
},
xAxis: [{
type: 'time',
min: xMin,
max: xMax,
splitLine: false,
axisTick: {
alignWithLabel: true
},
axisLine: {
lineStyle: {
color: "#b5b5b5"
}
},
axisLabel: {
show: true,
textStyle: {
fontFamily: "PingFang-SC-Medium",
fontSize: 16,
color: "#ffffff"
}
}
}],
yAxis: [{
id: 0,
type: 'value',
name: names[0],
min: leftMin,
max: leftMax,
position: 'left',
axisLine: {
lineStyle: {
color: colors[0]
}
},
nameTextStyle: {
fontSize: 15
},
axisLabel: {
show: true,
textStyle: {
fontFamily: "PingFang-SC-Medium",
fontSize: axisFontSize,
color: "#ffffff"
}
}
},
{
id: 1,
type: 'value',
name: names[1],
min: rightMin,
max: rightMax,
position: 'right',
axisLine: {
lineStyle: {
color: colors[1]
}
},
nameTextStyle: {
fontSize: 15
},
axisLabel: {
show: true,
textStyle: {
fontFamily: "PingFang-SC-Medium",
fontSize: axisFontSize,
color: "#ffffff"
}
}
}
],
series: firstData
};
//----------------------------组织绘图数据-------------------------------
let data = [];
let len = Math.min(xdata.length, ydata.length);
let y = ydata[0] == 'up' ? 1 : 0;
for (let i = 0; i < len; i++) {
if (i > 0) {
data.push({
name: xdata[i],
value: [xdata[i], y]
})
} else {
data.push({
name: xMin,
value: [xMin, y]
})
}
y = ydata[i] == 'up' ? 1 : -1;
data.push({
name: xdata[i],
value: [xdata[i], y]
})
}
let seriesData = [];
len = data.length;
for (let i = 1; i < len; i++) {
let preValue = data[i - 1].value;
let currentValye = data[i].value;
if (currentValye[1] == 1) {
seriesData.push({
name: '信号',
xAxisIndex: 1,
yAxisIndex: 2,
symbol: 'none',
type: 'line',
data: data.slice(i - 1, i + 1),
areaStyle: {
color: upColor
},
lineStyle: {
color: '#FFFFFF00'
}
})
} else {
seriesData.push({
name: '信号',
xAxisIndex: 1,
yAxisIndex: 2,
symbol: 'none',
type: 'line',
data: data.slice(i - 1, i + 1),
areaStyle: {
color: downColor
},
lineStyle: {
color: '#FFFFFF00'
},
})
}
}
//----------------------------信号小图-------------------------------
// option.grid.push({
// left: '10%',
// right: '10%',
// height: 80,
// bottom: 60
// });
// option.xAxis.push({
// id: 1,
// gridIndex: 1,
// type: 'time',
// min: xMin,
// max: xMax,
// splitLine: {
// show: false
// },
// axisLine: {
// show: false
// },
// axisLabel: {
// show: false
// },
// axisTick: {
// show: false
// },
// axisPointer: {
// triggerTooltip: true
// }
// });
// option.yAxis.push({
// id: 2,
// gridIndex: 1,
// axisLabel: false,
// type: 'value',
// min: -1,
// max: 1,
// interval: 1,
// axisLine: {
// show: false,
// lineStyle: {
// color: '#999'
// }
// },
// axisTick: {
// show: false
// },
// splitLine: {
// show: false,
// lineStyle: {
// type: 'dashed'
// }
// },
// });
// option.series = option.series.concat(seriesData);