| | |
| | | /* |
| | | Copyright (c) 2018 jones |
| | | |
| | | |
| | | http://www.apache.org/licenses/LICENSE-2.0 |
| | | |
| | | 开源项目 https://github.com/jones2000/HQChart |
| | | |
| | | |
| | | jones_2000@163.com |
| | | |
| | | 行情数据对接,使用东方财富网页数据做为案例的测试数据源 |
| | | 教程中所有的实例中使用的数据都来自互联网,或测试数据。仅用于学习HQChart图形使用. 教程禁止用于商业产品 |
| | | */ |
| | | |
| | | import $, { hasData } from 'jquery' |
| | | import $ from 'jquery' |
| | | // import $, { hasData } from 'jquery' |
| | | import HQChart from 'hqchart' |
| | | import moment from 'moment' |
| | | |
| | | //源码调试用 |
| | | //import Chart from '../../jscommon/umychart.vue/umychart.vue.js' |
| | | //var HQChart={ Chart:Chart }; |
| | | // 源码调试用 |
| | | // import Chart from '../../jscommon/umychart.vue/umychart.vue.js' |
| | | // var HQChart={ Chart:Chart }; |
| | | |
| | | function HQData() { } |
| | | function HQData () { } |
| | | window.globalVar = 'https://api.jumptalk.net/' |
| | | HQData.Explain = '东财财富网接口' |
| | | |
| | | 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 () { |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsShowAvPrice = (upperSymbol) => { return HQData.IsShowAvPrice(upperSymbol) } |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsEnableRight = (period, symbol) => { return HQData.IsEnableRight(period, symbol) } |
| | | |
| | | HQData.Log=HQChart.Chart.JSConsole.Chart.Log; |
| | | // 美股分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateUSAData = () => { return HQData.CreateUSAData(HQChart.Chart.JSChart.GetMinuteTimeStringData()) } // 替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetUSAData = (upperSymbol, width) => { return HQData.GetUSAData(upperSymbol, width) } // 替换X轴刻度信息 |
| | | |
| | | HQData.SetMinuteChartCoordinate=function() |
| | | { |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsShowAvPrice=(upperSymbol)=>{ return HQData.IsShowAvPrice(upperSymbol); } |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsEnableRight=(period, symbol)=> { return HQData.IsEnableRight(period, symbol); } |
| | | // A股分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateSHSZData = () => { return HQData.CreateSHSZData(HQChart.Chart.JSChart.GetMinuteTimeStringData()) } // 替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetSHSZData = (upperSymbol, width) => { return HQData.GetSHSZData(upperSymbol, width) } // 替换X轴刻度信息 |
| | | |
| | | //美股分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateUSAData=()=>{ return HQData.CreateUSAData(HQChart.Chart.JSChart.GetMinuteTimeStringData()); } //替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetUSAData=(upperSymbol,width)=> { return HQData.GetUSAData(upperSymbol,width); } //替换X轴刻度信息 |
| | | // 北交所 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateBJData = () => { return HQData.CreateSHSZData(HQChart.Chart.JSChart.GetMinuteTimeStringData()) } // 替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetBJData = (upperSymbol, width) => { return HQData.GetSHSZData(upperSymbol, width) } // 替换X轴刻度信息 |
| | | |
| | | //A股分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateSHSZData=()=>{ return HQData.CreateSHSZData(HQChart.Chart.JSChart.GetMinuteTimeStringData()); } //替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetSHSZData=(upperSymbol,width)=> { return HQData.GetSHSZData(upperSymbol,width); } //替换X轴刻度信息 |
| | | // 港股分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateHKData = () => { return HQData.CreateHKData(HQChart.Chart.JSChart.GetMinuteTimeStringData()) } // 替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetHKData = (upperSymbol, width) => { return HQData.GetHKData(upperSymbol, width) } // 替换X轴刻度信息 |
| | | |
| | | //北交所 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateBJData=()=>{ return HQData.CreateSHSZData(HQChart.Chart.JSChart.GetMinuteTimeStringData()); } //替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetBJData=(upperSymbol,width)=> { return HQData.GetSHSZData(upperSymbol,width); } //替换X轴刻度信息 |
| | | // 外汇分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateForeignExchangeData = () => { return HQData.CreateForeignExchangeData(HQChart.Chart.JSChart.GetMinuteTimeStringData()) } // 替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetForeignExchangeData = (upperSymbol, width) => { return HQData.GetForeignExchangeData(upperSymbol, width) } // 替换X轴刻度信息 |
| | | |
| | | // 期货 |
| | | var chinaFutrues = HQChart.Chart.JSChart.GetChinaFuturesTimeData() |
| | | chinaFutrues.AddNewFutures({ Suffix: '.SHF', Symbol: 'WR', Time: 9, Decimal: 2, Name: '线材' }) // obj= { Suffix:后缀, Symbol:品种代码, Time:交易时间段, Decimal:小数位数, Name:名字 } |
| | | chinaFutrues.AddNewFutures({ Suffix: '.DCE', Symbol: 'BB', Time: 9, Decimal: 2, Name: '胶合板' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.DCE', Symbol: 'JD', Time: 9, Decimal: 2, Name: '鸡蛋' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.DCE', Symbol: 'LH', Time: 9, Decimal: 2, Name: '生猪' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'WH', Time: 9, Decimal: 0, Name: '强麦' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'PM', Time: 9, Decimal: 0, Name: '普麦' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'RI', Time: 9, Decimal: 0, Name: '早籼稻' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'RS', Time: 9, Decimal: 0, Name: '菜籽' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'JR', Time: 9, Decimal: 0, Name: '粳稻' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'LR', Time: 9, Decimal: 0, Name: '晚籼稻' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'LR', Time: 9, Decimal: 0, Name: '晚籼稻' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'SM', Time: 9, Decimal: 0, Name: '锰硅' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'SF', Time: 9, Decimal: 0, Name: '硅铁' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'AP', Time: 9, Decimal: 0, Name: '苹果' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'CJ', Time: 9, Decimal: 0, Name: '红枣' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'UR', Time: 9, Decimal: 0, Name: '尿素' }) |
| | | chinaFutrues.AddNewFutures({ Suffix: '.CZC', Symbol: 'PK', Time: 9, Decimal: 0, Name: '花生' }) |
| | | |
| | | //港股分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateHKData=()=>{ return HQData.CreateHKData(HQChart.Chart.JSChart.GetMinuteTimeStringData()); } //替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetHKData=(upperSymbol,width)=> { return HQData.GetHKData(upperSymbol,width); } //替换X轴刻度信息 |
| | | // 芝加哥期货交易所 |
| | | var futrues = HQChart.Chart.JSChart.GetInternalTimeData('CBOTTimeData') |
| | | futrues.AddNewFutures({ Symbol: 'ZW', Time: 3, Decimal: 2, Name: '小麦' }) |
| | | futrues.AddNewFutures({ Symbol: 'XW', Time: 4, Decimal: 2, Name: '迷你小麦' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZC', Time: 3, Decimal: 2, Name: '玉米' }) |
| | | futrues.AddNewFutures({ Symbol: 'XC', Time: 4, Decimal: 2, Name: '迷你玉米' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZS', Time: 3, Decimal: 2, Name: '大豆' }) |
| | | futrues.AddNewFutures({ Symbol: 'XK', Time: 4, Decimal: 2, Name: '迷你大豆' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZL', Time: 3, Decimal: 2, Name: '豆油' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZM', Time: 3, Decimal: 2, Name: '豆粕' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZO', Time: 3, Decimal: 2, Name: '燕麦' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZR', Time: 3, Decimal: 2, Name: '稻谷' }) |
| | | futrues.AddNewFutures({ Symbol: 'ZL', Time: 3, Decimal: 2, Name: '豆油' }) |
| | | futrues.AddNewFutures({ Symbol: 'NQ', Time: 5, Decimal: 2, Name: '小型纳指' }) |
| | | futrues.AddNewFutures({ Symbol: 'ES', Time: 5, Decimal: 2, Name: '小型标普' }) |
| | | futrues.AddNewFutures({ Symbol: 'YM', Time: 5, Decimal: 0, Name: '小型道指' }) |
| | | |
| | | //外汇分时图坐标 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().CreateForeignExchangeData=()=>{ return HQData.CreateForeignExchangeData(HQChart.Chart.JSChart.GetMinuteTimeStringData()); } //替换交易时间段 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetForeignExchangeData=(upperSymbol,width)=> { return HQData.GetForeignExchangeData(upperSymbol,width); } //替换X轴刻度信息 |
| | | // 美国洲际交易所 |
| | | // var futrues = HQChart.Chart.JSChart.GetInternalTimeData('IPETimeData') |
| | | var lIndex = futrues.TIME_SPLIT.length |
| | | futrues.TIME_SPLIT[lIndex] = HQData.GetCustomTradeTimeData('IPE_G') |
| | | futrues.TIME_SPLIT2[lIndex] = HQData.GetCustomTradeTimeData('IPE_G_2') |
| | | futrues.AddNewFutures({ Symbol: 'G', Time: lIndex, Decimal: 0, Name: '低硫柴油' }) |
| | | |
| | | //期货 |
| | | var chinaFutrues=HQChart.Chart.JSChart.GetChinaFuturesTimeData(); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.SHF', Symbol:"WR", Time:9, Decimal:2, Name:'线材' }); //obj= { Suffix:后缀, Symbol:品种代码, Time:交易时间段, Decimal:小数位数, Name:名字 } |
| | | chinaFutrues.AddNewFutures({ Suffix:'.DCE', Symbol:"BB", Time:9, Decimal:2, Name:'胶合板' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.DCE', Symbol:"JD", Time:9, Decimal:2, Name:'鸡蛋' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.DCE', Symbol:"LH", Time:9, Decimal:2, Name:'生猪' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"WH", Time:9, Decimal:0, Name:'强麦' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"PM", Time:9, Decimal:0, Name:'普麦' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"RI", Time:9, Decimal:0, Name:'早籼稻' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"RS", Time:9, Decimal:0, Name:'菜籽' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"JR", Time:9, Decimal:0, Name:'粳稻' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"LR", Time:9, Decimal:0, Name:'晚籼稻' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"LR", Time:9, Decimal:0, Name:'晚籼稻' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"SM", Time:9, Decimal:0, Name:'锰硅' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"SF", Time:9, Decimal:0, Name:'硅铁' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"AP", Time:9, Decimal:0, Name:'苹果' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"CJ", Time:9, Decimal:0, Name:'红枣' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"UR", Time:9, Decimal:0, Name:'尿素' }); |
| | | chinaFutrues.AddNewFutures({ Suffix:'.CZC', Symbol:"PK", Time:9, Decimal:0, Name:'花生' }); |
| | | |
| | | //芝加哥期货交易所 |
| | | var futrues=HQChart.Chart.JSChart.GetInternalTimeData("CBOTTimeData"); |
| | | futrues.AddNewFutures({Symbol:"ZW", Time:3, Decimal:2, Name:'小麦' }); |
| | | futrues.AddNewFutures({Symbol:"XW", Time:4, Decimal:2, Name:'迷你小麦' }); |
| | | futrues.AddNewFutures({Symbol:"ZC", Time:3, Decimal:2, Name:'玉米' }); |
| | | futrues.AddNewFutures({Symbol:"XC", Time:4, Decimal:2, Name:'迷你玉米' }); |
| | | futrues.AddNewFutures({Symbol:"ZS", Time:3, Decimal:2, Name:'大豆' }); |
| | | futrues.AddNewFutures({Symbol:"XK", Time:4, Decimal:2, Name:'迷你大豆' }); |
| | | futrues.AddNewFutures({Symbol:"ZL", Time:3, Decimal:2, Name:'豆油' }); |
| | | futrues.AddNewFutures({Symbol:"ZM", Time:3, Decimal:2, Name:'豆粕' }); |
| | | futrues.AddNewFutures({Symbol:"ZO", Time:3, Decimal:2, Name:'燕麦' }); |
| | | futrues.AddNewFutures({Symbol:"ZR", Time:3, Decimal:2, Name:'稻谷' }); |
| | | futrues.AddNewFutures({Symbol:"ZL", Time:3, Decimal:2, Name:'豆油' }); |
| | | futrues.AddNewFutures({Symbol:"NQ", Time:5, Decimal:2, Name:'小型纳指' }); |
| | | futrues.AddNewFutures({Symbol:"ES", Time:5, Decimal:2, Name:'小型标普' }); |
| | | futrues.AddNewFutures({Symbol:"YM", Time:5, Decimal:0, Name:'小型道指' }); |
| | | |
| | | //美国洲际交易所 |
| | | var futrues=HQChart.Chart.JSChart.GetInternalTimeData("IPETimeData"); |
| | | var lIndex=futrues.TIME_SPLIT.length; |
| | | futrues.TIME_SPLIT[lIndex]=HQData.GetCustomTradeTimeData("IPE_G"); |
| | | futrues.TIME_SPLIT2[lIndex]=HQData.GetCustomTradeTimeData("IPE_G_2"); |
| | | futrues.AddNewFutures({Symbol:"G", Time:lIndex, Decimal:0, Name:'低硫柴油' }); |
| | | |
| | | //自定义类型 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().GetET=(upperSymbol)=>{ return HQData.GetETTimeData(upperSymbol,HQChart.Chart.JSChart.GetMinuteTimeStringData()); } //当天所有的交易时间点 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetETData=(upperSymbol)=> { return HQData.GetETData(upperSymbol); } //X轴刻度设置 |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetETDecimal = (symbol)=> { return HQData.GetETDecimal(symbol); } // 不同品种,使用不同小数位数 |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsETShowAvPrice=(symbol)=> {return false; } //提示信息是否显示均线数值 |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetETMarketStatus=(symbol)=> { return 2; } //获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后 |
| | | |
| | | // 自定义类型 |
| | | HQChart.Chart.JSChart.GetMinuteTimeStringData().GetET = (upperSymbol) => { return HQData.GetETTimeData(upperSymbol, HQChart.Chart.JSChart.GetMinuteTimeStringData()) } // 当天所有的交易时间点 |
| | | HQChart.Chart.JSChart.GetMinuteCoordinateData().GetETData = (upperSymbol) => { return HQData.GetETData(upperSymbol) } // X轴刻度设置 |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetETDecimal = (symbol) => { return HQData.GetETDecimal(symbol) } // 不同品种,使用不同小数位数 |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsETShowAvPrice = (symbol) => { return false } // 提示信息是否显示均线数值 |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetETMarketStatus = (symbol) => { return 2 } // 获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后 |
| | | } |
| | | |
| | | HQData.NetworkFilter = function (data, callback) { |
| | | HQData.Log(`[HQData::NetworkFilter] ${HQData.Explain}`, data) |
| | | |
| | | HQData.NetworkFilter=function(data, callback) |
| | | { |
| | | HQData.Log(`[HQData::NetworkFilter] ${HQData.Explain}`, data); |
| | | switch (data.Name) { |
| | | case 'MinuteChartContainer::RequestMinuteData': // 分时图数据对接 |
| | | HQData.RequestMinuteData(data, callback) |
| | | break |
| | | case 'MinuteChartContainer::RequestHistoryMinuteData': |
| | | HQData.RequestMinuteDaysData(data, callback) |
| | | break |
| | | |
| | | switch(data.Name) |
| | | { |
| | | case 'MinuteChartContainer::RequestMinuteData': //分时图数据对接 |
| | | HQData.RequestMinuteData(data, callback); |
| | | break; |
| | | case "MinuteChartContainer::RequestHistoryMinuteData": |
| | | HQData.RequestMinuteDaysData(data, callback); |
| | | break; |
| | | case 'KLineChartContainer::RequestHistoryData': // 日线全量数据下载 |
| | | HQData.RequestHistoryData(data, callback) |
| | | break |
| | | case 'KLineChartContainer::RequestRealtimeData': // 日线实时数据更新 |
| | | HQData.RequestRealtimeData(data, callback) |
| | | break |
| | | case 'KLineChartContainer::RequestFlowCapitalData': // 流通股本 |
| | | HQData.RequestFlowCapitalData(data, callback) |
| | | break |
| | | |
| | | case 'KLineChartContainer::RequestHistoryData': //日线全量数据下载 |
| | | HQData.RequestHistoryData(data,callback); |
| | | break; |
| | | case 'KLineChartContainer::RequestRealtimeData': //日线实时数据更新 |
| | | HQData.RequestRealtimeData(data,callback); |
| | | break; |
| | | case 'KLineChartContainer::RequestFlowCapitalData': //流通股本 |
| | | HQData.RequestFlowCapitalData(data,callback); |
| | | break; |
| | | |
| | | case 'KLineChartContainer::ReqeustHistoryMinuteData': //分钟全量数据下载 |
| | | HQData.RequestHistoryMinuteData(data, callback); |
| | | break; |
| | | case 'KLineChartContainer::RequestMinuteRealtimeData': //分钟增量数据更新 |
| | | HQData.RequestMinuteRealtimeData(data,callback); |
| | | break; |
| | | } |
| | | case 'KLineChartContainer::ReqeustHistoryMinuteData': // 分钟全量数据下载 |
| | | HQData.RequestHistoryMinuteData(data, callback) |
| | | break |
| | | case 'KLineChartContainer::RequestMinuteRealtimeData': // 分钟增量数据更新 |
| | | HQData.RequestMinuteRealtimeData(data, callback) |
| | | break |
| | | } |
| | | } |
| | | |
| | | HQData.RequestMinuteData=function(data, callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var symbol=data.Request.Data.symbol[0]; //请求的股票代码 |
| | | var dayCount=data.Request.Data.daycount; |
| | | console.log(`[HQData::RequestMinuteData] Symbol=${symbol}`); |
| | | var obj=HQData.GetMinuteApiUrl(symbol,1); |
| | | HQData.RequestMinuteData = function (data, callback) { |
| | | data.PreventDefault = true |
| | | |
| | | $.ajax( |
| | | var symbol = data.Request.Data.symbol[0] // 请求的股票代码 |
| | | // var dayCount = data.Request.Data.daycount |
| | | console.log(`[HQData::RequestMinuteData] Symbol=${symbol}`) |
| | | var obj = HQData.GetMinuteApiUrl(symbol, 1) |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | url: obj.Url, |
| | | type: 'GET', |
| | | success: function (recvData) { |
| | | HQData.RecvMinuteData(recvData, callback, { Data: data, Obj: obj }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | HQData.RecvMinuteData = function (recvData, callback, option) { |
| | | // var data = recvData.data |
| | | var stock = { symbol: option.Obj.Symbol, minute: [] } |
| | | // stock.name = data.name |
| | | // stock.yclose = data.preClose |
| | | stock.name = '12312' |
| | | stock.yclose = '123' |
| | | var symbol = option.Obj.Symbol |
| | | var symbolUpper = symbol.toUpperCase() |
| | | var isStockA = HQData.IsSHSZ(symbolUpper) |
| | | // var isChinaFutrues = HQData.IsChinaFutures(symbolUpper) |
| | | 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) |
| | | for (var i = 0; i < recvData.length; ++i) { |
| | | var strItem = recvData[i] |
| | | // console.log(strItem) |
| | | // var item = strItem.split(',') |
| | | // console.log('查看', item) |
| | | // var today = new Date(Date.parse(item[0])); // 不兼容 safari 浏览器 |
| | | var today = new Date(strItem.t) // 同时兼容 safari 浏览器 |
| | | var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var time = today.getHours() * 100 + today.getMinutes() |
| | | var stockItem = |
| | | { |
| | | HQData.RecvMinuteData(recvData, callback, { Data:data, Obj:obj }); |
| | | date: date, |
| | | time: time, |
| | | open: parseFloat(strItem.o), |
| | | high: parseFloat(strItem.h), |
| | | low: parseFloat(strItem.l), |
| | | // price: parseFloat(item[4]), |
| | | vol: parseFloat(strItem.vo) |
| | | // amount: parseFloat(item[6]), |
| | | // avprice: parseFloat(item[7]) |
| | | } |
| | | }); |
| | | if (isStockA) stockItem.vol *= 100 |
| | | if (isLME) stockItem.avprice = null |
| | | |
| | | stock.date = date |
| | | stock.minute.push(stockItem) |
| | | } |
| | | |
| | | var hqchartData = { stock: [stock], code: 0 } |
| | | |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvMinuteDaysData] hqchartData ', hqchartData) |
| | | callback(hqchartData) |
| | | } |
| | | } |
| | | |
| | | HQData.RecvMinuteData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | HQData.RequestMinuteDaysData = function (data, callback) { |
| | | data.PreventDefault = true |
| | | var symbol = data.Request.Data.symbol // 请求的股票代码 |
| | | var dayCount = data.Request.Data.daycount |
| | | var symbolUpper = symbol.toUpperCase() |
| | | console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`) |
| | | var obj = HQData.GetMinuteApiUrl(symbol, dayCount) |
| | | |
| | | var stock={symbol:option.Obj.Symbol, minute:[] }; |
| | | stock.name=data.name; |
| | | stock.yclose=data.preClose; |
| | | |
| | | var symbol=option.Obj.Symbol; |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | var isStockA=HQData.IsSHSZ(symbolUpper); |
| | | var isChinaFutrues=HQData.IsChinaFutures(symbolUpper); |
| | | var isLME=HQChart.Chart.MARKET_SUFFIX_NAME.IsLME(symbolUpper); //伦敦金属交易所 |
| | | if (isChinaFutrues) stock.yclearing=data.preSettlement; //期货昨结算价 |
| | | |
| | | for(var i=0;i<data.trends.length; ++i) |
| | | $.ajax( |
| | | { |
| | | var strItem=data.trends[i]; |
| | | var item=strItem.split(','); |
| | | // var today = new Date(Date.parse(item[0])); // 不兼容 safari 浏览器 |
| | | var today = new Date(Date.parse(item[0].replace(/-/g, "/"))); // 同时兼容 safari 浏览器 |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | var time=today.getHours()*100+today.getMinutes(); |
| | | |
| | | var stockItem= |
| | | { |
| | | date:date, |
| | | time:time, |
| | | open:parseFloat(item[1]), |
| | | high:parseFloat(item[2]), |
| | | low:parseFloat(item[3]), |
| | | price:parseFloat(item[4]), |
| | | vol:parseFloat(item[5]), |
| | | amount:parseFloat(item[6]), |
| | | avprice:parseFloat(item[7]), |
| | | } |
| | | |
| | | if (isStockA) stockItem.vol*=100; |
| | | if (isLME) stockItem.avprice=null; |
| | | |
| | | stock.date=date; |
| | | stock.minute.push(stockItem); |
| | | } |
| | | |
| | | var hqchartData={stock:[stock], code:0 }; |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | |
| | | HQData.Log("[HQData.RecvMinuteDaysData] hqchartData ", hqchartData) |
| | | callback(hqchartData); |
| | | } |
| | | url: obj.Url, |
| | | type: 'GET', |
| | | success: function (recvData) { |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsSHFE(symbolUpper) || HQChart.Chart.MARKET_SUFFIX_NAME.IsDCE(symbolUpper) || |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsCZCE(symbolUpper) || HQChart.Chart.MARKET_SUFFIX_NAME.IsCFFEX(symbolUpper)) { HQData.RecvMinuteDaysDataV2(recvData, callback, { Data: data, Obj: obj }) } else { HQData.RecvMinuteDaysData(recvData, callback, { Data: data, Obj: obj }) } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | HQData.RequestMinuteDaysData=function(data, callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var symbol=data.Request.Data.symbol; //请求的股票代码 |
| | | var dayCount=data.Request.Data.daycount; |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`); |
| | | var obj=HQData.GetMinuteApiUrl(symbol,dayCount); |
| | | HQData.RecvMinuteDaysData = function (recvData, callback, option) { |
| | | var data = recvData.data |
| | | var aryDayData = [] |
| | | var itemDay = null |
| | | var yClose = data.preClose |
| | | var symbol = option.Obj.Symbol |
| | | var symbolUpper = symbol.toUpperCase() |
| | | var isStockA = HQData.IsSHSZ(symbolUpper) |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | var xDatetime = HQChart.Chart.JSChart.GetMinuteTimeStringData().GetTimeData(symbol) |
| | | var firstTime = xDatetime[0] // 第1个数据的时间 |
| | | var minuteCount = xDatetime.length |
| | | var i = 0 |
| | | for (i = 0; i < data.trends.length; ++i) { |
| | | var strItem = data.trends[i] |
| | | var item = strItem.split(',') |
| | | // var today = new Date(Date.parse(item[0])); // 不兼容 safari 浏览器 |
| | | var today = new Date(Date.parse(item[0].replace(/-/g, '/'))) // 同时兼容 safari 浏览器 |
| | | var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var time = today.getHours() * 100 + today.getMinutes() |
| | | if (time === firstTime) break |
| | | } |
| | | |
| | | for (var j = 0; i < data.trends.length; ++i, ++j) { |
| | | var strItem = data.trends[i] |
| | | var item = strItem.split(',') |
| | | // var today = new Date(Date.parse(item[0])); // 不兼容 safari 浏览器 |
| | | var today = new Date(Date.parse(item[0].replace(/-/g, '/'))) // 同时兼容 safari 浏览器 |
| | | var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var time = today.getHours() * 100 + today.getMinutes() |
| | | |
| | | if (j % minuteCount === 0) { |
| | | if (itemDay && itemDay.minute.length > 0) aryDayData.push(itemDay) |
| | | itemDay = { minute: [], date: date, yclose: yClose } |
| | | } |
| | | |
| | | var price = parseFloat(item[4]) |
| | | var stockItem = |
| | | { |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsSHFE(symbolUpper) || HQChart.Chart.MARKET_SUFFIX_NAME.IsDCE(symbolUpper) || |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.IsCZCE(symbolUpper) || HQChart.Chart.MARKET_SUFFIX_NAME.IsCFFEX(symbolUpper)) |
| | | HQData.RecvMinuteDaysDataV2(recvData, callback, { Data:data, Obj:obj }); |
| | | else |
| | | HQData.RecvMinuteDaysData(recvData, callback, { Data:data, Obj:obj }); |
| | | date: date, |
| | | time: time, |
| | | open: price, |
| | | high: price, |
| | | low: price, |
| | | price: price, |
| | | amount: parseFloat(item[6]), |
| | | vol: parseFloat(item[5]), |
| | | avprice: parseFloat(item[7]) |
| | | } |
| | | }); |
| | | |
| | | if (isStockA) stockItem.vol *= 100 |
| | | |
| | | itemDay.minute.push([stockItem.time, stockItem.open, stockItem.high, stockItem.low, stockItem.price, stockItem.vol, stockItem.amount, stockItem.avprice, stockItem.date]) |
| | | } |
| | | |
| | | if (itemDay && itemDay.minute.length > 0) aryDayData.push(itemDay) |
| | | |
| | | aryDayData = aryDayData.reverse() |
| | | |
| | | var hqchartData = { symbol: option.Obj.Symbol, name: data.name, data: aryDayData, code: 0 } |
| | | |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvMinuteDaysData] hqchartData ', hqchartData) |
| | | callback(hqchartData) |
| | | } |
| | | } |
| | | |
| | | HQData.RecvMinuteDaysData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | var aryDayData=[]; |
| | | var itemDay=null; |
| | | var yClose=data.preClose; |
| | | var symbol=option.Obj.Symbol; |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | var isStockA=HQData.IsSHSZ(symbolUpper); |
| | | // 期货模式 |
| | | HQData.RecvMinuteDaysDataV2 = function (recvData, callback, option) { |
| | | var data = recvData.data |
| | | var aryDayData = [] |
| | | var yClose = data.preClose |
| | | var symbol = option.Obj.Symbol |
| | | var symbolUpper = symbol.toUpperCase() |
| | | var yClearing = data.preSettlement // 期货昨结算价 |
| | | |
| | | var xDatetime=HQChart.Chart.JSChart.GetMinuteTimeStringData().GetTimeData(symbol); |
| | | var firstTime=xDatetime[0]; //第1个数据的时间 |
| | | var minuteCount=xDatetime.length; |
| | | var i=0; |
| | | for(i=0;i<data.trends.length;++i) |
| | | { |
| | | var strItem=data.trends[i]; |
| | | var item=strItem.split(','); |
| | | // var today = new Date(Date.parse(item[0])); // 不兼容 safari 浏览器 |
| | | var today = new Date(Date.parse(item[0].replace(/-/g, "/"))); // 同时兼容 safari 浏览器 |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | var time=today.getHours()*100+today.getMinutes(); |
| | | if (time==firstTime) break; |
| | | } |
| | | |
| | | for(var j=0;i<data.trends.length; ++i, ++j) |
| | | { |
| | | var strItem=data.trends[i]; |
| | | var item=strItem.split(','); |
| | | // var today = new Date(Date.parse(item[0])); // 不兼容 safari 浏览器 |
| | | var today = new Date(Date.parse(item[0].replace(/-/g, "/"))); // 同时兼容 safari 浏览器 |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | var time=today.getHours()*100+today.getMinutes(); |
| | | var xDatetime = HQChart.Chart.JSChart.GetMinuteTimeStringData().GetTimeData(symbol) |
| | | var endTime = xDatetime[xDatetime.length - 1] // 最后个数据的时间 |
| | | var minuteCount = xDatetime.length |
| | | |
| | | if (j%minuteCount==0) |
| | | var itemDay = { minute: [], date: null, yclose: yClose, yclearing: yClearing } |
| | | for (var i = 0; i < data.trends.length; ++i) { |
| | | var strItem = data.trends[i] |
| | | var item = strItem.split(',') |
| | | var today = new Date(Date.parse(item[0])) |
| | | var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var time = today.getHours() * 100 + today.getMinutes() |
| | | |
| | | var price = parseFloat(item[4]) |
| | | var stockItem = |
| | | { |
| | | if (itemDay && itemDay.minute.length>0) aryDayData.push(itemDay); |
| | | itemDay={ minute:[], date:date, yclose: yClose }; |
| | | date: date, |
| | | time: time, |
| | | open: price, |
| | | high: price, |
| | | low: price, |
| | | price: price, |
| | | amount: parseFloat(item[6]), |
| | | vol: parseFloat(item[5]), |
| | | avprice: parseFloat(item[7]) |
| | | } |
| | | |
| | | var price=parseFloat(item[4]); |
| | | var stockItem= |
| | | { |
| | | date:date, |
| | | time:time, |
| | | open:price, |
| | | high:price, |
| | | low:price, |
| | | price:price, |
| | | amount:parseFloat(item[6]), |
| | | vol:parseFloat(item[5]), |
| | | avprice:parseFloat(item[7]), |
| | | itemDay.date = date |
| | | itemDay.minute.push([stockItem.time, stockItem.open, stockItem.high, stockItem.low, stockItem.price, stockItem.vol, stockItem.amount, stockItem.avprice, stockItem.date]) |
| | | |
| | | if (time === endTime) { |
| | | if (itemDay && itemDay.minute.length > 0) aryDayData.push(itemDay) |
| | | itemDay = { minute: [], date: null, yclose: yClose, yclearing: yClearing } |
| | | } |
| | | } |
| | | |
| | | if (itemDay && itemDay.minute.length > 0) aryDayData.push(itemDay) |
| | | |
| | | var preClose = null, preAvprice = null, preDate = null |
| | | for (var i = 0; i < aryDayData.length - 1; ++i) { |
| | | var itemDay = aryDayData[i] |
| | | var newMinuteData = HQData.CorrectMinuteData(itemDay.minute, xDatetime) |
| | | if (newMinuteData) { |
| | | for (var j = 0; j < newMinuteData.length; ++j) { |
| | | var item = newMinuteData[j] |
| | | if (item.length === 1) { |
| | | item[1] = item[2] = item[3] = item[4] = preClose |
| | | item[5] = item[6] = 0 |
| | | item[7] = preAvprice |
| | | item[8] = preDate |
| | | } else { |
| | | preClose = item[4] |
| | | preAvprice = item[7] |
| | | preDate = item[8] |
| | | } |
| | | |
| | | if (isStockA) stockItem.vol*=100; |
| | | |
| | | itemDay.minute.push([stockItem.time, stockItem.open, stockItem.high, stockItem.low, stockItem.price, stockItem.vol, stockItem.amount, stockItem.avprice, stockItem.date]); |
| | | } |
| | | itemDay.minute = newMinuteData |
| | | } else { |
| | | var item = itemDay.minute[itemDay.minute.length - 1] |
| | | preClose = item[4] |
| | | preAvprice = item[7] |
| | | preDate = item[8] |
| | | } |
| | | } |
| | | |
| | | if (itemDay && itemDay.minute.length>0) aryDayData.push(itemDay); |
| | | aryDayData = aryDayData.reverse() |
| | | |
| | | aryDayData=aryDayData.reverse(); |
| | | var hqchartData = { symbol: option.Obj.Symbol, name: data.name, data: aryDayData, code: 0 } |
| | | |
| | | var hqchartData={ symbol:option.Obj.Symbol, name:data.name, data:aryDayData, code:0 }; |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvMinuteDaysData] hqchartData ", hqchartData) |
| | | callback(hqchartData); |
| | | } |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvMinuteDaysData] hqchartData ', hqchartData) |
| | | callback(hqchartData) |
| | | } |
| | | } |
| | | |
| | | //期货模式 |
| | | HQData.RecvMinuteDaysDataV2=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | var aryDayData=[]; |
| | | var yClose=data.preClose; |
| | | var symbol=option.Obj.Symbol; |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | var yClearing=data.preSettlement; //期货昨结算价 |
| | | HQData.CorrectMinuteData = function (minuteData, xDatetime) { |
| | | if (minuteData.length === xDatetime.length) return null |
| | | |
| | | var xDatetime=HQChart.Chart.JSChart.GetMinuteTimeStringData().GetTimeData(symbol); |
| | | var endTime=xDatetime[xDatetime.length-1]; //最后个数据的时间 |
| | | var minuteCount=xDatetime.length; |
| | | |
| | | var itemDay={ minute:[], date:null, yclose: yClose, yclearing:yClearing }; |
| | | for(var i=0;i<data.trends.length; ++i) |
| | | { |
| | | var strItem=data.trends[i]; |
| | | var item=strItem.split(','); |
| | | var today = new Date(Date.parse(item[0])); |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | var time=today.getHours()*100+today.getMinutes(); |
| | | var mapData = new Map() |
| | | for (var i = 0; i < xDatetime.length; ++i) { |
| | | var item = xDatetime[i] |
| | | mapData.set(item, { Index: i, Time: item, Data: null }) |
| | | } |
| | | |
| | | var price=parseFloat(item[4]); |
| | | var stockItem= |
| | | { |
| | | date:date, |
| | | time:time, |
| | | open:price, |
| | | high:price, |
| | | low:price, |
| | | price:price, |
| | | amount:parseFloat(item[6]), |
| | | vol:parseFloat(item[5]), |
| | | avprice:parseFloat(item[7]), |
| | | } |
| | | for (var i = 0; i < minuteData.length; ++i) { |
| | | var item = minuteData[i] |
| | | var time = item[0] |
| | | |
| | | itemDay.date=date; |
| | | itemDay.minute.push([stockItem.time, stockItem.open, stockItem.high, stockItem.low, stockItem.price, stockItem.vol, stockItem.amount, stockItem.avprice, stockItem.date]); |
| | | var findItem = mapData.get(time) |
| | | findItem.Data = item |
| | | } |
| | | |
| | | if (time==endTime) |
| | | { |
| | | if (itemDay && itemDay.minute.length>0) aryDayData.push(itemDay); |
| | | itemDay={ minute:[], date:null, yclose: yClose, yclearing:yClearing }; |
| | | } |
| | | } |
| | | var newMinuteData = [] |
| | | for (var item of mapData) { |
| | | var value = item[1] |
| | | |
| | | if (itemDay && itemDay.minute.length>0) aryDayData.push(itemDay); |
| | | if (value.Data) newMinuteData[value.Index] = value.Data |
| | | else newMinuteData[value.Index] = [value.Time] |
| | | } |
| | | |
| | | var preClose=null, preAvprice=null, preDate=null; |
| | | for(var i=0;i<aryDayData.length-1;++i) |
| | | { |
| | | var itemDay=aryDayData[i]; |
| | | var newMinuteData=HQData.CorrectMinuteData(itemDay.minute, xDatetime); |
| | | if (newMinuteData) |
| | | { |
| | | for(var j=0;j<newMinuteData.length;++j) |
| | | { |
| | | var item=newMinuteData[j]; |
| | | if (item.length==1) |
| | | { |
| | | item[1]= item[2]= item[3]=item[4]=preClose; |
| | | item[5]=item[6]=0; |
| | | item[7]=preAvprice; |
| | | item[8]=preDate; |
| | | } |
| | | else |
| | | { |
| | | preClose=item[4]; |
| | | preAvprice=item[7]; |
| | | preDate=item[8]; |
| | | } |
| | | } |
| | | itemDay.minute=newMinuteData; |
| | | } |
| | | else |
| | | { |
| | | var item=itemDay.minute[itemDay.minute.length-1]; |
| | | preClose=item[4]; |
| | | preAvprice=item[7]; |
| | | preDate=item[8]; |
| | | } |
| | | } |
| | | |
| | | aryDayData=aryDayData.reverse(); |
| | | |
| | | var hqchartData={ symbol:option.Obj.Symbol, name:data.name, data:aryDayData, code:0 }; |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvMinuteDaysData] hqchartData ", hqchartData) |
| | | callback(hqchartData); |
| | | } |
| | | return newMinuteData |
| | | } |
| | | // HQChart内置代码转成东方财富代码 |
| | | HQData.GetInternalSymbol = function (symbol) { |
| | | var aryData = symbol.split('.') |
| | | var symbolUpper = symbol.toUpperCase() |
| | | var arySymbol = '' |
| | | arySymbol = aryData[0].split('_') |
| | | // console.log(symbol,aryData,arySymbol,66666666666) |
| | | if (arySymbol.length === 3) { |
| | | arySymbol[0] = arySymbol[0] + '_' + arySymbol[1] |
| | | arySymbol[1] = arySymbol[2] |
| | | } |
| | | var market = parseInt(arySymbol[1]) |
| | | var internalSymbol = arySymbol[0] |
| | | |
| | | HQData.CorrectMinuteData=function(minuteData, xDatetime) |
| | | { |
| | | if (minuteData.length==xDatetime.length) return null; |
| | | if (internalSymbol.indexOf('-') > 0) { |
| | | var aryValue = internalSymbol.split('-') |
| | | internalSymbol = aryValue[1] |
| | | } |
| | | |
| | | var mapData=new Map(); |
| | | for(var i=0;i<xDatetime.length; ++i) |
| | | { |
| | | var item=xDatetime[i]; |
| | | mapData.set(item, { Index:i, Time:item, Data:null }); |
| | | } |
| | | |
| | | for(var i=0;i<minuteData.length;++i) |
| | | { |
| | | var item=minuteData[i]; |
| | | var time=item[0]; |
| | | |
| | | var findItem=mapData.get(time); |
| | | findItem.Data=item; |
| | | } |
| | | |
| | | var newMinuteData=[]; |
| | | for(var item of mapData) |
| | | { |
| | | var value=item[1]; |
| | | |
| | | if (value.Data) newMinuteData[value.Index]=value.Data; |
| | | else newMinuteData[value.Index]=[value.Time]; |
| | | } |
| | | |
| | | return newMinuteData; |
| | | } |
| | | |
| | | |
| | | HQData.GetInternalSymbol=function(symbol) //HQChart内置代码转成东方财富代码 |
| | | { |
| | | |
| | | var aryData=symbol.split("."); |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | var arySymbol = '' |
| | | arySymbol=aryData[0].split('_'); |
| | | // console.log(symbol,aryData,arySymbol,66666666666) |
| | | if(arySymbol.length == 3){ |
| | | arySymbol[0] = arySymbol[0] + '_' + arySymbol[1] |
| | | arySymbol[1] = arySymbol[2] |
| | | } |
| | | var market=parseInt(arySymbol[1]); |
| | | var internalSymbol=arySymbol[0] ; |
| | | |
| | | if (internalSymbol.indexOf("-")>0) |
| | | { |
| | | var aryValue=internalSymbol.split('-'); |
| | | internalSymbol=aryValue[1]; |
| | | } |
| | | |
| | | return { Market:market, Symbol:internalSymbol }; |
| | | /* |
| | | return { Market: market, Symbol: internalSymbol } |
| | | /* |
| | | |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsUSA(symbolUpper)) //美股 |
| | | { |
| | |
| | | var set106Market=new Set( |
| | | ["RENN", "DIDI","BABA","ZH"] |
| | | ); |
| | | |
| | | |
| | | var set100Market=new Set |
| | | ( |
| | | ["DJIA", "SPX", "NDX"] |
| | | ) |
| | | |
| | | |
| | | if (set106Market.has(aryData[0])) market=106; |
| | | else if (set100Market.has(aryData[0])) market=100; |
| | | |
| | | |
| | | return { Market:market, Symbol:aryData[0].toUpperCase() }; |
| | | } |
| | | else if (HQChart.Chart.MARKET_SUFFIX_NAME.IsSZ(symbolUpper)) |
| | |
| | | var market=113; |
| | | |
| | | //上期能源 |
| | | if (symbolUpper.indexOf("SC")==0 || symbolUpper.indexOf("NR")==0 || |
| | | symbolUpper.indexOf("LU")==0 ||symbolUpper.indexOf("BC")==0) |
| | | if (symbolUpper.indexOf("SC")==0 || symbolUpper.indexOf("NR")==0 || |
| | | symbolUpper.indexOf("LU")==0 ||symbolUpper.indexOf("BC")==0) |
| | | market=142; |
| | | |
| | | return { Market:market, Symbol:aryData[0] }; |
| | |
| | | } |
| | | */ |
| | | } |
| | | HQData.GetMinuteApiUrl = function (symbol, dayCount) { |
| | | |
| | | HQData.GetMinuteApiUrl=function(symbol, dayCount) |
| | | { |
| | | var internalSymbol=HQData.GetInternalSymbol(symbol); |
| | | //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` |
| | | var url=`https://kline.workingman.icu/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=${dayCount}&iscr=0&iscca=0` |
| | | 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` |
| | | // var url = `http://api.mifeng.ws/api/futures/kline?time=1&period=day&symbol=FCPO&type=1` // ==== |
| | | var url = '' |
| | | 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}` |
| | | } |
| | | if (kLines.type === 'qh') { |
| | | url = window.globalVar+`api/stock/getKData.do?symbol=${encodeURIComponent(kLines.pid)}&cmd=history&period=1440&stockType=${kLines.type}` |
| | | // url = window.globalVar+`api/stock/getKData.do?pid=${kLines.pid}&interval=${interval}&stockType=${kLines.type}` |
| | | // url = `http://api-v1-f.js-stock.top/getkine?symbol=${encodeURIComponent(kLines.pid)}&cmd=history&period=1440&key=jssj2023key` |
| | | } |
| | | // var url = window.globalVar+`api/stock/getKData.do?pid=${kLines.pid}&interval=${interval}&stockType=${kLines.type}` |
| | | // var url = `http://api-in.js-stock.top/kline?interval=D&key=nvmihAoT51LnAWCpDeuw&pid=${internalSymbol.Symbol}` |
| | | |
| | | return { Url:url, Symbol:symbol, InternalSymbol:internalSymbol, DayCount:dayCount }; |
| | | return { Url: url, Symbol: symbol, InternalSymbol: internalSymbol, DayCount: dayCount } |
| | | } |
| | | |
| | | HQData.IsSHSZ=function(symbol) //是否是A股 |
| | | { |
| | | return HQChart.Chart.MARKET_SUFFIX_NAME.IsSHSZ(symbol); |
| | | HQData.IsSHSZ = function (symbol) { // 是否是A股 |
| | | return HQChart.Chart.MARKET_SUFFIX_NAME.IsSHSZ(symbol) |
| | | } |
| | | |
| | | HQData.IsChinaFutures=function(symbol) //国内期货 |
| | | { |
| | | return HQChart.Chart.MARKET_SUFFIX_NAME.IsChinaFutures(symbol); |
| | | HQData.IsChinaFutures = function (symbol) { // 国内期货 |
| | | return HQChart.Chart.MARKET_SUFFIX_NAME.IsChinaFutures(symbol) |
| | | } |
| | | |
| | | HQData.IsShowAvPrice=function(upperSymbol) //是否显示均价 |
| | | { |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsLME(upperSymbol)) return false; |
| | | if (upperSymbol=="UDI_100.ET") return false; |
| | | HQData.IsShowAvPrice = function (upperSymbol) { // 是否显示均价 |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsLME(upperSymbol)) return false |
| | | if (upperSymbol === 'UDI_100.ET') return false |
| | | |
| | | return true; |
| | | return true |
| | | } |
| | | // 是否显示第2个成交量图 |
| | | HQData.IsShowVolChart = function (upperSymbol) { |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol)) return false |
| | | if (upperSymbol === 'UDI_100.ET') return false |
| | | |
| | | return true |
| | | } |
| | | |
| | | HQData.IsShowVolChart=function(upperSymbol) //是否显示第2个成交量图 |
| | | { |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol)) return false; |
| | | if (upperSymbol=="UDI_100.ET") return false; |
| | | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /////////////////////////////////////////////////////////////////////////////////////////// |
| | | // |
| | | /// //////////////////////////////////////////////////////////////////////////////////////// |
| | | // |
| | | // 美国洲际交易所 重柴油 |
| | | // |
| | | HQData.GetCustomTradeTimeData=function(key) |
| | | { |
| | | if (key=="IPE_G") //美国洲际交易所 重柴油 数据从7:50开始,是盘前数据吗???? |
| | | { |
| | | //7:50-6:00 |
| | | var data= |
| | | HQData.GetCustomTradeTimeData = function (key) { |
| | | // 美国洲际交易所 重柴油 数据从7:50开始,是盘前数据吗???? |
| | | if (key === 'IPE_G') { |
| | | // 7:50-6:00 |
| | | var data = |
| | | { |
| | | Name:'7:50-6:00', |
| | | Data: |
| | | Name: '7:50-6:00', |
| | | Data: |
| | | [ |
| | | { Start: 750, End: 2359 }, |
| | | { Start: 0, End: 600 }, |
| | | { Start: 750, End: 2359 }, |
| | | { Start: 0, End: 600 } |
| | | ], |
| | | Coordinate: |
| | | Coordinate: |
| | | { |
| | | Full://完整模式 |
| | | Full: // 完整模式 |
| | | [ |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 1000, Text: '10:00' }, |
| | | { Value: 1200, Text: '12:00' }, |
| | | { Value: 1400, Text: '14:00' }, |
| | | { Value: 1600, Text: '16:00' }, |
| | | { Value: 1800, Text: '18:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 2200, Text: '22:00' }, |
| | | { Value: 0, Text: '0:00' }, |
| | | { Value: 200, Text: '2:00' }, |
| | | { Value: 400, Text: '4:00' }, |
| | | { Value: 600, Text: '6:00' }, |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 1000, Text: '10:00' }, |
| | | { Value: 1200, Text: '12:00' }, |
| | | { Value: 1400, Text: '14:00' }, |
| | | { Value: 1600, Text: '16:00' }, |
| | | { Value: 1800, Text: '18:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 2200, Text: '22:00' }, |
| | | { Value: 0, Text: '0:00' }, |
| | | { Value: 200, Text: '2:00' }, |
| | | { Value: 400, Text: '4:00' }, |
| | | { Value: 600, Text: '6:00' } |
| | | ], |
| | | Simple: //简洁模式 |
| | | Simple: // 简洁模式 |
| | | [ |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 1200, Text: '12:00' }, |
| | | { Value: 1600, Text: '16:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 0, Text: '0:00' }, |
| | | { Value: 400, Text: '4:00' }, |
| | | { Value: 600, Text: '6:00' }, |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 1200, Text: '12:00' }, |
| | | { Value: 1600, Text: '16:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 0, Text: '0:00' }, |
| | | { Value: 400, Text: '4:00' }, |
| | | { Value: 600, Text: '6:00' } |
| | | ], |
| | | Min: //最小模式 |
| | | Min: // 最小模式 |
| | | [ |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 600, Text: '6:00' } |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 600, Text: '6:00' } |
| | | ] |
| | | } |
| | | }; |
| | | } |
| | | |
| | | return data; |
| | | } |
| | | else if (key=="IPE_G_2") |
| | | { |
| | | var data=//ID=0 08:50-07:00 |
| | | { |
| | | Name:'08:50-07:00', |
| | | Data: |
| | | return data |
| | | } else if (key === 'IPE_G_2') { // ID=0 08:50-07:00 |
| | | var data = { |
| | | Name: '08:50-07:00', |
| | | Data: |
| | | [ |
| | | { Start: 850, End: 2359 }, |
| | | { Start: 0, End: 700 }, |
| | | { Start: 850, End: 2359 }, |
| | | { Start: 0, End: 700 } |
| | | ], |
| | | Coordinate: |
| | | Coordinate: |
| | | { |
| | | Full://完整模式 |
| | | Full: // 完整模式 |
| | | [ |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 1100, Text: '11:00' }, |
| | | { Value: 1300, Text: '13:00' }, |
| | | { Value: 1500, Text: '15:00' }, |
| | | { Value: 1700, Text: '17:00' }, |
| | | { Value: 1900, Text: '19:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 2300, Text: '23:00' }, |
| | | { Value: 1, Text: '1:00' }, |
| | | { Value: 300, Text: '3:00' }, |
| | | { Value: 500, Text: '5:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 1100, Text: '11:00' }, |
| | | { Value: 1300, Text: '13:00' }, |
| | | { Value: 1500, Text: '15:00' }, |
| | | { Value: 1700, Text: '17:00' }, |
| | | { Value: 1900, Text: '19:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 2300, Text: '23:00' }, |
| | | { Value: 1, Text: '1:00' }, |
| | | { Value: 300, Text: '3:00' }, |
| | | { Value: 500, Text: '5:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | ], |
| | | Simple: //简洁模式 |
| | | Simple: // 简洁模式 |
| | | [ |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 1300, Text: '13:00' }, |
| | | { Value: 1700, Text: '17:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 1, Text: '1:00' }, |
| | | { Value: 500, Text: '5:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 1300, Text: '13:00' }, |
| | | { Value: 1700, Text: '17:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 1, Text: '1:00' }, |
| | | { Value: 500, Text: '5:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | ], |
| | | Min: //最小模式 |
| | | Min: // 最小模式 |
| | | [ |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | ] |
| | | } |
| | | }; |
| | | |
| | | return data; |
| | | } |
| | | |
| | | return data |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //////////////////////////////////////////////////////////////////////////// |
| | | /// ///////////////////////////////////////////////////////////////////////// |
| | | // 美股走势图X轴坐标 |
| | | // |
| | | //////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateUSAData=function(minuteStringData) |
| | | { |
| | | const TIME_SPLIT = |
| | | /// ///////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateUSAData = function (minuteStringData) { |
| | | const TIME_SPLIT = |
| | | [ |
| | | { Start: 2130, End: 2359 }, |
| | | { Start: 0, End: 400 } |
| | | ]; |
| | | { Start: 2130, End: 2359 }, |
| | | { Start: 0, End: 400 } |
| | | ] |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT) |
| | | } |
| | | |
| | | HQData.GetUSAData=function(upperSymbol,width) |
| | | { |
| | | const SHZE_MINUTE_X_COORDINATE = |
| | | HQData.GetUSAData = function (upperSymbol, width) { |
| | | const SHZE_MINUTE_X_COORDINATE = |
| | | { |
| | | Full: //完整模式 |
| | | Full: // 完整模式 |
| | | [ |
| | | [0, 0, "rgb(200,200,200)", "21:30"], |
| | | [30, 1, "RGB(200,200,200)", "22:00"], |
| | | [60, 0, "RGB(200,200,200)", "22:30"], |
| | | [90, 1, "RGB(200,200,200)", "23:00"], |
| | | [120, 0, "RGB(200,200,200)", "23:30"], |
| | | [150, 1, "RGB(200,200,200)", "00:00"], |
| | | [180, 0, "RGB(200,200,200)", "00:30"], |
| | | [210, 1, "RGB(200,200,200)", "01:00"], |
| | | [240, 0, "RGB(200,200,200)", "01:30"], |
| | | [270, 1, "RGB(200,200,200)", "02:00"], |
| | | [300, 0, "RGB(200,200,200)", "02:30"], |
| | | [330, 1, "RGB(200,200,200)", "03:00"], |
| | | [360, 0, "RGB(200,200,200)", "03:30"], |
| | | [390, 1, "RGB(200,200,200)", "04:00"], |
| | | [0, 0, 'rgb(200,200,200)', '21:30'], |
| | | [30, 1, 'RGB(200,200,200)', '22:00'], |
| | | [60, 0, 'RGB(200,200,200)', '22:30'], |
| | | [90, 1, 'RGB(200,200,200)', '23:00'], |
| | | [120, 0, 'RGB(200,200,200)', '23:30'], |
| | | [150, 1, 'RGB(200,200,200)', '00:00'], |
| | | [180, 0, 'RGB(200,200,200)', '00:30'], |
| | | [210, 1, 'RGB(200,200,200)', '01:00'], |
| | | [240, 0, 'RGB(200,200,200)', '01:30'], |
| | | [270, 1, 'RGB(200,200,200)', '02:00'], |
| | | [300, 0, 'RGB(200,200,200)', '02:30'], |
| | | [330, 1, 'RGB(200,200,200)', '03:00'], |
| | | [360, 0, 'RGB(200,200,200)', '03:30'], |
| | | [390, 1, 'RGB(200,200,200)', '04:00'] |
| | | ], |
| | | Simple: //简洁模式 |
| | | Simple: // 简洁模式 |
| | | [ |
| | | [0, 0, "rgb(200,200,200)", "21:30"], |
| | | [90, 1, "RGB(200,200,200)", "23:00"], |
| | | [150, 1, "RGB(200,200,200)", "00:00"], |
| | | [270, 1, "RGB(200,200,200)", "02:00"], |
| | | [390, 1, "RGB(200,200,200)", "04:00"], |
| | | [0, 0, 'rgb(200,200,200)', '21:30'], |
| | | [90, 1, 'RGB(200,200,200)', '23:00'], |
| | | [150, 1, 'RGB(200,200,200)', '00:00'], |
| | | [270, 1, 'RGB(200,200,200)', '02:00'], |
| | | [390, 1, 'RGB(200,200,200)', '04:00'] |
| | | ], |
| | | Min: //最小模式 |
| | | Min: // 最小模式 |
| | | [ |
| | | [0, 0, "rgb(200,200,200)", "21:30"], |
| | | [210, 1, "RGB(200,200,200)", "01:00"], |
| | | [390, 1, "RGB(200,200,200)", "04:00"], |
| | | [0, 0, 'rgb(200,200,200)', '21:30'], |
| | | [210, 1, 'RGB(200,200,200)', '01:00'], |
| | | [390, 1, 'RGB(200,200,200)', '04:00'] |
| | | ], |
| | | |
| | | Count: 391, //!! 一共的分钟数据个数,不要填错了 |
| | | MiddleCount: 195, // Count/2 就可以。 |
| | | Count: 391, //! ! 一共的分钟数据个数,不要填错了 |
| | | MiddleCount: 195, // Count/2 就可以。 |
| | | |
| | | GetData: function (width) |
| | | { |
| | | if (width < 200) return this.Min; |
| | | else if (width < 400) return this.Simple; |
| | | GetData: function (width) { |
| | | if (width < 200) return this.Min |
| | | else if (width < 400) return this.Simple |
| | | |
| | | return this.Full; |
| | | } |
| | | }; |
| | | return this.Full |
| | | } |
| | | } |
| | | |
| | | return SHZE_MINUTE_X_COORDINATE; |
| | | return SHZE_MINUTE_X_COORDINATE |
| | | } |
| | | |
| | | |
| | | //////////////////////////////////////////////////////////////////////////// |
| | | /// ///////////////////////////////////////////////////////////////////////// |
| | | // A股走势图X轴坐标 |
| | | // |
| | | /////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateSHSZData=function(minuteStringData) |
| | | { |
| | | const TIME_SPLIT = |
| | | /// //////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateSHSZData = function (minuteStringData) { |
| | | const TIME_SPLIT = |
| | | [ |
| | | { Start: 930, End: 1130 }, |
| | | { Start: 1301, End: 1500 } |
| | | ]; |
| | | { Start: 930, End: 1130 }, |
| | | { Start: 1301, End: 1500 } |
| | | ] |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT) |
| | | } |
| | | |
| | | |
| | | HQData.GetSHSZData=function(upperSymbol,width) |
| | | { |
| | | const SHZE_MINUTE_X_COORDINATE = |
| | | HQData.GetSHSZData = function (upperSymbol, width) { |
| | | const SHZE_MINUTE_X_COORDINATE = |
| | | { |
| | | Full: //完整模式 |
| | | Full: // 完整模式 |
| | | [ |
| | | [0, 0, "rgb(200,200,200)", "09:30"], |
| | | [31, 0, "RGB(200,200,200)", "10:00"], |
| | | [61, 0, "RGB(200,200,200)", "10:30"], |
| | | [91, 0, "RGB(200,200,200)", "11:00"], |
| | | [120, 1, "RGB(200,200,200)", "11:30"], |
| | | [150, 0, "RGB(200,200,200)", "13:30"], |
| | | [180, 0, "RGB(200,200,200)", "14:00"], |
| | | [210, 0, "RGB(200,200,200)", "14:30"], |
| | | [240, 1, "RGB(200,200,200)", "15:00"], // 15:00 |
| | | [0, 0, 'rgb(200,200,200)', '09:30'], |
| | | [31, 0, 'RGB(200,200,200)', '10:00'], |
| | | [61, 0, 'RGB(200,200,200)', '10:30'], |
| | | [91, 0, 'RGB(200,200,200)', '11:00'], |
| | | [120, 1, 'RGB(200,200,200)', '11:30'], |
| | | [150, 0, 'RGB(200,200,200)', '13:30'], |
| | | [180, 0, 'RGB(200,200,200)', '14:00'], |
| | | [210, 0, 'RGB(200,200,200)', '14:30'], |
| | | [240, 1, 'RGB(200,200,200)', '15:00'] // 15:00 |
| | | ], |
| | | Simple: //简洁模式 |
| | | Simple: // 简洁模式 |
| | | [ |
| | | [0, 0, "rgb(200,200,200)", "09:30"], |
| | | [61, 0, "RGB(200,200,200)", "10:30"], |
| | | [120, 1, "RGB(200,200,200)", "11:30"], |
| | | [180, 0, "RGB(200,200,200)", "14:00"], |
| | | [240, 1, "RGB(200,200,200)", "15:00"] |
| | | [0, 0, 'rgb(200,200,200)', '09:30'], |
| | | [61, 0, 'RGB(200,200,200)', '10:30'], |
| | | [120, 1, 'RGB(200,200,200)', '11:30'], |
| | | [180, 0, 'RGB(200,200,200)', '14:00'], |
| | | [240, 1, 'RGB(200,200,200)', '15:00'] |
| | | ], |
| | | Min: //最小模式 |
| | | Min: // 最小模式 |
| | | [ |
| | | [0, 0, "rgb(200,200,200)", "09:30"], |
| | | [120, 1, "RGB(200,200,200)", "11:30"], |
| | | [240, 1, "RGB(200,200,200)", "15:00"] |
| | | [0, 0, 'rgb(200,200,200)', '09:30'], |
| | | [120, 1, 'RGB(200,200,200)', '11:30'], |
| | | [240, 1, 'RGB(200,200,200)', '15:00'] |
| | | ], |
| | | |
| | | Count: 241, //!! 一共的分钟数据个数,不要填错了 |
| | | MiddleCount: 121, // Count/2 就可以。 |
| | | Count: 241, //! ! 一共的分钟数据个数,不要填错了 |
| | | MiddleCount: 121, // Count/2 就可以。 |
| | | |
| | | GetData: function (width) |
| | | { |
| | | if (width < 200) return this.Min; |
| | | else if (width < 400) return this.Simple; |
| | | GetData: function (width) { |
| | | if (width < 200) return this.Min |
| | | else if (width < 400) return this.Simple |
| | | |
| | | return this.Full; |
| | | } |
| | | }; |
| | | return this.Full |
| | | } |
| | | } |
| | | |
| | | return SHZE_MINUTE_X_COORDINATE; |
| | | return SHZE_MINUTE_X_COORDINATE |
| | | } |
| | | |
| | | /////////////////////////////////////////////////////////////////////////////////////// |
| | | /// //////////////////////////////////////////////////////////////////////////////////// |
| | | // 港股走势图X轴坐标 |
| | | // |
| | | /////////////////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateHKData=function(minuteStringData) |
| | | { |
| | | const TIME_SPLIT = |
| | | /// //////////////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateHKData = function (minuteStringData) { |
| | | const TIME_SPLIT = |
| | | [ |
| | | { Start: 930, End: 1200 }, |
| | | { Start: 1301, End: 1600 } |
| | | ]; |
| | | { Start: 930, End: 1200 }, |
| | | { Start: 1301, End: 1600 } |
| | | ] |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT) |
| | | } |
| | | |
| | | HQData.GetHKData=function(upperSymbol,width) |
| | | { |
| | | const HK_MINUTE_X_COORDINATE = |
| | | HQData.GetHKData = function (upperSymbol, width) { |
| | | const HK_MINUTE_X_COORDINATE = |
| | | { |
| | | Full: //完整模式 |
| | | Full: // 完整模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "09:30"], |
| | | [30, 0, "RGB(200,200,200)", "10:00"], |
| | | [60, 1, "RGB(200,200,200)", "10:30"], |
| | | [90, 0, "RGB(200,200,200)", "11:00"], |
| | | [120, 1, "RGB(200,200,200)", "11:30"], |
| | | [151, 0, "RGB(200,200,200)", "13:00"], |
| | | [181, 1, "RGB(200,200,200)", "13:30"], |
| | | [211, 0, "RGB(200,200,200)", "14:00"], |
| | | [241, 1, "RGB(200,200,200)", "14:30"], |
| | | [271, 0, "RGB(200,200,200)", "15:00"], |
| | | [301, 1, "RGB(200,200,200)", "15:30"], |
| | | [331, 1, "RGB(200,200,200)", "16:00"] |
| | | [0, 1, 'RGB(200,200,200)', '09:30'], |
| | | [30, 0, 'RGB(200,200,200)', '10:00'], |
| | | [60, 1, 'RGB(200,200,200)', '10:30'], |
| | | [90, 0, 'RGB(200,200,200)', '11:00'], |
| | | [120, 1, 'RGB(200,200,200)', '11:30'], |
| | | [151, 0, 'RGB(200,200,200)', '13:00'], |
| | | [181, 1, 'RGB(200,200,200)', '13:30'], |
| | | [211, 0, 'RGB(200,200,200)', '14:00'], |
| | | [241, 1, 'RGB(200,200,200)', '14:30'], |
| | | [271, 0, 'RGB(200,200,200)', '15:00'], |
| | | [301, 1, 'RGB(200,200,200)', '15:30'], |
| | | [331, 1, 'RGB(200,200,200)', '16:00'] |
| | | ], |
| | | Simple: //简洁模式 |
| | | Simple: // 简洁模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "09:30"], |
| | | [60, 1, "RGB(200,200,200)", "10:30"], |
| | | [120, 1, "RGB(200,200,200)", "11:30"], |
| | | [211, 0, "RGB(200,200,200)", "14:00"], |
| | | [271, 0, "RGB(200,200,200)", "15:00"], |
| | | [331, 1, "RGB(200,200,200)", "16:00"] |
| | | [0, 1, 'RGB(200,200,200)', '09:30'], |
| | | [60, 1, 'RGB(200,200,200)', '10:30'], |
| | | [120, 1, 'RGB(200,200,200)', '11:30'], |
| | | [211, 0, 'RGB(200,200,200)', '14:00'], |
| | | [271, 0, 'RGB(200,200,200)', '15:00'], |
| | | [331, 1, 'RGB(200,200,200)', '16:00'] |
| | | ], |
| | | Min: //最小模式 |
| | | Min: // 最小模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "09:30"], |
| | | [151, 0, "RGB(200,200,200)", "13:00"], |
| | | [331, 1, "RGB(200,200,200)", "16:00"] |
| | | [0, 1, 'RGB(200,200,200)', '09:30'], |
| | | [151, 0, 'RGB(200,200,200)', '13:00'], |
| | | [331, 1, 'RGB(200,200,200)', '16:00'] |
| | | ], |
| | | |
| | | Count: 331, |
| | | MiddleCount: 150, |
| | | Count: 331, |
| | | MiddleCount: 150, |
| | | |
| | | GetData: function (width) |
| | | { |
| | | if (width < 200) return this.Min; |
| | | else if (width < 450) return this.Simple; |
| | | GetData: function (width) { |
| | | if (width < 200) return this.Min |
| | | else if (width < 450) return this.Simple |
| | | |
| | | return this.Full; |
| | | } |
| | | }; |
| | | return HK_MINUTE_X_COORDINATE; |
| | | return this.Full |
| | | } |
| | | } |
| | | return HK_MINUTE_X_COORDINATE |
| | | } |
| | | |
| | | //////////////////////////////////////////////////////////////////////////////////////// |
| | | /// ///////////////////////////////////////////////////////////////////////////////////// |
| | | // 外汇走势图X轴坐标 |
| | | // |
| | | //////////////////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateForeignExchangeData=function(minuteStringData) |
| | | { |
| | | //外汇 5:00 - 4:59 |
| | | const TIME_SPLIT= |
| | | /// ///////////////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateForeignExchangeData = function (minuteStringData) { |
| | | // 外汇 5:00 - 4:59 |
| | | const TIME_SPLIT = |
| | | [ |
| | | { Start:500, End:2359 }, |
| | | { Start:0, End:459 }, |
| | | ]; |
| | | { Start: 500, End: 2359 }, |
| | | { Start: 0, End: 459 } |
| | | ] |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT) |
| | | } |
| | | |
| | | HQData.GetForeignExchangeData=function(upperSymbol,width) |
| | | { |
| | | const FOREX_MINUTE_X_COORDINATE= |
| | | HQData.GetForeignExchangeData = function (upperSymbol, width) { |
| | | const FOREX_MINUTE_X_COORDINATE = |
| | | { |
| | | Full: //完整模式 |
| | | Full: // 完整模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "05:00"], |
| | | [120, 1, "RGB(200,200,200)", "07:00"], |
| | | [240, 1, "RGB(200,200,200)", "09:00"], |
| | | [360, 1, "RGB(200,200,200)", "11:00"], |
| | | [480, 0, "RGB(200,200,200)", "13:00"], |
| | | [600, 1, "RGB(200,200,200)", "15:00"], |
| | | [720, 1, "RGB(200,200,200)", "17:00"], |
| | | [840, 1, "RGB(200,200,200)", "19:00"], |
| | | [960, 1, "RGB(200,200,200)", "21:00"], |
| | | [1080, 1, "RGB(200,200,200)", "23:00"], |
| | | [1200, 1, "RGB(200,200,200)", "01:00"], |
| | | [1320, 1, "RGB(200,200,200)", "03:00"], |
| | | [1439, 1, "RGB(200,200,200)", "04:59"], |
| | | [0, 1, 'RGB(200,200,200)', '05:00'], |
| | | [120, 1, 'RGB(200,200,200)', '07:00'], |
| | | [240, 1, 'RGB(200,200,200)', '09:00'], |
| | | [360, 1, 'RGB(200,200,200)', '11:00'], |
| | | [480, 0, 'RGB(200,200,200)', '13:00'], |
| | | [600, 1, 'RGB(200,200,200)', '15:00'], |
| | | [720, 1, 'RGB(200,200,200)', '17:00'], |
| | | [840, 1, 'RGB(200,200,200)', '19:00'], |
| | | [960, 1, 'RGB(200,200,200)', '21:00'], |
| | | [1080, 1, 'RGB(200,200,200)', '23:00'], |
| | | [1200, 1, 'RGB(200,200,200)', '01:00'], |
| | | [1320, 1, 'RGB(200,200,200)', '03:00'], |
| | | [1439, 1, 'RGB(200,200,200)', '04:59'] |
| | | ], |
| | | Simple: //简洁模式 |
| | | Simple: // 简洁模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "06:00"], |
| | | [240, 1, "RGB(200,200,200)", "10:00"], |
| | | [480, 0, "RGB(200,200,200)", "14:00"], |
| | | [720, 1, "RGB(200,200,200)", "18:00"], |
| | | [960, 1, "RGB(200,200,200)", "22:00"], |
| | | [1200, 1, "RGB(200,200,200)", "02:00"], |
| | | [0, 1, 'RGB(200,200,200)', '06:00'], |
| | | [240, 1, 'RGB(200,200,200)', '10:00'], |
| | | [480, 0, 'RGB(200,200,200)', '14:00'], |
| | | [720, 1, 'RGB(200,200,200)', '18:00'], |
| | | [960, 1, 'RGB(200,200,200)', '22:00'], |
| | | [1200, 1, 'RGB(200,200,200)', '02:00'] |
| | | ], |
| | | Min: //最小模式 |
| | | Min: // 最小模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "06:00"], |
| | | [480, 0, "RGB(200,200,200)", "14:00"], |
| | | [960, 1, "RGB(200,200,200)", "22:00"], |
| | | [0, 1, 'RGB(200,200,200)', '06:00'], |
| | | [480, 0, 'RGB(200,200,200)', '14:00'], |
| | | [960, 1, 'RGB(200,200,200)', '22:00'] |
| | | ], |
| | | |
| | | Count: 1440, |
| | | MiddleCount: 600, |
| | | Count: 1440, |
| | | MiddleCount: 600, |
| | | |
| | | GetData: function (width) |
| | | { |
| | | if (width < 200) return this.Min; |
| | | else if (width < 450) return this.Simple; |
| | | GetData: function (width) { |
| | | if (width < 200) return this.Min |
| | | else if (width < 450) return this.Simple |
| | | |
| | | return this.Full; |
| | | } |
| | | } |
| | | return this.Full |
| | | } |
| | | } |
| | | |
| | | return FOREX_MINUTE_X_COORDINATE; |
| | | return FOREX_MINUTE_X_COORDINATE |
| | | } |
| | | |
| | | |
| | | //////////////////////////////////////////////////////////////////////// |
| | | /// ///////////////////////////////////////////////////////////////////// |
| | | // 美元指数 |
| | | // |
| | | /////////////////////////////////////////////////////////////////////// |
| | | HQData.GetETTimeData=function(upperSymbol,minuteStringData) |
| | | { |
| | | if (upperSymbol=="UDI_100.ET") |
| | | { |
| | | //美元指数 6:00 - 5:59 |
| | | const TIME_SPLIT= |
| | | /// //////////////////////////////////////////////////////////////////// |
| | | HQData.GetETTimeData = function (upperSymbol, minuteStringData) { |
| | | if (upperSymbol === 'UDI_100.ET') { |
| | | // 美元指数 6:00 - 5:59 |
| | | const TIME_SPLIT = |
| | | [ |
| | | { Start:600, End:2359 }, |
| | | { Start:0, End:559 }, |
| | | ]; |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | } |
| | | } |
| | | |
| | | HQData.GetETData=function(upperSymbol) |
| | | { |
| | | if (upperSymbol=="UDI_100.ET") |
| | | { |
| | | const data= |
| | | { |
| | | Full: //完整模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "06:00"], |
| | | [120, 1, "RGB(200,200,200)", "08:00"], |
| | | [240, 1, "RGB(200,200,200)", "10:00"], |
| | | [360, 1, "RGB(200,200,200)", "12:00"], |
| | | [480, 0, "RGB(200,200,200)", "14:00"], |
| | | [600, 1, "RGB(200,200,200)", "16:00"], |
| | | [720, 1, "RGB(200,200,200)", "18:00"], |
| | | [840, 1, "RGB(200,200,200)", "20:00"], |
| | | [960, 1, "RGB(200,200,200)", "22:00"], |
| | | [1080, 1, "RGB(200,200,200)", "0:00"], |
| | | [1200, 1, "RGB(200,200,200)", "02:00"], |
| | | [1320, 1, "RGB(200,200,200)", "04:00"], |
| | | [1439, 1, "RGB(200,200,200)", "05:59"], |
| | | ], |
| | | Simple: //简洁模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "06:00"], |
| | | [240, 1, "RGB(200,200,200)", "10:00"], |
| | | [480, 0, "RGB(200,200,200)", "14:00"], |
| | | [720, 1, "RGB(200,200,200)", "18:00"], |
| | | [960, 1, "RGB(200,200,200)", "22:00"], |
| | | [1200, 1, "RGB(200,200,200)", "02:00"], |
| | | [1439, 1, "RGB(200,200,200)", "05:59"], |
| | | ], |
| | | Min: //最小模式 |
| | | [ |
| | | [0, 1, "RGB(200,200,200)", "06:00"], |
| | | [720, 1, "RGB(200,200,200)", "18:00"], |
| | | [1439, 1, "RGB(200,200,200)", "05:59"], |
| | | ], |
| | | |
| | | Count: 1440, |
| | | MiddleCount: 600, |
| | | |
| | | GetData: function (width) |
| | | { |
| | | if (width < 200) return this.Min; |
| | | else if (width < 450) return this.Simple; |
| | | |
| | | return this.Full; |
| | | } |
| | | } |
| | | |
| | | return data; |
| | | } |
| | | } |
| | | |
| | | HQData.GetETDecimal=function(symbol) |
| | | { |
| | | var upperSymbol=symbol.toUpperCase(); |
| | | if (upperSymbol=="UDI_100.ET") return 2; |
| | | |
| | | return 2; |
| | | } |
| | | |
| | | |
| | | |
| | | /////////////////////////////////////////////////////////////////////////////////// |
| | | //K线数据对接 |
| | | // |
| | | ///////////////////////////////////////////////////////////////////////////////// |
| | | HQData.GetKLineApiUrl=function(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 |
| | | |
| | | var internalSymbol=HQData.GetInternalSymbol(symbol); |
| | | // console.log(internalSymbol,'caonima'); |
| | | // if(!internalSymbol.Market){ |
| | | // internalSymbol.Market = '106'; |
| | | // internalSymbol.Symbol = 'BRK_A'; |
| | | // } |
| | | |
| | | var internalPeriod=HQData.GetInternalPeriod(period); |
| | | var internalRight=HQData.GetInternalRight(right); |
| | | if (option && option.Update==true) |
| | | { |
| | | var beginDate=option.End; |
| | | var url=`https://kline.workingman.icu/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=${beginDate}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid=${internalSymbol.Market}.${internalSymbol.Symbol}&klt=${internalPeriod}&fqt=${internalRight}`; |
| | | } |
| | | else |
| | | { |
| | | var url=`https://kline.workingman.icu/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=${internalSymbol.Market}.${internalSymbol.Symbol}&klt=${internalPeriod}&fqt=${internalRight}`; |
| | | } |
| | | |
| | | return { Url:url, Symbol:symbol, InternalSymbol:internalSymbol, Period:period, Right:right }; |
| | | } |
| | | |
| | | HQData.GetMinuteKLineApiUrl=function(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 |
| | | |
| | | var internalSymbol=HQData.GetInternalSymbol(symbol); |
| | | // console.log(internalSymbol,'caonima'); |
| | | var internalPeriod=HQData.GetInternalPeriod(period); |
| | | var internalRight=HQData.GetInternalRight(right); |
| | | |
| | | if (option && option.Update==true) |
| | | { |
| | | var beginDate=option.End; |
| | | var url=`https://kline.workingman.icu/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=${beginDate}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid=${internalSymbol.Market}.${internalSymbol.Symbol}&klt=${internalPeriod}&fqt=${internalRight}`; |
| | | } |
| | | else |
| | | { |
| | | var url=`https://kline.workingman.icu/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=${internalSymbol.Market}.${internalSymbol.Symbol}&klt=${internalPeriod}&fqt=${internalRight}`; |
| | | } |
| | | |
| | | return { Url:url, Symbol:symbol, InternalSymbol:internalSymbol, Period:period, Right:right }; |
| | | } |
| | | |
| | | HQData.GetInternalPeriod=function(periodID) |
| | | { |
| | | var MAP_PERIOD=new Map( |
| | | [ |
| | | [0, 101], //day |
| | | [1, 102], //week |
| | | [2, 103], //month |
| | | |
| | | [4, 1], //1min |
| | | [5, 5], //5min |
| | | [6, 15], //15min |
| | | [7, 30], //30min |
| | | [8, 60], //60min |
| | | { Start: 600, End: 2359 }, |
| | | { Start: 0, End: 559 } |
| | | ] |
| | | ); |
| | | |
| | | return MAP_PERIOD.get(periodID); |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT) |
| | | } |
| | | } |
| | | |
| | | HQData.GetInternalRight=function(right) |
| | | { |
| | | if (right==0) return 0; |
| | | else if (right==1) return 1; |
| | | else return 2; |
| | | } |
| | | |
| | | HQData.IsEnableRight=function(period, symbol) //是否支持复权 |
| | | { |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsSHSZStockA(symbolUpper)) return true; |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsBJStock(symbol)) return true; |
| | | |
| | | var aryData=symbol.split("."); |
| | | var symbolUpper=symbol.toUpperCase(); |
| | | var arySymbol=aryData[0].split('_'); |
| | | var market=parseInt(arySymbol[1]); |
| | | |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsHK(symbolUpper)) |
| | | { |
| | | if (market==100) return false; //指数不支持复权 |
| | | return true; |
| | | } |
| | | |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsUSA(symbolUpper)) |
| | | { |
| | | if (market==100) return false; //指数不支持复权 |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | HQData.RequestFlowCapitalData=function(data,callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var hqChartData={code:0, stock:[]}; //如果没有数据就填空 |
| | | |
| | | if (data.Self.IsDestroy==false) |
| | | { |
| | | callback(hqChartData); |
| | | } |
| | | } |
| | | |
| | | HQData.RequestHistoryData=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::RequestHistoryData] Symbol=${symbol}`); |
| | | var obj=HQData.GetKLineApiUrl(symbol,period, right, null); |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | HQData.GetETData = function (upperSymbol) { |
| | | if (upperSymbol === 'UDI_100.ET') { |
| | | const data = |
| | | { |
| | | HQData.RecvHistoryData(recvData, callback, { Data:data, Obj:obj }); |
| | | Full: // 完整模式 |
| | | [ |
| | | [0, 1, 'RGB(200,200,200)', '06:00'], |
| | | [120, 1, 'RGB(200,200,200)', '08:00'], |
| | | [240, 1, 'RGB(200,200,200)', '10:00'], |
| | | [360, 1, 'RGB(200,200,200)', '12:00'], |
| | | [480, 0, 'RGB(200,200,200)', '14:00'], |
| | | [600, 1, 'RGB(200,200,200)', '16:00'], |
| | | [720, 1, 'RGB(200,200,200)', '18:00'], |
| | | [840, 1, 'RGB(200,200,200)', '20:00'], |
| | | [960, 1, 'RGB(200,200,200)', '22:00'], |
| | | [1080, 1, 'RGB(200,200,200)', '0:00'], |
| | | [1200, 1, 'RGB(200,200,200)', '02:00'], |
| | | [1320, 1, 'RGB(200,200,200)', '04:00'], |
| | | [1439, 1, 'RGB(200,200,200)', '05:59'] |
| | | ], |
| | | Simple: // 简洁模式 |
| | | [ |
| | | [0, 1, 'RGB(200,200,200)', '06:00'], |
| | | [240, 1, 'RGB(200,200,200)', '10:00'], |
| | | [480, 0, 'RGB(200,200,200)', '14:00'], |
| | | [720, 1, 'RGB(200,200,200)', '18:00'], |
| | | [960, 1, 'RGB(200,200,200)', '22:00'], |
| | | [1200, 1, 'RGB(200,200,200)', '02:00'], |
| | | [1439, 1, 'RGB(200,200,200)', '05:59'] |
| | | ], |
| | | Min: // 最小模式 |
| | | [ |
| | | [0, 1, 'RGB(200,200,200)', '06:00'], |
| | | [720, 1, 'RGB(200,200,200)', '18:00'], |
| | | [1439, 1, 'RGB(200,200,200)', '05:59'] |
| | | ], |
| | | |
| | | Count: 1440, |
| | | MiddleCount: 600, |
| | | |
| | | GetData: function (width) { |
| | | if (width < 200) return this.Min |
| | | else if (width < 450) return this.Simple |
| | | |
| | | return this.Full |
| | | } |
| | | } |
| | | }); |
| | | |
| | | return data |
| | | } |
| | | } |
| | | |
| | | HQData.RecvHistoryData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | HQData.GetETDecimal = function (symbol) { |
| | | var upperSymbol = symbol.toUpperCase() |
| | | if (upperSymbol === 'UDI_100.ET') return 2 |
| | | |
| | | var hqChartData={code:0, data:[]}; |
| | | hqChartData.symbol=option.Obj.Symbol; |
| | | hqChartData.name=data.name; |
| | | |
| | | var yClose=data.preKPrice;; |
| | | for(var i=0;i<data.klines.length; ++i) |
| | | { |
| | | var strItem=data.klines[i]; |
| | | var item=strItem.split(','); |
| | | var today = new Date(Date.parse(item[0])); |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | |
| | | var open=parseFloat(item[1]); |
| | | var close=parseFloat(item[2]); |
| | | var high=parseFloat(item[3]); |
| | | var low=parseFloat(item[4]); |
| | | var vol=parseFloat(item[5])*100; |
| | | var amount=parseFloat(item[6]); |
| | | |
| | | var newItem=[ date, yClose, open, high, low, close, vol, amount]; |
| | | hqChartData.data.push(newItem); |
| | | |
| | | yClose=close; |
| | | } |
| | | |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvHistoryData] hqchartData ", hqChartData) |
| | | callback(hqChartData); |
| | | } |
| | | return 2 |
| | | } |
| | | |
| | | HQData.RequestRealtimeData=function(data, callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var symbol=data.Request.Data.symbol[0]; //请求的股票代码 |
| | | var period=data.Self.Period; //周期 |
| | | var right=data.Self.Right; //复权 |
| | | var dateRange=data.Self.ChartPaint[0].Data.GetDateRange(); |
| | | /// //////////////////////////////////////////////////////////////////////////////// |
| | | // K线数据对接 |
| | | // |
| | | /// ////////////////////////////////////////////////////////////////////////////// |
| | | 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 |
| | | |
| | | var option={ Update:true }; |
| | | if (dateRange && dateRange.End && dateRange.End.Date>0) option.End=dateRange.End.Date; |
| | | var internalSymbol = HQData.GetInternalSymbol(symbol) |
| | | // console.log(internalSymbol,'caonima'); |
| | | // if (!internalSymbol.Market) { |
| | | // internalSymbol.Market = '106' |
| | | // internalSymbol.Symbol = 'BRK_A' |
| | | // } |
| | | |
| | | console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`); |
| | | var obj=HQData.GetKLineApiUrl(symbol,period, right, option); |
| | | // var internalPeriod = HQData.GetInternalPeriod(period) |
| | | // var internalRight = HQData.GetInternalRight(right) |
| | | 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}` |
| | | } |
| | | const interval2 = [1440, 10080, 10080][period] |
| | | // const interval2 = [1440, 10080, 43200][period] |
| | | if (kLines.type === 'qh') { |
| | | // var url = window.globalVar+`api/stock/getKData.do?pid=${kLines.pid}&interval=${interval}&stockType=${kLines.type}` |
| | | url = window.globalVar+`api/stock/getKData.do?symbol=${encodeURIComponent(kLines.pid)}&cmd=history&period=${interval2}&stockType=${kLines.type}` |
| | | } |
| | | if (option && option.Update === true) { |
| | | var beginDate = option.End |
| | | console.log('这是', beginDate) |
| | | // var url = `http://api.mifeng.ws/api/futures/kline?time=1&period=day&symbol=FCPO&type=1` |
| | | // var url = `http://api-in.js-stock.top/kline?interval=D&key=nvmihAoT51LnAWCpDeuw&pid=${internalSymbol.Symbol}` |
| | | } else { |
| | | // var url = `http://api.mifeng.ws/api/futures/kline?time=1&period=day&symbol=FCPO&type=1` |
| | | // var url = `http://api-in.js-stock.top/kline?interval=D&key=nvmihAoT51LnAWCpDeuw&pid=${internalSymbol.Symbol}` |
| | | } |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | { |
| | | HQData.RecvRealtimeData(recvData, callback, { Data:data, Obj:obj }); |
| | | } |
| | | }); |
| | | return { Url: url, Symbol: symbol, InternalSymbol: internalSymbol, Period: period, Right: right } |
| | | } |
| | | |
| | | HQData.RecvRealtimeData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | var stock={symbol:option.Obj.Symbol, name:data.name }; |
| | | |
| | | var yClose=data.preKPrice; |
| | | for(var i=0;i<data.klines.length; ++i) |
| | | { |
| | | var strItem=data.klines[i]; |
| | | var item=strItem.split(','); |
| | | var today = new Date(Date.parse(item[0])); |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | |
| | | var open=parseFloat(item[1]); |
| | | var close=parseFloat(item[2]); |
| | | var high=parseFloat(item[3]); |
| | | var low=parseFloat(item[4]); |
| | | var vol=parseFloat(item[5])*100; |
| | | var amount=parseFloat(item[6]); |
| | | HQData.GetMinuteKLineApiUrl = function (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 |
| | | |
| | | stock.yclose=yClose; |
| | | stock.open=open; |
| | | stock.high=high; |
| | | stock.low=low; |
| | | stock.price=close; |
| | | stock.vol=vol; |
| | | stock.amount=amount; |
| | | stock.date=date; |
| | | |
| | | yClose=close; |
| | | var internalSymbol = HQData.GetInternalSymbol(symbol) |
| | | // console.log(internalSymbol,'caonima'); |
| | | var internalPeriod = HQData.GetInternalPeriod(period) |
| | | var internalRight = HQData.GetInternalRight(right) |
| | | console.log(internalPeriod) |
| | | var url = '' |
| | | if (option && option.Update === true) { |
| | | var beginDate = option.End |
| | | // url = `https://kline.mitrade.cc11/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=${beginDate}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid=${internalSymbol.Market}.${internalSymbol.Symbol}&klt=${internalPeriod}&fqt=${internalRight}` |
| | | // var url = `https://kline.mitrade.cc11/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=${beginDate}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid=${internalSymbol.Market}.${internalSymbol.Symbol}&klt=${internalPeriod}&fqt=${internalRight}` |
| | | } else { |
| | | // var url = `http://api-in.js-stock.top/kline?interval=${internalPeriod}&key=nvmihAoT51LnAWCpDeuw&pid=${internalSymbol.Symbol}` |
| | | // url = `http://api-in.js-stock.top/kline?interval=${internalPeriod}&key=nvmihAoT51LnAWCpDeuw&pid=${internalSymbol.Symbol}` |
| | | const kLines = JSON.parse(window.localStorage.getItem('kLine')) |
| | | if (kLines.type === 'IN' ||kLines.type === 'US') { |
| | | url = window.globalVar+`api/stock/getKData.do?pid=${kLines.pid}&interval=${internalPeriod}&stockType=${kLines.type}` |
| | | } |
| | | |
| | | var hqchartData={code:0, stock:[stock] }; |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvRealtimeData] hqchartData ", hqchartData) |
| | | callback(hqchartData); |
| | | if (kLines.type === 'qh') { |
| | | const internalPe = internalPeriod === 1 ? 5 : internalPeriod |
| | | url = window.globalVar+`api/stock/getKData.do?symbol=${encodeURIComponent(kLines.pid)}&cmd=history&period=${internalPe}&stockType=${kLines.type}` |
| | | // url = window.globalVar+`api/stock/getKData.do?symbol=${encodeURIComponent(kLines.pid)}&cmd=history&period=${internalPe}&key=jssj2023key` |
| | | } |
| | | } |
| | | |
| | | return { Url: url, Symbol: symbol, InternalSymbol: internalSymbol, Period: period, Right: right } |
| | | } |
| | | |
| | | HQData.RequestHistoryMinuteData=function(data, callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var symbol=data.Request.Data.symbol; //请求的股票代码 |
| | | var period=data.Self.Period; //周期 |
| | | var right=data.Self.Right; //复权 |
| | | HQData.GetInternalPeriod = function (periodID) { |
| | | var MAP_PERIOD = new Map( |
| | | [ |
| | | [0, 101], // day |
| | | [1, 102], // week |
| | | [2, 103], // month |
| | | |
| | | console.log(`[HQData::RequestHistoryMinuteData] Symbol=${symbol}`); |
| | | var obj=HQData.GetMinuteKLineApiUrl(symbol,period, right, null); |
| | | [4, 1], // 1min |
| | | [5, 5], // 5min |
| | | [6, 15], // 15min |
| | | [7, 30], // 30min |
| | | [8, 60] // 60min |
| | | ] |
| | | ) |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | { |
| | | HQData.RecvHistoryMinuteData(recvData, callback, { Data:data, Obj:obj }); |
| | | } |
| | | }); |
| | | |
| | | return MAP_PERIOD.get(periodID) |
| | | } |
| | | |
| | | HQData.RecvHistoryMinuteData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | HQData.GetInternalRight = function (right) { |
| | | if (right === 0) return 0 |
| | | else if (right === 1) return 1 |
| | | else return 2 |
| | | } |
| | | // 是否支持复权 |
| | | HQData.IsEnableRight = function (period, symbol) { |
| | | var symbolUpper = null |
| | | symbolUpper = symbol.toUpperCase() |
| | | // var symbolUpper = symbol.toUpperCase() |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsSHSZStockA(symbolUpper)) return true |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsBJStock(symbol)) return true |
| | | |
| | | var hqChartData={code:0, data:[]}; |
| | | hqChartData.symbol=option.Obj.Symbol; |
| | | hqChartData.name=data.name; |
| | | var aryData = symbol.split('.') |
| | | symbolUpper = symbol.toUpperCase() |
| | | // var symbolUpper = symbol.toUpperCase() |
| | | var arySymbol = aryData[0].split('_') |
| | | var market = parseInt(arySymbol[1]) |
| | | |
| | | var yClose=data.preKPrice;; |
| | | for(var i=0;i<data.klines.length; ++i) |
| | | { |
| | | var strItem=data.klines[i]; |
| | | var item=strItem.split(','); |
| | | var today = new Date(Date.parse(item[0])); |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | var time=today.getHours()*100+today.getMinutes(); |
| | | |
| | | var open=parseFloat(item[1]); |
| | | var close=parseFloat(item[2]); |
| | | var high=parseFloat(item[3]); |
| | | var low=parseFloat(item[4]); |
| | | var vol=parseFloat(item[5])*100; |
| | | var amount=parseFloat(item[6]); |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsHK(symbolUpper)) { |
| | | if (market === 100) return false // 指数不支持复权 |
| | | return true |
| | | } |
| | | |
| | | var newItem=[ date, yClose, open, high, low, close, vol, amount, time]; |
| | | hqChartData.data.push(newItem); |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsUSA(symbolUpper)) { |
| | | if (market === 100) return false // 指数不支持复权 |
| | | return true |
| | | } |
| | | |
| | | yClose=close; |
| | | } |
| | | |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvHistoryMinuteData] hqchartData ", hqChartData) |
| | | callback(hqChartData); |
| | | } |
| | | return false |
| | | } |
| | | |
| | | HQData.RequestMinuteRealtimeData=function(data, callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var symbol=data.Request.Data.symbol[0]; //请求的股票代码 |
| | | var period=data.Self.Period; //周期 |
| | | var right=data.Self.Right; //复权 |
| | | var dateRange=data.Self.ChartPaint[0].Data.GetDateRange(); |
| | | HQData.RequestFlowCapitalData = function (data, callback) { |
| | | data.PreventDefault = true |
| | | var hqChartData = {code: 0, stock: []} // 如果没有数据就填空 |
| | | |
| | | var option={ Update:true }; |
| | | if (dateRange && dateRange.End && dateRange.End.Date>0) option.End=dateRange.End.Date; |
| | | |
| | | console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`); |
| | | var obj=HQData.GetMinuteKLineApiUrl(symbol,period, right, option); |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | { |
| | | HQData.RecvMinuteRealtimeData(recvData, callback, { Data:data, Obj:obj }); |
| | | } |
| | | }); |
| | | if (data.Self.IsDestroy === false) { |
| | | callback(hqChartData) |
| | | } |
| | | } |
| | | |
| | | HQData.RecvMinuteRealtimeData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | var hqChartData={code:0, data:[], ver:2.0, symbol:option.Obj.Symbol, name:data.name}; //更新数据使用2.0版本格式 |
| | | HQData.RequestHistoryData = function (data, callback) { |
| | | data.PreventDefault = true |
| | | var symbol = data.Request.Data.symbol // 请求的股票代码 |
| | | var period = data.Self.Period // 周期 |
| | | var right = data.Self.Right // 复权 |
| | | |
| | | var yClose=data.preKPrice; |
| | | for(var i=0;i<data.klines.length; ++i) |
| | | console.log(`[HQData::RequestHistoryData] Symbol=${symbol}`) |
| | | var obj = HQData.GetKLineApiUrl(symbol, period, right, null) |
| | | |
| | | $.ajax( |
| | | { |
| | | var strItem=data.klines[i]; |
| | | var item=strItem.split(','); |
| | | var today = new Date(Date.parse(item[0])); |
| | | var date=today.getFullYear()*10000+(today.getMonth()+1)*100+today.getDate(); |
| | | var time=today.getHours()*100+today.getMinutes(); |
| | | |
| | | var open=parseFloat(item[1]); |
| | | var close=parseFloat(item[2]); |
| | | var high=parseFloat(item[3]); |
| | | var low=parseFloat(item[4]); |
| | | var vol=parseFloat(item[5])*100; |
| | | var amount=parseFloat(item[6]); |
| | | url: obj.Url, |
| | | type: 'GET', |
| | | success: function (recvData) { |
| | | HQData.RecvHistoryData(recvData, callback, { Data: data, Obj: obj }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | var newItem=[ date, yClose, open, high, low, close, vol, amount, time]; |
| | | hqChartData.data.push(newItem); |
| | | |
| | | yClose=close; |
| | | HQData.RecvHistoryData = function (recvData, callback, option) { |
| | | // var data = recvData.data |
| | | console.log(111111212121, recvData) |
| | | var hqChartData = {code: 0, data: []} |
| | | hqChartData.symbol = option.Obj.Symbol |
| | | // hqChartData.name = data.name |
| | | hqChartData.name = '123' |
| | | // console.log('data.name', data.name) |
| | | const kLines = JSON.parse(window.localStorage.getItem('kLine')) |
| | | // var yClose = data.preKPrice |
| | | var yClose = '500' |
| | | recvData = JSON.parse(recvData) |
| | | if (kLines.type === 'IN' ||kLines.type === 'US') { |
| | | for (var i = 0; i < recvData.length; ++i) { |
| | | var strItem = recvData[i] |
| | | // var item = strItem.split(',') |
| | | // var today = new Date(strItem.t) |
| | | // var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var date = moment.unix(strItem.t).format('YYYYMMDD') |
| | | // |
| | | var open = parseFloat(strItem.o) |
| | | var close = parseFloat(strItem.c) |
| | | var high = parseFloat(strItem.h) |
| | | var low = parseFloat(strItem.l) |
| | | var vol = parseFloat(strItem.v) * 100 |
| | | var amount = parseFloat((Math.random() * 100) + '') |
| | | // |
| | | var newItem = [date, yClose, open, high, low, close, vol, amount] |
| | | hqChartData.data.push(newItem) |
| | | // |
| | | yClose = close |
| | | } |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvMinuteRealtimeData] hqchartData ", hqChartData) |
| | | callback(hqChartData); |
| | | } |
| | | if (kLines.type === 'qh') { |
| | | console.log('recvData====', recvData) |
| | | for (var x = 0; x < recvData.list.length; ++x) { |
| | | var strItem2 = recvData.list[x] |
| | | // var item = strItem.split(',') |
| | | // var today = new Date(strItem.t) |
| | | // var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var date2 = moment(strItem2.ctm).format('YYYYMMDD') |
| | | // |
| | | var open2 = parseFloat(strItem2.open) |
| | | var close2 = parseFloat(strItem2.close) |
| | | var high2 = parseFloat(strItem2.high) |
| | | var low2 = parseFloat(strItem2.low) |
| | | var vol2 = 100 |
| | | // var vol2 = parseFloat(strItem2.v) * 100 |
| | | var amount2 = parseFloat((Math.random() * 100) + '') |
| | | // |
| | | var newItem2 = [date2, yClose, open2, high2, low2, close2, vol2, amount2] |
| | | hqChartData.data.push(newItem2) |
| | | // |
| | | yClose = close |
| | | } |
| | | } |
| | | |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvHistoryData] hqchartData ', hqChartData) |
| | | callback(hqChartData) |
| | | } |
| | | } |
| | | |
| | | HQData.RequestRealtimeData = function (data, callback) { |
| | | data.PreventDefault = true |
| | | var symbol = data.Request.Data.symbol[0] // 请求的股票代码 |
| | | var period = data.Self.Period // 周期 |
| | | var right = data.Self.Right // 复权 |
| | | var dateRange = data.Self.ChartPaint[0].Data.GetDateRange() |
| | | |
| | | var option = { Update: true } |
| | | if (dateRange && dateRange.End && dateRange.End.Date > 0) option.End = dateRange.End.Date |
| | | |
| | | console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`) |
| | | var obj = HQData.GetKLineApiUrl(symbol, period, right, option) |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: 'GET', |
| | | success: function (recvData) { |
| | | HQData.RecvRealtimeData(recvData, callback, { Data: data, Obj: obj }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | 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 || '' } |
| | | // var yClose = data[0].c |
| | | // for (var i = 0; i < data.length; ++i) { |
| | | // var item = data[i] |
| | | // // var item = strItem.split(',') |
| | | // // var today = new Date(item.t) |
| | | // // var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | // var date = moment.unix(item.t).format('YYYYMMDD') |
| | | |
| | | // var open = parseFloat(item.o) |
| | | // var close = parseFloat(item.c) |
| | | // var high = parseFloat(item.h) |
| | | // var low = parseFloat(item.l) |
| | | // var vol = parseFloat(item.vo) |
| | | // var amount = parseFloat(item.v) |
| | | |
| | | // stock.yclose = yClose |
| | | // stock.open = open |
| | | // stock.high = high |
| | | // stock.low = low |
| | | // stock.price = close |
| | | // stock.vol = vol |
| | | // stock.amount = amount |
| | | // stock.date = date |
| | | |
| | | // yClose = close |
| | | // } |
| | | const kLines = JSON.parse(window.localStorage.getItem('kLine')) |
| | | var yClose = data.preKPrice |
| | | console.log('recvDatadata====', data) |
| | | if (kLines.type === 'IN' ||kLines.type === 'US') { |
| | | for (var i = 0; i < data.klines.length; ++i) { |
| | | var strItem = data.klines[i] |
| | | var item = strItem.split(',') |
| | | // var today = new Date(Date.parse(item[0])) |
| | | // var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var date = moment.unix(Date.parse(item[0])).format('YYYYMMDD') |
| | | |
| | | var open = parseFloat(item[1]) |
| | | var close = parseFloat(item[2]) |
| | | var high = parseFloat(item[3]) |
| | | var low = parseFloat(item[4]) |
| | | var vol = parseFloat(item[5]) * 100 |
| | | var amount = parseFloat(item[6]) |
| | | |
| | | stock.yclose = yClose |
| | | stock.open = open |
| | | stock.high = high |
| | | stock.low = low |
| | | stock.price = close |
| | | stock.vol = vol |
| | | stock.amount = amount |
| | | stock.date = date |
| | | |
| | | yClose = close |
| | | } |
| | | } |
| | | // if (kLines.type === 'qh') { |
| | | // for (var x = 0; x < recvData.list.length; ++x) { |
| | | // var strItem2 = recvData.list[x] |
| | | // // var item = strItem.split(',') |
| | | // // var today = new Date(strItem.t) |
| | | // // var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | // var date2 = moment.unix(strItem2.ctm).format('YYYYMMDD') |
| | | // // |
| | | // var open2 = parseFloat(strItem2.open) |
| | | // var close2 = parseFloat(strItem2.close) |
| | | // var high2 = parseFloat(strItem2.high) |
| | | // var low2 = parseFloat(strItem2.low) |
| | | // var vol2 = 100 |
| | | // // var vol2 = parseFloat(strItem2.v) * 100 |
| | | // var amount2 = parseFloat((Math.random() * 100) + '') |
| | | // // |
| | | // var newItem2 = [date2, yClose, open2, high2, low2, close2, vol2, amount2] |
| | | // hqChartData.data.push(newItem2) |
| | | // // |
| | | // yClose = close |
| | | // } |
| | | // } |
| | | |
| | | var hqchartData = { code: 0, stock: [stock] } |
| | | |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvRealtimeData] hqchartData ', hqchartData) |
| | | callback(hqchartData) |
| | | } |
| | | } |
| | | 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}`) |
| | | var obj = HQData.GetMinuteKLineApiUrl(symbol, period, right, null) |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: 'GET', |
| | | success: function (recvData) { |
| | | HQData.RecvHistoryMinuteData(recvData, callback, { Data: data, Obj: obj }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | HQData.RecvHistoryMinuteData = function (recvData, callback, option) { |
| | | var hqChartData = {code: 0, data: []} |
| | | hqChartData.symbol = option.Obj.Symbol |
| | | // hqChartData.name = data.name |
| | | const kLines = JSON.parse(window.localStorage.getItem('kLine')) |
| | | hqChartData.name = '123' |
| | | // console.log('data.name', data.name) |
| | | // |
| | | // var yClose = data.preKPrice |
| | | var yClose = '' |
| | | console.log('recvData===data.name22', recvData) |
| | | recvData = JSON.parse(recvData) |
| | | if (kLines.type === 'IN' ||kLines.type === 'US') { |
| | | for (var i = 0; i < recvData.length; ++i) { |
| | | var strItem = recvData[i] |
| | | // var item = strItem.split(',') |
| | | // var today = new Date(strItem.t) |
| | | // var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var date = moment.unix(strItem.t).format('YYYYMMDD') |
| | | var open = parseFloat(strItem.o) |
| | | var close = parseFloat(strItem.c) |
| | | var high = parseFloat(strItem.h) |
| | | var low = parseFloat(strItem.l) |
| | | var vol = parseFloat(strItem.v) * 100 |
| | | var amount = parseFloat((Math.random() * 100) + '') |
| | | // |
| | | var newItem = [date, yClose, open, high, low, close, vol, amount] |
| | | hqChartData.data.push(newItem) |
| | | // |
| | | yClose = close |
| | | } |
| | | } |
| | | if (kLines.type === 'qh') { |
| | | for (var x = 0; x < recvData.list.length; ++x) { |
| | | var strItem2 = recvData.list[x] |
| | | var date2 = moment(strItem2.ctm).format('YYYYMMDD') |
| | | // |
| | | var open2 = parseFloat(strItem2.open) |
| | | var close2 = parseFloat(strItem2.close) |
| | | var high2 = parseFloat(strItem2.high) |
| | | var low2 = parseFloat(strItem2.low) |
| | | var vol2 = 100 |
| | | // var vol2 = parseFloat(strItem2.v) * 100 |
| | | var amount2 = parseFloat((Math.random() * 100) + '') |
| | | // |
| | | var newItem2 = [date2, yClose, open2, high2, low2, close2, vol2, amount2] |
| | | hqChartData.data.push(newItem2) |
| | | // |
| | | yClose = close |
| | | } |
| | | } |
| | | |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvHistoryData] hqchartData ', hqChartData) |
| | | callback(hqChartData) |
| | | } |
| | | } |
| | | |
| | | HQData.RequestMinuteRealtimeData = function (data, callback) { |
| | | data.PreventDefault = true |
| | | var symbol = data.Request.Data.symbol[0] // 请求的股票代码 |
| | | var period = data.Self.Period // 周期 |
| | | var right = data.Self.Right // 复权 |
| | | var dateRange = data.Self.ChartPaint[0].Data.GetDateRange() |
| | | |
| | | var option = { Update: true } |
| | | if (dateRange && dateRange.End && dateRange.End.Date > 0) option.End = dateRange.End.Date |
| | | |
| | | console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`) |
| | | var obj = HQData.GetMinuteKLineApiUrl(symbol, period, right, option) |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: 'GET', |
| | | success: function (recvData) { |
| | | HQData.RecvMinuteRealtimeData(recvData, callback, { Data: data, Obj: obj }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | HQData.RecvMinuteRealtimeData = function (recvData, callback, option) { |
| | | var data = recvData.data |
| | | var hqChartData = {code: 0, data: [], ver: 2.0, symbol: option.Obj.Symbol, name: data.name} // 更新数据使用2.0版本格式 |
| | | |
| | | var yClose = data.preKPrice |
| | | console.log('212121132', recvData) |
| | | for (var i = 0; i < data.klines.length; ++i) { |
| | | var strItem = data.klines[i] |
| | | var item = strItem.split(',') |
| | | var today = new Date(Date.parse(item[0])) |
| | | var date = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate() |
| | | var time = today.getHours() * 100 + today.getMinutes() |
| | | |
| | | var open = parseFloat(item[1]) |
| | | var close = parseFloat(item[2]) |
| | | var high = parseFloat(item[3]) |
| | | var low = parseFloat(item[4]) |
| | | var vol = parseFloat(item[5]) * 100 |
| | | var amount = parseFloat(item[6]) |
| | | |
| | | var newItem = [date, yClose, open, high, low, close, vol, amount, time] |
| | | hqChartData.data.push(newItem) |
| | | |
| | | yClose = close |
| | | } |
| | | |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log('[HQData.RecvMinuteRealtimeData] hqchartData ', hqChartData) |
| | | callback(hqChartData) |
| | | } |
| | | } |
| | | |
| | | export default |
| | | { |
| | | HQData:HQData |
| | | HQData: HQData |
| | | } |