lxf
2025-04-23 92dd4aaaa7fb67c4d65df18e0e69cbc6775575d3
src/eastmoney/HQData.js
@@ -21,16 +21,16 @@
// import Chart from '../../jscommon/umychart.vue/umychart.vue.js'
// var HQChart={ Chart:Chart };
function HQData() {}
function HQData() { }
window.globalVar = apiRrl.baseURL;
HQData.Explain = "东财财富网接口";
HQChart.Chart.JSConsole.Chart.Log = () => {};
HQChart.Chart.JSConsole.Complier.Log = () => {};
HQChart.Chart.JSConsole.Chart.Log = () => { };
HQChart.Chart.JSConsole.Complier.Log = () => { };
HQData.Log = HQChart.Chart.JSConsole.Chart.Log;
HQData.SetMinuteChartCoordinate = function() {
HQData.SetMinuteChartCoordinate = function () {
  HQChart.Chart.MARKET_SUFFIX_NAME.IsShowAvPrice = upperSymbol => {
    return HQData.IsShowAvPrice(upperSymbol);
  };
@@ -303,7 +303,7 @@
  }; // 获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后
};
HQData.NetworkFilter = function(data, callback) {
HQData.NetworkFilter = function (data, callback) {
  HQData.Log(`[HQData::NetworkFilter] ${HQData.Explain}`, data);
  switch (data.Name) {
@@ -333,7 +333,7 @@
  }
};
HQData.RequestMinuteData = function(data, callback) {
HQData.RequestMinuteData = function (data, callback) {
  data.PreventDefault = true;
  var symbol = data.Request.Data.symbol[0]; // 请求的股票代码
@@ -344,13 +344,13 @@
  $.ajax({
    url: obj.Url,
    type: "GET",
    success: function(recvData) {
    success: function (recvData) {
      HQData.RecvMinuteData(recvData, callback, { Data: data, Obj: obj });
    }
  });
};
HQData.RecvMinuteData = function(recvData, callback, option) {
HQData.RecvMinuteData = function (recvData, callback, option) {
  // var data = recvData.data
  var stock = { symbol: option.Obj.Symbol, minute: [] };
  // stock.name = data.name
@@ -364,7 +364,12 @@
  var isLME = HQChart.Chart.MARKET_SUFFIX_NAME.IsLME(symbolUpper); // 伦敦金属交易所
  // if (isChinaFutrues) stock.yclearing = data.preSettlement // 期货昨结算价
  // for (var i = 0; i < data.trends.length; ++i) {
  recvData = JSON.parse(recvData);
  if (typeof recvData === 'string') {
    recvData = JSON.parse(recvData);
  }
  console.log('recvData: ', recvData)
  // var date = moment.unix(strItem.t || strItem.id).format("YYYYMMDD");
  // //
  // var open = parseFloat(strItem.o || strItem.open);
@@ -416,7 +421,7 @@
  }
};
HQData.RequestMinuteDaysData = function(data, callback) {
HQData.RequestMinuteDaysData = function (data, callback) {
  data.PreventDefault = true;
  var symbol = data.Request.Data.symbol; // 请求的股票代码
  var dayCount = data.Request.Data.daycount;
@@ -427,7 +432,7 @@
  $.ajax({
    url: obj.Url,
    type: "GET",
    success: function(recvData) {
    success: function (recvData) {
      if (
        HQChart.Chart.MARKET_SUFFIX_NAME.IsSHFE(symbolUpper) ||
        HQChart.Chart.MARKET_SUFFIX_NAME.IsDCE(symbolUpper) ||
@@ -445,7 +450,7 @@
  });
};
HQData.RecvMinuteDaysData = function(recvData, callback, option) {
HQData.RecvMinuteDaysData = function (recvData, callback, option) {
  var data = recvData.data;
  var aryDayData = [];
  var itemDay = null;
@@ -535,7 +540,7 @@
};
// 期货模式
HQData.RecvMinuteDaysDataV2 = function(recvData, callback, option) {
HQData.RecvMinuteDaysDataV2 = function (recvData, callback, option) {
  var data = recvData.data;
  var aryDayData = [];
  var yClose = data.preClose;
@@ -648,7 +653,7 @@
  }
};
HQData.CorrectMinuteData = function(minuteData, xDatetime) {
HQData.CorrectMinuteData = function (minuteData, xDatetime) {
  if (minuteData.length === xDatetime.length) return null;
  var mapData = new Map();
@@ -676,7 +681,7 @@
  return newMinuteData;
};
// HQChart内置代码转成东方财富代码
HQData.GetInternalSymbol = function(symbol) {
HQData.GetInternalSymbol = function (symbol) {
  var aryData = symbol.split(".");
  var symbolUpper = symbol.toUpperCase();
  var arySymbol = "";
@@ -815,7 +820,7 @@
    }
    */
};
HQData.GetMinuteApiUrl = function(symbol, dayCount) {
HQData.GetMinuteApiUrl = function (symbol, dayCount) {
  var internalSymbol = HQData.GetInternalSymbol(symbol);
  console.log("查看", internalSymbol);
  // var url=`http://push2his.eastmoney.com/api/qt/stock/trends2/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58&secid=${internalSymbol.Market}.${internalSymbol.Symbol}&ndays=1&iscr=0&iscca=0`
@@ -824,9 +829,17 @@
  const kLines = JSON.parse(window.localStorage.getItem("kLine"));
  console.log("kLines===", kLines);
  // if (kLines.type === 'IN' ||kLines.type === 'US') {
  url =
    window.globalVar +
    `api/stock/getKData.do?pid=${kLines.pid}&interval=1&stockType=${kLines.type}`;
  // debugger;
  if (kLines.type == "HJ") {
    url =
      window.globalVar +
      `api/stock/getKData.do?pid=8888&interval=1&stockType=${kLines.name}`;
  } else {
    url =
      window.globalVar +
      `api/stock/getKData.do?pid=${kLines.pid}&interval=1&stockType=${kLines.type}`;
  }
  // }
  // if (kLines.type === 'qh') {
  // url = window.globalVar+`api/stock/getKData.do?symbol=${encodeURIComponent(kLines.pid)}&cmd=history&period=1440&stockType=${kLines.type}`
@@ -844,17 +857,17 @@
  };
};
HQData.IsSHSZ = function(symbol) {
HQData.IsSHSZ = function (symbol) {
  // 是否是A股
  return HQChart.Chart.MARKET_SUFFIX_NAME.IsSHSZ(symbol);
};
HQData.IsChinaFutures = function(symbol) {
HQData.IsChinaFutures = function (symbol) {
  // 国内期货
  return HQChart.Chart.MARKET_SUFFIX_NAME.IsChinaFutures(symbol);
};
HQData.IsShowAvPrice = function(upperSymbol) {
HQData.IsShowAvPrice = function (upperSymbol) {
  // 是否显示均价
  if (HQChart.Chart.MARKET_SUFFIX_NAME.IsLME(upperSymbol)) return false;
  if (upperSymbol === "UDI_100.ET") return false;
@@ -862,7 +875,7 @@
  return true;
};
// 是否显示第2个成交量图
HQData.IsShowVolChart = function(upperSymbol) {
HQData.IsShowVolChart = function (upperSymbol) {
  if (HQChart.Chart.MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol))
    return false;
  if (upperSymbol === "UDI_100.ET") return false;
@@ -874,7 +887,7 @@
//
//  美国洲际交易所 重柴油
//
HQData.GetCustomTradeTimeData = function(key) {
HQData.GetCustomTradeTimeData = function (key) {
  // 美国洲际交易所 重柴油 数据从7:50开始,是盘前数据吗????
  if (key === "IPE_G") {
    // 7:50-6:00
@@ -971,7 +984,7 @@
// 美股走势图X轴坐标
//
/// /////////////////////////////////////////////////////////////////////////
HQData.CreateUSAData = function(minuteStringData) {
HQData.CreateUSAData = function (minuteStringData) {
  const TIME_SPLIT = [
    { Start: 2130, End: 2359 },
    { Start: 0, End: 400 }
@@ -980,7 +993,7 @@
  return minuteStringData.CreateTimeData(TIME_SPLIT);
};
HQData.GetUSAData = function(upperSymbol, width) {
HQData.GetUSAData = function (upperSymbol, width) {
  const SHZE_MINUTE_X_COORDINATE = {
    // 完整模式
    Full: [
@@ -1017,7 +1030,7 @@
    Count: 391, //! ! 一共的分钟数据个数,不要填错了
    MiddleCount: 195, // Count/2 就可以。
    GetData: function(width) {
    GetData: function (width) {
      if (width < 200) return this.Min;
      else if (width < 400) return this.Simple;
@@ -1032,7 +1045,7 @@
// A股走势图X轴坐标
//
/// ////////////////////////////////////////////////////////////////////////
HQData.CreateSHSZData = function(minuteStringData) {
HQData.CreateSHSZData = function (minuteStringData) {
  const TIME_SPLIT = [
    { Start: 930, End: 1130 },
    { Start: 1301, End: 1500 }
@@ -1041,7 +1054,7 @@
  return minuteStringData.CreateTimeData(TIME_SPLIT);
};
HQData.GetSHSZData = function(upperSymbol, width) {
HQData.GetSHSZData = function (upperSymbol, width) {
  const SHZE_MINUTE_X_COORDINATE = {
    // 完整模式
    Full: [
@@ -1073,7 +1086,7 @@
    Count: 241, //! ! 一共的分钟数据个数,不要填错了
    MiddleCount: 121, // Count/2 就可以。
    GetData: function(width) {
    GetData: function (width) {
      if (width < 200) return this.Min;
      else if (width < 400) return this.Simple;
@@ -1088,7 +1101,7 @@
// 港股走势图X轴坐标
//
/// ////////////////////////////////////////////////////////////////////////////////////
HQData.CreateHKData = function(minuteStringData) {
HQData.CreateHKData = function (minuteStringData) {
  const TIME_SPLIT = [
    { Start: 930, End: 1200 },
    { Start: 1301, End: 1600 }
@@ -1097,7 +1110,7 @@
  return minuteStringData.CreateTimeData(TIME_SPLIT);
};
HQData.GetHKData = function(upperSymbol, width) {
HQData.GetHKData = function (upperSymbol, width) {
  const HK_MINUTE_X_COORDINATE = {
    // 完整模式
    Full: [
@@ -1133,7 +1146,7 @@
    Count: 331,
    MiddleCount: 150,
    GetData: function(width) {
    GetData: function (width) {
      if (width < 200) return this.Min;
      else if (width < 450) return this.Simple;
@@ -1147,7 +1160,7 @@
//  外汇走势图X轴坐标
//
/// /////////////////////////////////////////////////////////////////////////////////////
HQData.CreateForeignExchangeData = function(minuteStringData) {
HQData.CreateForeignExchangeData = function (minuteStringData) {
  // 外汇 5:00 - 4:59
  const TIME_SPLIT = [
    { Start: 500, End: 2359 },
@@ -1157,7 +1170,7 @@
  return minuteStringData.CreateTimeData(TIME_SPLIT);
};
HQData.GetForeignExchangeData = function(upperSymbol, width) {
HQData.GetForeignExchangeData = function (upperSymbol, width) {
  const FOREX_MINUTE_X_COORDINATE = {
    // 完整模式
    Full: [
@@ -1194,7 +1207,7 @@
    Count: 1440,
    MiddleCount: 600,
    GetData: function(width) {
    GetData: function (width) {
      if (width < 200) return this.Min;
      else if (width < 450) return this.Simple;
@@ -1209,7 +1222,7 @@
//  美元指数
//
/// ////////////////////////////////////////////////////////////////////
HQData.GetETTimeData = function(upperSymbol, minuteStringData) {
HQData.GetETTimeData = function (upperSymbol, minuteStringData) {
  if (upperSymbol === "UDI_100.ET") {
    // 美元指数 6:00 - 5:59
    const TIME_SPLIT = [
@@ -1221,7 +1234,7 @@
  }
};
HQData.GetETData = function(upperSymbol) {
HQData.GetETData = function (upperSymbol) {
  if (upperSymbol === "UDI_100.ET") {
    const data = {
      // 完整模式
@@ -1260,7 +1273,7 @@
      Count: 1440,
      MiddleCount: 600,
      GetData: function(width) {
      GetData: function (width) {
        if (width < 200) return this.Min;
        else if (width < 450) return this.Simple;
@@ -1272,7 +1285,7 @@
  }
};
HQData.GetETDecimal = function(symbol) {
HQData.GetETDecimal = function (symbol) {
  var upperSymbol = symbol.toUpperCase();
  if (upperSymbol === "UDI_100.ET") return 2;
@@ -1283,7 +1296,7 @@
// K线数据对接
//
/// //////////////////////////////////////////////////////////////////////////////
HQData.GetKLineApiUrl = function(symbol, period, right, option) {
HQData.GetKLineApiUrl = function (symbol, period, right, option) {
  console.log(111111, symbol, period, right, option);
  // https://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&beg=0&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid=0.300059&klt=101&fqt=0
@@ -1299,9 +1312,18 @@
  const kLines = JSON.parse(window.localStorage.getItem("kLine"));
  // if (kLines.type === 'IN' ||kLines.type === 'US') {
  const interval = ["D", "W", "M"][period];
  var url =
    window.globalVar +
    `api/stock/getKData.do?pid=${kLines.pid}&interval=${interval}&stockType=${kLines.type}`;
  if (kLines.type === 'HJ') {
    url =
      window.globalVar +
      `api/stock/getKData.do?pid=8888&interval=${interval}&stockType=${kLines.name}`;
  } else {
    var url = window.globalVar + `api/stock/getKData.do?pid=${kLines.pid}&interval=${interval}&stockType=${kLines.type}`;
  }
  // var url =
  //   window.globalVar +
  //   `api/stock/getKData.do?pid=${kLines.pid}&interval=${interval}&stockType=${kLines.type}`;
  // }
  const interval2 = [1440, 10080, 10080][period];
  // const interval2 = [1440, 10080, 43200][period]
@@ -1328,7 +1350,7 @@
  };
};
HQData.GetMinuteKLineApiUrl = function(symbol, period, right, option) {
HQData.GetMinuteKLineApiUrl = function (symbol, period, right, option) {
  var internalSymbol = HQData.GetInternalSymbol(symbol);
  var internalPeriod = HQData.GetInternalPeriod(period);
  var internalRight = HQData.GetInternalRight(right);
@@ -1338,9 +1360,19 @@
    var beginDate = option.End;
  } else {
    const kLines = JSON.parse(window.localStorage.getItem("kLine"));
    url =
      window.globalVar +
      `api/stock/getKData.do?pid=${kLines.pid}&interval=${internalPeriod}&stockType=${kLines.type}`;
    if (kLines.type === 'HJ') {
      url =
        window.globalVar +
        `api/stock/getKData.do?pid=8888&interval=${internalPeriod}&stockType=${kLines.name}`;
    } else {
      url =
        window.globalVar +
        `api/stock/getKData.do?pid=${kLines.pid}&interval=${internalPeriod}&stockType=${kLines.type}`;
    }
    // url =
    //   window.globalVar +
    //   `api/stock/getKData.do?pid=${kLines.pid}&interval=${internalPeriod}&stockType=${kLines.type}`;
  }
@@ -1353,7 +1385,7 @@
  };
};
HQData.GetInternalPeriod = function(periodID) {
HQData.GetInternalPeriod = function (periodID) {
  var MAP_PERIOD = new Map([
    [0, 101], // day
    [1, 102], // week
@@ -1369,13 +1401,13 @@
  return MAP_PERIOD.get(periodID);
};
HQData.GetInternalRight = function(right) {
HQData.GetInternalRight = function (right) {
  if (right === 0) return 0;
  else if (right === 1) return 1;
  else return 2;
};
// 是否支持复权
HQData.IsEnableRight = function(period, symbol) {
HQData.IsEnableRight = function (period, symbol) {
  var symbolUpper = null;
  symbolUpper = symbol.toUpperCase();
  // var symbolUpper = symbol.toUpperCase()
@@ -1401,7 +1433,7 @@
  return false;
};
HQData.RequestFlowCapitalData = function(data, callback) {
HQData.RequestFlowCapitalData = function (data, callback) {
  data.PreventDefault = true;
  var hqChartData = { code: 0, stock: [] }; // 如果没有数据就填空
@@ -1410,7 +1442,7 @@
  }
};
HQData.RequestHistoryData = function(data, callback) {
HQData.RequestHistoryData = function (data, callback) {
  data.PreventDefault = true;
  var symbol = data.Request.Data.symbol; // 请求的股票代码
  var period = data.Self.Period; // 周期
@@ -1422,13 +1454,13 @@
  $.ajax({
    url: obj.Url,
    type: "GET",
    success: function(recvData) {
    success: function (recvData) {
      HQData.RecvHistoryData(recvData, callback, { Data: data, Obj: obj });
    }
  });
};
HQData.RecvHistoryData = function(recvData, callback, option) {
HQData.RecvHistoryData = function (recvData, callback, option) {
  // var data = recvData.data
  var hqChartData = { code: 0, data: [] };
@@ -1439,7 +1471,9 @@
  const kLines = JSON.parse(window.localStorage.getItem("kLine"));
  // var yClose = data.preKPrice
  var yClose = "500";
  recvData = JSON.parse(recvData);
  if (typeof recvData === 'string') {
    recvData = JSON.parse(recvData);
  }
  if (kLines.type === "SZHB") {
    recvData = recvData.data;
@@ -1498,7 +1532,7 @@
  }
};
HQData.RequestRealtimeData = function(data, callback) {
HQData.RequestRealtimeData = function (data, callback) {
  data.PreventDefault = true;
  var symbol = data.Request.Data.symbol[0]; // 请求的股票代码
  var period = data.Self.Period; // 周期
@@ -1515,13 +1549,13 @@
  $.ajax({
    url: obj.Url,
    type: "GET",
    success: function(recvData) {
    success: function (recvData) {
      HQData.RecvRealtimeData(recvData, callback, { Data: data, Obj: obj });
    }
  });
};
HQData.RecvRealtimeData = function(recvData, callback, option) {
HQData.RecvRealtimeData = function (recvData, callback, option) {
  var data = recvData.data;
  // var stock = { symbol: option.Obj.Symbol, name: 'K线图' }
  // var stock = { symbol: option.Obj.Symbol, name: data.name || "" };
@@ -1608,23 +1642,23 @@
  var hqchartData = { code: 0, stock: [stock] };
  // if (option.Data.Self.IsDestroy === false) {
    HQData.Log("[HQData.RecvRealtimeData] hqchartData ", hqchartData);
    callback(hqchartData);
  HQData.Log("[HQData.RecvRealtimeData] hqchartData ", hqchartData);
  callback(hqchartData);
  // }
};
HQData.RequestHistoryMinuteData = function(data, callback) {
HQData.RequestHistoryMinuteData = function (data, callback) {
  data.PreventDefault = true;
  var symbol = data.Request.Data.symbol; // 请求的股票代码
  var period = data.Self.Period; // 周期
  var right = data.Self.Right; // 复权
  console.log(`[HQData::RequestHistoryMinuteData] Symbol=${symbol}`);
  console.log(`[HQData::RequestHistoryMinuteData] Symbol=${symbol}`, data.Request);
  var obj = HQData.GetMinuteKLineApiUrl(symbol, period, right, null);
  $.ajax({
    url: obj.Url,
    type: "GET",
    success: function(recvData) {
    success: function (recvData) {
      HQData.RecvHistoryMinuteData(recvData, callback, {
        Data: data,
        Obj: obj
@@ -1633,7 +1667,7 @@
  });
};
HQData.RecvHistoryMinuteData = function(recvData, callback, option) {
HQData.RecvHistoryMinuteData = function (recvData, callback, option) {
  var hqChartData = { code: 0, data: [] };
  hqChartData.symbol = option.Obj.Symbol;
  // hqChartData.name = data.name
@@ -1642,7 +1676,9 @@
  var yClose = "";
  console.log("recvData===data.name22", recvData, kLines);
  recvData = JSON.parse(recvData);
  if (typeof recvData === 'string') {
    recvData = JSON.parse(recvData);
  }
  if (kLines.type === "SZHB") {
    recvData = recvData.data;
@@ -1697,7 +1733,7 @@
  }
};
HQData.RequestMinuteRealtimeData = function(data, callback) {
HQData.RequestMinuteRealtimeData = function (data, callback) {
  data.PreventDefault = true;
  var symbol = data.Request.Data.symbol[0]; // 请求的股票代码
  var period = data.Self.Period; // 周期
@@ -1714,7 +1750,7 @@
  $.ajax({
    url: obj.Url,
    type: "GET",
    success: function(recvData) {
    success: function (recvData) {
      HQData.RecvMinuteRealtimeData(recvData, callback, {
        Data: data,
        Obj: obj
@@ -1723,7 +1759,7 @@
  });
};
HQData.RecvMinuteRealtimeData = function(recvData, callback, option) {
HQData.RecvMinuteRealtimeData = function (recvData, callback, option) {
  var data = recvData.data;
  var hqChartData = {
    code: 0,