| | |
| | | /* |
| | | 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 HQChart from 'hqchart' |
| | | import $ from "jquery"; |
| | | // import $, { hasData } from 'jquery' |
| | | import HQChart from "hqchart"; |
| | | import moment from "moment"; |
| | | import apiRrl from "@/axios/api.url"; |
| | | |
| | | //源码调试用 |
| | | //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 = apiRrl.baseURL; |
| | | 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:'花生' }); |
| | | // 自定义类型 |
| | | 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=盘后 |
| | | }; |
| | | |
| | | //芝加哥期货交易所 |
| | | 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:'小型道指' }); |
| | | HQData.NetworkFilter = function(data, callback) { |
| | | HQData.Log(`[HQData::NetworkFilter] ${HQData.Explain}`, data); |
| | | |
| | | //美国洲际交易所 |
| | | 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:'低硫柴油' }); |
| | | switch (data.Name) { |
| | | case "MinuteChartContainer::RequestMinuteData": // 分时图数据对接 |
| | | HQData.RequestMinuteData(data, callback); |
| | | break; |
| | | case "MinuteChartContainer::RequestHistoryMinuteData": |
| | | HQData.RequestMinuteDaysData(data, callback); |
| | | break; |
| | | |
| | | //自定义类型 |
| | | 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=盘后 |
| | | 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; |
| | | } |
| | | }; |
| | | |
| | | HQData.RequestMinuteData = function(data, callback) { |
| | | data.PreventDefault = true; |
| | | |
| | | 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; |
| | | |
| | | 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; |
| | | 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); |
| | | console.log(obj, "======"); |
| | | $.ajax({ |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success: function(recvData) { |
| | | HQData.RecvMinuteData(recvData, callback, { Data: data, Obj: obj }); |
| | | } |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | 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.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); |
| | | // var date = moment.unix(strItem.t || strItem.id).format("YYYYMMDD"); |
| | | // // |
| | | // var open = parseFloat(strItem.o || strItem.open); |
| | | // var close = parseFloat(strItem.c || strItem.close); |
| | | // var high = parseFloat(strItem.h || strItem.high); |
| | | // var low = parseFloat(strItem.l || strItem.low); |
| | | // var vol = parseFloat(strItem.v || strItem.vol) * 100; |
| | | for (var i = 0; i < recvData.length; ++i) { |
| | | var strItem = recvData[i]; |
| | | strItem.t = strItem.t || strItem.id; |
| | | strItem.c = strItem.c || strItem.close; |
| | | strItem.h = strItem.h || strItem.high; |
| | | strItem.l = strItem.l || strItem.low; |
| | | strItem.v = strItem.v || strItem.vol; |
| | | // 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 = { |
| | | 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; |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | { |
| | | HQData.RecvMinuteData(recvData, callback, { Data:data, Obj:obj }); |
| | | 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.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); |
| | | |
| | | $.ajax({ |
| | | 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.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); |
| | | |
| | | 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 = { |
| | | 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.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 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 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]; |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | 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; |
| | | |
| | | 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) |
| | | { |
| | | 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); |
| | | } |
| | | itemDay.minute = newMinuteData; |
| | | } else { |
| | | var item = itemDay.minute[itemDay.minute.length - 1]; |
| | | preClose = item[4]; |
| | | preAvprice = item[7]; |
| | | preDate = item[8]; |
| | | } |
| | | } |
| | | |
| | | var hqchartData={stock:[stock], code:0 }; |
| | | aryDayData = aryDayData.reverse(); |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | |
| | | HQData.Log("[HQData.RecvMinuteDaysData] hqchartData ", hqchartData) |
| | | callback(hqchartData); |
| | | } |
| | | } |
| | | var hqchartData = { |
| | | symbol: option.Obj.Symbol, |
| | | name: data.name, |
| | | data: aryDayData, |
| | | code: 0 |
| | | }; |
| | | |
| | | 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); |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log("[HQData.RecvMinuteDaysData] hqchartData ", hqchartData); |
| | | callback(hqchartData); |
| | | } |
| | | }; |
| | | |
| | | $.ajax( |
| | | { |
| | | 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.CorrectMinuteData = function(minuteData, xDatetime) { |
| | | if (minuteData.length === xDatetime.length) return null; |
| | | |
| | | 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); |
| | | 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 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(); |
| | | for (var i = 0; i < minuteData.length; ++i) { |
| | | var item = minuteData[i]; |
| | | var time = item[0]; |
| | | |
| | | if (j%minuteCount==0) |
| | | { |
| | | if (itemDay && itemDay.minute.length>0) aryDayData.push(itemDay); |
| | | itemDay={ minute:[], date:date, yclose: yClose }; |
| | | } |
| | | var findItem = mapData.get(time); |
| | | findItem.Data = item; |
| | | } |
| | | |
| | | 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]), |
| | | } |
| | | var newMinuteData = []; |
| | | for (var item of mapData) { |
| | | var value = item[1]; |
| | | |
| | | if (isStockA) stockItem.vol*=100; |
| | | if (value.Data) newMinuteData[value.Index] = value.Data; |
| | | else newMinuteData[value.Index] = [value.Time]; |
| | | } |
| | | |
| | | itemDay.minute.push([stockItem.time, stockItem.open, stockItem.high, stockItem.low, stockItem.price, stockItem.vol, stockItem.amount, stockItem.avprice, stockItem.date]); |
| | | } |
| | | 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]; |
| | | |
| | | if (itemDay && itemDay.minute.length>0) aryDayData.push(itemDay); |
| | | if (internalSymbol.indexOf("-") > 0) { |
| | | var aryValue = internalSymbol.split("-"); |
| | | internalSymbol = aryValue[1]; |
| | | } |
| | | |
| | | 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.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 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 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]; |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | HQData.CorrectMinuteData=function(minuteData, xDatetime) |
| | | { |
| | | if (minuteData.length==xDatetime.length) return null; |
| | | |
| | | 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=aryData[0].split('_'); |
| | | 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] }; |
| | |
| | | return { Market:market, Symbol:aryData[0] }; |
| | | } |
| | | */ |
| | | } |
| | | }; |
| | | HQData.GetMinuteApiUrl = function(symbol, dayCount) { |
| | | var internalSymbol = HQData.GetInternalSymbol(symbol); |
| | | console.log("查看", internalSymbol); |
| | | // var url=`http://push2his.eastmoney.com/api/qt/stock/trends2/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58&secid=${internalSymbol.Market}.${internalSymbol.Symbol}&ndays=1&iscr=0&iscca=0` |
| | | // 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}` |
| | | |
| | | 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=`http://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` |
| | | 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; |
| | | }; |
| | | // 是否显示第2个成交量图 |
| | | HQData.IsShowVolChart = function(upperSymbol) { |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsForeignExchange(upperSymbol)) |
| | | return false; |
| | | if (upperSymbol === "UDI_100.ET") return false; |
| | | |
| | | return true; |
| | | } |
| | | 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= |
| | | { |
| | | Name:'7:50-6:00', |
| | | Data: |
| | | [ |
| | | { Start: 750, End: 2359 }, |
| | | { Start: 0, End: 600 }, |
| | | ], |
| | | Coordinate: |
| | | { |
| | | 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' }, |
| | | ], |
| | | 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' }, |
| | | ], |
| | | Min: //最小模式 |
| | | [ |
| | | { Value: 800, Text: '8:00' }, |
| | | { Value: 2000, Text: '20:00' }, |
| | | { Value: 600, Text: '6:00' } |
| | | ] |
| | | } |
| | | }; |
| | | HQData.GetCustomTradeTimeData = function(key) { |
| | | // 美国洲际交易所 重柴油 数据从7:50开始,是盘前数据吗???? |
| | | if (key === "IPE_G") { |
| | | // 7:50-6:00 |
| | | var data = { |
| | | Name: "7:50-6:00", |
| | | Data: [ |
| | | { Start: 750, End: 2359 }, |
| | | { Start: 0, End: 600 } |
| | | ], |
| | | Coordinate: { |
| | | // 完整模式 |
| | | 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" } |
| | | ], |
| | | // 简洁模式 |
| | | 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" } |
| | | ], |
| | | // 最小模式 |
| | | Min: [ |
| | | { 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: |
| | | [ |
| | | { Start: 850, End: 2359 }, |
| | | { Start: 0, End: 700 }, |
| | | ], |
| | | Coordinate: |
| | | { |
| | | 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' } |
| | | ], |
| | | 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' } |
| | | ], |
| | | Min: //最小模式 |
| | | [ |
| | | { Value: 900, Text: '9:00' }, |
| | | { Value: 2100, Text: '21:00' }, |
| | | { Value: 700, Text: '7:00' } |
| | | ] |
| | | } |
| | | }; |
| | | 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 } |
| | | ], |
| | | Coordinate: { |
| | | // 完整模式 |
| | | 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" } |
| | | ], |
| | | // 简洁模式 |
| | | 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" } |
| | | ], |
| | | // 最小模式 |
| | | Min: [ |
| | | { 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 = |
| | | [ |
| | | { Start: 2130, End: 2359 }, |
| | | { Start: 0, End: 400 } |
| | | ]; |
| | | /// ///////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateUSAData = function(minuteStringData) { |
| | | const TIME_SPLIT = [ |
| | | { 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 = |
| | | { |
| | | 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"], |
| | | ], |
| | | 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"], |
| | | ], |
| | | 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"], |
| | | ], |
| | | HQData.GetUSAData = function(upperSymbol, width) { |
| | | const SHZE_MINUTE_X_COORDINATE = { |
| | | // 完整模式 |
| | | 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"] |
| | | ], |
| | | // 简洁模式 |
| | | 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"] |
| | | ], |
| | | // 最小模式 |
| | | 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"] |
| | | ], |
| | | |
| | | 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 = |
| | | [ |
| | | { Start: 930, End: 1130 }, |
| | | { Start: 1301, End: 1500 } |
| | | ]; |
| | | /// //////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateSHSZData = function(minuteStringData) { |
| | | const TIME_SPLIT = [ |
| | | { 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 = { |
| | | // 完整模式 |
| | | 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 |
| | | ], |
| | | // 简洁模式 |
| | | 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"] |
| | | ], |
| | | // 最小模式 |
| | | 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"] |
| | | ], |
| | | |
| | | HQData.GetSHSZData=function(upperSymbol,width) |
| | | { |
| | | const SHZE_MINUTE_X_COORDINATE = |
| | | { |
| | | 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 |
| | | ], |
| | | 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"] |
| | | ], |
| | | 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"] |
| | | ], |
| | | 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 = |
| | | [ |
| | | { Start: 930, End: 1200 }, |
| | | { Start: 1301, End: 1600 } |
| | | ]; |
| | | /// //////////////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateHKData = function(minuteStringData) { |
| | | const TIME_SPLIT = [ |
| | | { 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 = |
| | | { |
| | | 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"] |
| | | ], |
| | | 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"] |
| | | ], |
| | | 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"] |
| | | ], |
| | | HQData.GetHKData = function(upperSymbol, width) { |
| | | const HK_MINUTE_X_COORDINATE = { |
| | | // 完整模式 |
| | | 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"] |
| | | ], |
| | | // 简洁模式 |
| | | 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"] |
| | | ], |
| | | // 最小模式 |
| | | 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"] |
| | | ], |
| | | |
| | | 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= |
| | | [ |
| | | { Start:500, End:2359 }, |
| | | { Start:0, End:459 }, |
| | | /// ///////////////////////////////////////////////////////////////////////////////////// |
| | | HQData.CreateForeignExchangeData = function(minuteStringData) { |
| | | // 外汇 5:00 - 4:59 |
| | | const TIME_SPLIT = [ |
| | | { Start: 500, End: 2359 }, |
| | | { Start: 0, End: 459 } |
| | | ]; |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | }; |
| | | |
| | | HQData.GetForeignExchangeData = function(upperSymbol, width) { |
| | | const FOREX_MINUTE_X_COORDINATE = { |
| | | // 完整模式 |
| | | 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"] |
| | | ], |
| | | // 简洁模式 |
| | | 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"] |
| | | ], |
| | | // 最小模式 |
| | | 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"] |
| | | ], |
| | | |
| | | Count: 1440, |
| | | MiddleCount: 600, |
| | | |
| | | GetData: function(width) { |
| | | if (width < 200) return this.Min; |
| | | else if (width < 450) return this.Simple; |
| | | |
| | | return this.Full; |
| | | } |
| | | }; |
| | | |
| | | return FOREX_MINUTE_X_COORDINATE; |
| | | }; |
| | | |
| | | /// ///////////////////////////////////////////////////////////////////// |
| | | // 美元指数 |
| | | // |
| | | /// //////////////////////////////////////////////////////////////////// |
| | | 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.GetForeignExchangeData=function(upperSymbol,width) |
| | | { |
| | | const FOREX_MINUTE_X_COORDINATE= |
| | | { |
| | | 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"], |
| | | ], |
| | | 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"], |
| | | ], |
| | | 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"], |
| | | ], |
| | | 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, |
| | | 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 data; |
| | | } |
| | | }; |
| | | |
| | | HQData.GetETDecimal = function(symbol) { |
| | | var upperSymbol = symbol.toUpperCase(); |
| | | if (upperSymbol === "UDI_100.ET") return 2; |
| | | |
| | | //////////////////////////////////////////////////////////////////////// |
| | | // 美元指数 |
| | | return 2; |
| | | }; |
| | | |
| | | /// //////////////////////////////////////////////////////////////////////////////// |
| | | // K线数据对接 |
| | | // |
| | | /////////////////////////////////////////////////////////////////////// |
| | | 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 }, |
| | | ]; |
| | | /// ////////////////////////////////////////////////////////////////////////////// |
| | | 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 |
| | | |
| | | return minuteStringData.CreateTimeData(TIME_SPLIT); |
| | | 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) |
| | | 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}` |
| | | } |
| | | |
| | | 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); |
| | | 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}`; |
| | | // } |
| | | // 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.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 |
| | | ]); |
| | | |
| | | return MAP_PERIOD.get(periodID); |
| | | }; |
| | | |
| | | 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 aryData = symbol.split("."); |
| | | symbolUpper = symbol.toUpperCase(); |
| | | // 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.RecvHistoryData(recvData, callback, { Data: data, Obj: obj }); |
| | | } |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | 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.RecvHistoryData = function(recvData, callback, option) { |
| | | // var data = recvData.data |
| | | |
| | | 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 === "SZHB") { |
| | | recvData = recvData.data; |
| | | recvData.reverse(); |
| | | 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.id).format("YYYYMMDD"); |
| | | // |
| | | var open = parseFloat(strItem.open); |
| | | var close = parseFloat(strItem.close); |
| | | var high = parseFloat(strItem.high); |
| | | var low = parseFloat(strItem.low); |
| | | var vol = parseFloat(strItem.vol) * 100; |
| | | var amount = parseFloat(Math.random() * 100 + ""); |
| | | // |
| | | var newItem = [date, yClose, open, high, low, close, vol, amount]; |
| | | |
| | | hqChartData.data.push(newItem); |
| | | // |
| | | yClose = close; |
| | | } |
| | | } |
| | | } else { |
| | | for (var i = 0; i < recvData.length; ++i) { |
| | | var strItem = recvData[i]; |
| | | strItem.t = strItem.t || strItem.id; |
| | | strItem.c = strItem.c || strItem.close; |
| | | strItem.h = strItem.h || strItem.high; |
| | | strItem.l = strItem.l || strItem.low; |
| | | strItem.v = strItem.v || strItem.vol; |
| | | // 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]; |
| | | |
| | | 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); |
| | | var internalPeriod=HQData.GetInternalPeriod(period); |
| | | var internalRight=HQData.GetInternalRight(right); |
| | | if (option && option.Update==true) |
| | | { |
| | | var beginDate=option.End; |
| | | var url=`http://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}`; |
| | | hqChartData.data.push(newItem); |
| | | // |
| | | yClose = close; |
| | | } |
| | | else |
| | | { |
| | | var url=`http://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}`; |
| | | } |
| | | |
| | | 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 }); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | 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: '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') |
| | | |
| | | 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 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) |
| | | |
| | | var internalSymbol=HQData.GetInternalSymbol(symbol); |
| | | var internalPeriod=HQData.GetInternalPeriod(period); |
| | | var internalRight=HQData.GetInternalRight(right); |
| | | // stock.yclose = yClose |
| | | // stock.open = open |
| | | // stock.high = high |
| | | // stock.low = low |
| | | // stock.price = close |
| | | // stock.vol = vol |
| | | // stock.amount = amount |
| | | // stock.date = date |
| | | |
| | | if (option && option.Update==true) |
| | | { |
| | | var beginDate=option.End; |
| | | var url=`http://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}`; |
| | | // 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; |
| | | } |
| | | else |
| | | { |
| | | var url=`http://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}`; |
| | | } |
| | | // 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 |
| | | }); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | return { Url:url, Symbol:symbol, InternalSymbol:internalSymbol, Period:period, Right:right }; |
| | | } |
| | | 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"; |
| | | |
| | | HQData.GetInternalPeriod=function(periodID) |
| | | { |
| | | var MAP_PERIOD=new Map( |
| | | [ |
| | | [0, 101], //day |
| | | [1, 102], //week |
| | | [2, 103], //month |
| | | var yClose = ""; |
| | | console.log("recvData===data.name22", recvData, kLines); |
| | | recvData = JSON.parse(recvData); |
| | | |
| | | [4, 1], //1min |
| | | [5, 5], //5min |
| | | [6, 15], //15min |
| | | [7, 30], //30min |
| | | [8, 60], //60min |
| | | ] |
| | | ); |
| | | if (kLines.type === "SZHB") { |
| | | recvData = recvData.data; |
| | | recvData.reverse(); |
| | | 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.id).format("YYYYMMDD"); |
| | | var time = moment.unix(strItem.id).format("HHmm"); |
| | | var open = parseFloat(strItem.open); |
| | | var close = parseFloat(strItem.close); |
| | | var high = parseFloat(strItem.high); |
| | | var low = parseFloat(strItem.low); |
| | | var vol = parseFloat(strItem.vol) * 100; |
| | | var amount = parseFloat(Math.random() * 100 + ""); |
| | | // |
| | | var newItem = [date, yClose, open, high, low, close, vol, amount, time]; |
| | | |
| | | return MAP_PERIOD.get(periodID); |
| | | } |
| | | |
| | | 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; |
| | | hqChartData.data.push(newItem); |
| | | // |
| | | yClose = close; |
| | | } |
| | | } else { |
| | | 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 time = moment.unix(strItem.t).format("HHmm"); |
| | | |
| | | if (HQChart.Chart.MARKET_SUFFIX_NAME.IsUSA(symbolUpper)) |
| | | { |
| | | if (market==100) return false; //指数不支持复权 |
| | | return true; |
| | | 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, time]; |
| | | |
| | | hqChartData.data.push(newItem); |
| | | // |
| | | yClose = close; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log("[HQData.RecvHistoryData] hqchartData ", hqChartData); |
| | | callback(hqChartData); |
| | | } |
| | | }; |
| | | |
| | | HQData.RequestFlowCapitalData=function(data,callback) |
| | | { |
| | | data.PreventDefault=true; |
| | | var hqChartData={code:0, stock:[]}; //如果没有数据就填空 |
| | | |
| | | if (data.Self.IsDestroy==false) |
| | | { |
| | | 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(); |
| | | |
| | | 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 option = { Update: true }; |
| | | if (dateRange && dateRange.End && dateRange.End.Date > 0) |
| | | option.End = dateRange.End.Date; |
| | | |
| | | console.log(`[HQData::RequestHistoryData] Symbol=${symbol}`); |
| | | var obj=HQData.GetKLineApiUrl(symbol,period, right, null); |
| | | console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`); |
| | | var obj = HQData.GetMinuteKLineApiUrl(symbol, period, right, option); |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | { |
| | | HQData.RecvHistoryData(recvData, callback, { Data:data, Obj:obj }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | HQData.RecvHistoryData=function(recvData, callback, option) |
| | | { |
| | | var data=recvData.data; |
| | | |
| | | 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; |
| | | $.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版本格式 |
| | | |
| | | if (option.Data.Self.IsDestroy==false) |
| | | { |
| | | HQData.Log("[HQData.RecvHistoryData] hqchartData ", hqChartData) |
| | | callback(hqChartData); |
| | | } |
| | | } |
| | | 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(","); |
| | | |
| | | 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 time = moment.unix(item[0]).format("HHmm"); |
| | | 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 option={ Update:true }; |
| | | if (dateRange && dateRange.End && dateRange.End.Date>0) option.End=dateRange.End.Date; |
| | | var newItem = [date, yClose, open, high, low, close, vol, amount, time]; |
| | | hqChartData.data.push(newItem); |
| | | |
| | | console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`); |
| | | var obj=HQData.GetKLineApiUrl(symbol,period, right, option); |
| | | yClose = close; |
| | | } |
| | | |
| | | $.ajax( |
| | | { |
| | | url: obj.Url, |
| | | type: "GET", |
| | | success:function(recvData) |
| | | { |
| | | HQData.RecvRealtimeData(recvData, callback, { Data:data, Obj:obj }); |
| | | } |
| | | }); |
| | | } |
| | | if (option.Data.Self.IsDestroy === false) { |
| | | HQData.Log("[HQData.RecvMinuteRealtimeData] hqchartData ", hqChartData); |
| | | callback(hqChartData); |
| | | } |
| | | }; |
| | | |
| | | 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]); |
| | | |
| | | 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 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 data=recvData.data; |
| | | |
| | | 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 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.RecvHistoryMinuteData] 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; |
| | | 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 |
| | | } |
| | | export default { |
| | | HQData: HQData |
| | | }; |