Files
你的名字 0483b4b364 1
2025-07-14 10:22:40 +08:00

989 lines
26 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$(document).ready(function(e) {
});
var ctype = "k";
var ccout;
function getkl() {
if ($(".trade-chart-type.stock").hasClass("active")) {
ctype = "k";
}
if ($(".trade-chart-type.line").hasClass("active")) {
ctype = "l";
}
}
$(function() {
ccout = setTimeout("getonedata()", 1000);
autoHeight();
getMaindata(ctype);
})
setInterval("getklines()", 1000);
function getklines() {
var nowdate = new Date();
var s = nowdate.getSeconds();
if (s == 0) {
getMaindata(ctype)
}
}
//cc=function(){
// ccout=setTimeout("getonedata()",1000);
//}
var obj = {
start: 0,
end: 100
}
var minQiya, maxQiya;
$(window).resize(function(e) {
autoHeight();
})
$(window).load(function(e) {
// autoHeight();
});
//时间戳转成时00形式 1700以来的秒数非毫秒
function getDateHM(tm) {
NWh = new Date(parseInt(tm) * 1000).getHours(tm);
NWm = new Date(parseInt(tm) * 1000).getMinutes(tm);
if (NWh < 10) {
NWh = "0" + NWh;
}
if (NWm < 10) {
NWm = "0" + NWm;
}
var tt = NWh + ":" + NWm
return tt;
}
//alert(getDateHM('1499096200'))
//自动高度
function autoHeight() {
var headerbarH = $(".headerbar").height();
var headerH = $("header").height();
var NavH = $("nav").height();
var tradebarH = $(".trade_bar").height();
var ecBarH = $("#ecBar").height();
var WinHss = $(window).height();
$("footer").height(WinHss - headerbarH - headerH - NavH - tradebarH - ecBarH);
$("#ecKx").height(WinHss - headerbarH - headerH - NavH - tradebarH - ecBarH);
}
function change_chart_period(type) {
$(".trade-chart-period").each(function(i, e) {
if ($(this).hasClass(type)) {
$(this).siblings(".trade-chart-period").removeClass("active");
$(this).addClass("active");
}
})
getMaindata(ctype);
}
//点击切换K先跟走势
function change_chart_type(type) {
if (type == "stock") {
ctype = "k";
} else {
ctype = "l";
}
getMaindata(ctype);
}
function splitData(rawData) {
var categoryData = [];
var values = []
for (var i = 0; i < rawData.length; i++) {
categoryData.push(getDateHM(rawData[i].splice(0, 1)[0]));
values.push(rawData[i])
}
return {
categoryData: categoryData,
values: values
};
}
function calculateMA(dayCount) {
var result = [];
for (var i = 0, len = data0.values.length; i < len; i++) {
if (i < dayCount) {
result.push('-');
continue;
}
var sum = 0;
for (var j = 0; j < dayCount; j++) {
sum += Number(data0.values[i - j][1]);
}
result.push(sum / dayCount);
}
//alert(result)
return result;
}
function kTl(KDS) {
K2line = new Array();
for (p = 0; p < KDS.length; p++) {
K2line.push(KDS[p][3])
if (p == KDS.length - 1) {
K2line[p] = KDS[p][1];
}
}
//alert(JSON.stringify(K2line))
return K2line;
}
function calculateMA2(numb, dts) {
var result2 = [];
for (var y = 0, len = dts.length; y < len; y++) {
if (y < numb) {
result2.push('-');
continue;
}
var sum = 0;
for (var jj = 0; jj < numb; jj++) {
sum += Number(dts[y - jj]);
}
result2.push(sum / numb);
}
//alert(result)
return result2;
}
function funPoor(ds) {
fPoor = new Array();
for (x = 0; x < ds.length; x++) {
fPoor.push(ds[x][1])
}
return fPoor;
}
//求数的差
function getPoor(d) {
nPoor = new Array();
nPoor.push("-");
for (i = 0; i < d.length; i++) {
if (i > 0) {
nPoor.push((d[i] - d[i - 1]).toString())
}
}
return nPoor;
}
var cldata;
//AJAX请求
function getMaindata(ctype) {
if (ctype == "k") {
$(".trade-chart-type.stock").addClass("active");
$(".trade-chart-type.line").removeClass("active");
}
if (ctype == "l") {
$(".trade-chart-type.stock").removeClass("active");
$(".trade-chart-type.line").addClass("active");
}
Vtype = $(".trade-chart-period.active").text();
switch (Vtype) {
case "1M":
interval = "1";
break;
case "5M":
interval = "5";
break;
case "15M":
interval = "15";
break;
case "30M":
interval = "30";
break;
case "1H":
interval = "60";
break;
case "1D":
interval = "d";
break;
}
//ajax
clearTimeout(ccout);
$.ajax({
url: "/index/index/getkdata",
type: "get",
dataType: "json",
async: true,
contentType: "application/json",
data: {
"pid": order_pid,
"num": 60,
"interval": interval
},
success: function(_jdatadata) {
var jdatadata = jQuery.parseJSON(Base64.decode(_jdatadata));
localStorage.setItem("data", '');
localStorage.setItem("data", JSON.stringify(jdatadata));
gotoecharts(jdatadata)
ccout = setTimeout("getonedata()", 1000);
getonedata();
minQiya = jdatadata.items[jdatadata.items.length - 1][2];
maxQiya = jdatadata.items[jdatadata.items.length - 1][3];
},
error: function(data) {
}
})
}
/*
*/
build_diff_data = function(m_short, m_long, data) {
var result = [];
var pre_emashort = 0;
var pre_emalong = 0;
for (var i = 0, len = data.length; i < len; i++) {
var ema_short = data[i][1];
var ema_long = data[i][1];
if (i != 0) {
ema_short = (1.0 / m_short) * data[i][1] + (1 - 1.0 / m_short) * pre_emashort;
ema_long = (1.0 / m_long) * data[i][1] + (1 - 1.0 / m_long) * pre_emalong;
}
pre_emashort = ema_short;
pre_emalong = ema_long;
var diff = ema_short - ema_long;
result.push(diff);
}
return result;
}
build_dea_data = function(m, diff) {
var result = [];
var pre_ema_diff = 0;
for (var i = 0, len = diff.length; i < len; i++) {
var ema_diff = diff[i];
if (i != 0) {
ema_diff = (1.0 / m) * diff[i] + (1 - 1.0 / m) * pre_ema_diff;
}
pre_ema_diff = ema_diff;
result.push(ema_diff);
}
return result;
}
build_macd_data = function(data, diff, dea) {
var result = [];
for (var i = 0, len = data.length; i < len; i++) {
var macd = 2 * (diff[i] - dea[i]);
result.push(macd);
}
return result;
}
/*
*/
function gotoecharts(data) {
var ecKxId = document.getElementById("ecKx");
//var ecKx = echarts.init(ecKxId);
var ecKx = echarts.getInstanceByDom(ecKxId);
if (ecKx === undefined) {
ecKx = echarts.init(ecKxId);
}
//$(".header-item").text(JSON.stringify(data.items[data.items.length-1]))
$("header .now").text(data.topdata.now);
cldata = data.topdata.now;
$("footer").data("nowk", cldata);
$("header .open").text(data.topdata.open);
$("header .lowest").text(data.topdata.lowest);
$("header .highest").text(data.topdata.highest);
$("#container .txt1 span.a").text(getDateHM(data.topdata.topdata) + ":00");
$("#container .txt1 span.b").text(data.topdata.now);
$("#container .txt1 span.c").text(data.topdata.open);
$("#container .txt1 span.d").text(data.topdata.lowest);
$("#container .txt1 span.e").text(data.topdata.highest);
var diff = build_diff_data(12, 26, data.items);
var dea = build_dea_data(9, diff);
var macd = build_macd_data(data.items, diff, dea);
diffL = diff.length - 1;
deaL = dea.length - 1;
macdL = macd.length - 1;
$("#container .txt2 span.a i").text(diff[diffL].toFixed(4));
$("#container .txt2 span.b i").text(dea[deaL].toFixed(4));
$("#container .txt2 span.c i").text(macd[macdL].toFixed(4));
if (data.topdata.state == "up") {
$("header .ng-binding").removeClass("fall").addClass("rise")
}
if (data.topdata.state == "down") {
$("header .ng-binding").addClass("fall").removeClass("rise")
}
data0 = splitData(data.items);
var ecKdata = {
//animation: false,
backgroundColor: 'rgb(25, 25, 26)',
legend: {
show: false,
},
tooltip: {
show: false,
},
grid: [{
top: 5 + '%',
bottom: 30 + '%',
left: 4 + '%',
right: 0 + '%',
height: 55 + '%',
containLabel: true,
},
{
top: 65 + '%',
bottom: 0 + '%',
left: 2 + '%',
right: 0 + '%',
height: 25 + '%',
containLabel: true,
},
],
xAxis: [{
gridIndex: 0,
type: 'category',
data: data0.categoryData,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
/*axisLabel: {
textStyle: { color: 'rgb(100, 100, 100)' },
formatter: function (value, index) {
if (value>0) {
var time = value.split(" ")[0];
var split = time.split("-");
return split[1] + "/" + split[2];
}
else {
var time = value.split(" ")[1];
var split = time.split(":");
return split[0] + ":" + split[1];
}
}
},*/
},
{
gridIndex: 1,
type: 'category',
data: data0.categoryData,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
},
],
yAxis: [{
gridIndex: 0,
position: "right",
scale: true,
axisLabel: {
textStyle: {color: 'rgb(100, 100, 100)'},
formatter: function (value, index) {
return value.toFixed(5);
}
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
color: 'rgb(35, 34, 38)',
}
}
},
{
gridIndex: 1,
position: "right",
scale: true,
axisLabel: {
textStyle: {color: 'rgb(100, 100, 100)'},
formatter: function (value, index) {
if (value >= 0) {
return "+" + value.toFixed(4);
}
return value.toFixed(4);
}
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {show: false}
},
],
dataZoom: [{
xAxisIndex: [0, 1],
type: 'inside'
},],
series: [{
name: 'line',
type: 'line',
xAxisIndex: 0,
yAxisIndex: 0,
data: data0.categoryData,
showSymbol: false,
lineStyle: {
normal: {
width: 1,
color: 'rgb(253, 209, 42)',
}
},
animationDuration: 0,
markPoint: {
symbol: "rect",
animation: false,
symbolSize: [60, 18],
symbolOffset: [-20, 0],
animationDuration: 0,
data: [{
name: '最新价',
x: '100%',
yAxis: data.topdata.now,
value: data.topdata.now,
label: {
normal: {
show: true,
position: [0, 1],
textStyle: {
color: "#FFFFFF",
}
}
},
formatter: function (value, index) {
return value.toFixed(5);
},
}]
},
markLine: {
symbolSize: 0,
animationDuration: 0,
symbol: '',
label: {
normal: {
show: false,
}
},
lineStyle: {
normal: {
type: 'dashed',
width: 1,
},
},
data: [{yAxis: data.topdata.now},]
},
},
{
name: 'stick',
xAxisIndex: 0,
yAxisIndex: 0,
type: 'candlestick',
data: data0.values,
animationDuration: 0,
itemStyle: {
normal: {
color: 'rgb(25, 25, 26)',
color0: 'rgb(19, 233, 236)',
borderColor: 'rgb(250, 46, 66)',
borderColor0: 'rgb(19, 233, 236)',
barGap: '100%',
}
}
},
{
name: 'ma5',
type: 'line',
xAxisIndex: 0,
yAxisIndex: 0,
data: calculateMA(5),
smooth: true,
showSymbol: false,
animationDuration: 0,
lineStyle: {
normal: {
width: 1
}
}
},
{
name: 'ma10',
type: 'line',
xAxisIndex: 0,
yAxisIndex: 0,
data: calculateMA(10),
smooth: true,
showSymbol: false,
animationDuration: 0,
lineStyle: {
normal: {
width: 1,
color: '#86da2b'
}
}
},
{
name: 'ma20',
type: 'line',
xAxisIndex: 0,
yAxisIndex: 0,
data: calculateMA(20),
smooth: true,
showSymbol: false,
animationDuration: 0,
lineStyle: {
normal: {
width: 1,
color: '#ff5382'
}
}
},
{
name: 'ma30',
type: 'line',
xAxisIndex: 0,
yAxisIndex: 0,
data: calculateMA(30),
smooth: true,
showSymbol: false,
animationDuration: 0,
lineStyle: {
normal: {
width: 1,
color: '#3d8ef6'
}
}
},
{
name: 'diff',
type: 'line',
data: diff,
smooth: true,
showSymbol: false,
xAxisIndex: 1,
yAxisIndex: 1,
animationDuration: 0,
lineStyle: {
normal: {
width: 1,
color: '#00ffff'
}
}
},
{
name: 'dea',
type: 'line',
data: dea,
smooth: true,
showSymbol: false,
xAxisIndex: 1,
yAxisIndex: 1,
animationDuration: 0,
lineStyle: {
normal: {
width: 1,
color: '#fe337f'
}
}
},
{
name: 'macd',
type: 'bar',
xAxisIndex: 1,
yAxisIndex: 1,
animationDuration: 0,
itemStyle: {
normal: {
color: 'rgb(31, 198, 91)',
borderColor: 'black',
}
},
data: macd,
},
]
};
var ecKdata2 = {
legend: {
//data: ['日K', 'MA5', 'MA10', 'MA20', 'MA30']
},
/*
tooltip: {
trigger: 'axis'
},
*/
grid: [{
left: 20,
right: 70,
top: '5%',
bottom: 180
},
{
left: 20,
right: 70,
bottom: 60,
height: 60
}
],
xAxis: [{
type: 'category',
data: data0.categoryData,
scale: true,
boundaryGap: true,
splitLine: {show: false},
axisTick: {show: false},
splitLine: {show: false},
axisLine: {
show: false,
lineStyle: {
color: '#5f5f5f'
}
},
min: 'dataMin',
max: 'dataMax',
//show:false
},
{
gridIndex: 1,
type: 'category',
data: data0.categoryData,
scale: true,
boundaryGap: true,
//axisLine: {onZero: false},
axisTick: {show: false},
splitLine: {show: false},
axisLabel: {show: false},
min: 'dataMin',
max: 'dataMax',
show: false
}
],
yAxis: [{
type: 'value',
position: "right",
scale: true,
splitNumber: 5,
boundaryGap: false,
splitLine: {
show: true,
lineStyle: {
color: '#292929'
}
},
axisLine: {
show: false,
lineStyle: {
color: '#5f5f5f'
}
},
axisTick: {
show: false
},
axisLabel: {
show: true,
formatter: function (value, index) {
return value.toFixed(5)
}
},
max: 'dataMax',
min: 'dataMin'
},
{
gridIndex: 1,
position: "right",
scale: true,
splitNumber: 3,
boundaryGap: false,
splitLine: {show: false},
axisLine: {
show: false,
onZero: true,
lineStyle: {
color: '#5f5f5f'
}
},
axisTick: {
show: false
},
axisLabel: {
show: true,
formatter: function (value, index) {
if (value > 0) {
return "+" + value.toFixed(5)
}
if (value < 0) {
return value.toFixed(5)
}
if (value == 0) {
return '-' + value.toFixed(5)
}
}
},
max: 'dataMax',
min: 'dataMin'
}
],
dataZoom: [{
type: 'inside',
xAxisIndex: [0, 1],
start: obj.start,
end: obj.end
},
{
show: false,
xAxisIndex: [0, 1],
type: 'slider',
top: '1%',
start: 30,
end: 50
}
],
series: [{
name: '日K',
type: 'line',
data: kTl(data.items),
markLine: {
data: [
{yAxis: data.topdata.now}
],
symbol: '',
lineStyle: {
normal: {
color: '#c23531',
}
},
label: {
normal: {
formatter: '{c}'
}
},
animationDuration: 0
},
smooth: false,
symbol: 'none',
sampling: 'average',
itemStyle: {
normal: {
color: 'rgb(255, 70, 131)'
}
},
lineStyle: {
normal: {
width: 2,
color: "#d2c01e"
}
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#474019'
}, {
offset: 1,
color: '#262922'
}])
}
},
animationDuration: 0
},
{
xAxisIndex: 1,
yAxisIndex: 1,
name: 'MACD',
type: 'bar',
data: macd, //
smooth: true,
symbolSize: 1,
animationDuration: 0,
itemStyle: {
normal: {
color: 'rgba(31,198,98,1)'
}
}
},
{
xAxisIndex: 1,
yAxisIndex: 1,
name: 'diff', //快
type: 'line',
data: diff,
smooth: true,
animationDuration: 0,
symbolSize: 1,
lineStyle: {
normal: {
color: "#13E9EC"
}
}
},
{
xAxisIndex: 1,
yAxisIndex: 1,
name: 'dea',
type: 'line',
data: dea, //慢
smooth: true,
animationDuration: 0,
symbolSize: 1,
lineStyle: {
normal: {
color: "#FA2E42"
}
}
}
]
};
ecKx.clear();
if (ctype == "k") {
ecKx.setOption(ecKdata);
} else {
ecKx.setOption(ecKdata2);
}
ecKx.on("datazoom", function (param) {
obj = param.batch[0];
// ecKx.setOption(ecKdata);
})
ecKxId = null;
}
//calculateMA2(5,)
//
function getonedata() {
var data = JSON.parse(localStorage.getItem("data"));
clearTimeout(ccout);
var temp = $.ajax({
url: "/index/index/getprodata",
type: "get",
cache: false,
dataType: "json",
async: true,
data: {
"pid": order_pid
},
success: function(_onedata) {
var onedata = jQuery.parseJSON(Base64.decode(_onedata));
//$("#container .txt1 span.a").text(data.topdata.topdata);
// alert(NDAT.topdata.now)
var a = tempmy(onedata, data);
a = null;
},
error: function(XHR) {
XHR = null
},
complete: function(jqXHR, TS) {
jqXHR = null;
}
})
//temp.destroy();
delete temp;
ccout = setTimeout("getonedata()", 1000);
}
function tempmy(onedata, data) {
if (onedata.now > data.topdata.now) {
data.topdata = onedata;
data.topdata.state = "up"
}
if (onedata.now < data.topdata.now) {
data.topdata = onedata;
data.topdata.state = "down"
}
// data.items[59] = [data.items[59][0],onedata.now,onedata.now,data.items[59][3],data.items[59][4]];
data.items[data.items.length - 1][2] = onedata.now;
maxQiya = maxQiya > onedata.now ? maxQiya : onedata.now;
minQiya = minQiya < onedata.now ? minQiya : onedata.now;
data.items[data.items.length - 1][3] = minQiya;
data.items[data.items.length - 1][4] = maxQiya;
if (ctype == "l") {
K2line[data.items.length - 1] = data.topdata.now;
}
var gotoechartsNew = new gotoecharts(data);
// gotoechartsNew();
gotoechartsNew = null;
newprice = data.topdata.now;
var old_price = $('.data-price').html();
if (old_price * 10 < newprice * 10) {
$('.data-price').removeClass('fall');
$('.data-price').addClass('rise');
} else if (old_price * 10 > newprice * 10) {
$('.data-price').addClass('fall');
$('.data-price').removeClass('rise');
}
$('.data-price').html(newprice);
$('.col-nowprice').html(newprice);
$('.newprice').html(newprice);
$('.newprice').html(newprice);
onedata = null;
data = null;
}
//setInterval("getMaindata()",60000);