This commit is contained in:
你的名字
2025-07-14 10:22:40 +08:00
commit 0483b4b364
1388 changed files with 219353 additions and 0 deletions

989
public/static/wap/js/m.js Normal file
View File

@ -0,0 +1,989 @@
$(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);