hqchart 1.1.12748 → 1.1.12753

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/jscommon/umychart.vue/umychart.stock.vue.js"],"names":["JSStockResource","Domain","CacheDomain","g_JSStockResource","IndexTopData","Stop","Down","Up","Unchanged","UpStock","DownStock","IndexHeatData","Good","GoodIncrease","SortData","field","order","tagID","arySymbol","Array","SortField","Order","TagID","FinanceData","ROE","Date","PerSEarning","EPS","PerNetAsset","NProfit","NProfitIncrease","NnetProfit","NnProfitIncrease","NnProfitSpeed","Benford","SetData","data","isNaN","roe","finance","date","persearning","eps","pernetasset","nprofit","nprofitincrease","nnetprofit","nnprofitincrease","nnprofitspeed","benford","CapitalData","A","Total","ARate","capital","a","total","arate","CapitalFlowDayData","SuperIn","SuperOut","BigIn","BigOut","MidIn","MidOut","SmallIn","SmallOut","MainIn","MainOut","MainNetIn","superin","superout","bigin","bigout","midin","midout","smallin","smallout","mainin","mainout","mainnetin","CapitalFlowDaysData","MainNetInRatio","mainnetinratio","DDEData","DDX","DDY","DDZ","ddx","ddy","ddz","CompanyData","Name","Business","Vol","Price","ReleaseDate","Competence","company","name","business","vol","price","releasedate","corecompetence","PlateData","Industry","Region","Concept","SetIndustryData","SetRegionData","SetConceptData","industry","i","item","push","Symbol","symbol","region","concept","EventData","IsMargin","IsHK","IsSHHK","IsSZHK","STType","HK","events","margin","hk","shhk","szhk","st","hksymbol","hkname","IsIndexSymbol","upperSymbol","toUpperCase","indexOf","replace","charAt","parseInt","StockData","Open","High","Low","YClose","Amount","Time","ExchangeRate","Amplitude","VolRatio","Increase","MaxPrice","MinPrice","RFPrice","IndexTop","Week","MinuteAmplitude","RiseFallSpeed","MAmount","GetBaseData","BaseDataTagID","add","STOCK_FIELD_NAME","SYMBOL","NAME","OPEN","PRICE","YCLOSE","HIGH","LOW","VOL","AMOUNT","DATE","TIME","INCREASE","EXCHANGE_RATE","AMPLITUDE","MAX_PRICE","MIN_PRICE","RISE_FALL_PRICE","VOLRATIO","INDEXTOP","WEEK","Heat","GetHeatData","HeatTagID","Sort","GetSortData","key","toString","has","set","get","Buy5","GetBuy5","BuySellTagID","Sell5","GetSell5","Deal","GetDeal","DealTagID","MarketValue","FlowMarketValue","Bookrate","Bookdiffer","PE","PE2","PE3","PB","GetDerivative","DerivativeTagID","MARKET_VALUE","FLOW_MARKET_VALUE","BOOK_RATE","BOOK_DIFFER","Finance","GetFinance","FinanceTagID","FINANCE_DATE","FINANCE_PERSEARNING","FINANCE_PERNETASSET","FINANCE_NPROFIT","FINANCE_NPROFITINCREASE","FINANCE_NNETPROFIT","FINANCE_NNPROFITINCREASE","FINANCE_NNPROFITSPEED","FINANCE_EPS","FINANCE_BENFORD","Capital","GetCapital","CapitalTagID","CAPITAL_TOTAL","CAPITAL_A","CAPTIAL_ARATE","CapitalFlowDay","CapitalFlowDay3","CapitalFlowDay5","CapitalFlowDay10","GetCapitalFlowDay","CAPITAL_FLOW_DAY","CapitalFlowDayID","CAPITAL_FLOW_DAY3","CapitalFlowDay3ID","CAPITAL_FLOW_DAY5","CapitalFlowDay5ID","CAPITAL_FLOW_DAY10","CapitalFlowDay10ID","DDE","DDE3","DDE5","DDE10","GetDDE","DDEID","DDE3ID","DDE5ID","DDE10ID","Event","GetEvent","EventTagID","Company","GetCompany","CompanyTagID","COMPANY_NAME","COMPANY_BUSINESS","COMPANY_VOL","COMPANY_PRICE","COMPANY_RELEASEDATE","COMPANY_COMPETENCE","Plate","GetPlate","PlateTagID","PLATE_INDUSTRY","PLATE_CONCEPT","PLATE_REGION","AttachTagID","id","ClearTagID","clear","RemoveTagID","delete","SetBaseData","yclose","high","low","open","amount","time","increase","exchangerate","amplitude","volratio","week","Week1","week1","Week4","week4","Week13","week13","Week26","week26","Week52","week52","SetDerivativeData","marketvalue","flowmarketvalue","bookrate","bookdiffer","pe","pe2","pe3","pb","SetFinanceData","console","log","SetCapitalData","SetIndexBaseData","topData","indextop","up","down","unchanged","stop","upstock","downstock","SetBuySellData","buy","sell","SetDealData","deal","bs","SetHeatData","heatData","quadrant","good","Day1","gincrease","day1","SetCapitalFlowDayData","datatype","RECV_DATA_TYPE","CAPITAL_FLOW_DAY_DATA","CAPITAL_FLOW_DAY3_DATA","CAPITAL_FLOW_DAY5_DATA","CAPITAL_FLOW_DAY10_DATA","SetDDE","DDE_DAY_DATA","DDE_DAY3_DATA","DDE_DAY5_DATA","DDE_DAY10_DATA","SetEventData","SetCompanyData","SetPlateData","SetFinanceDetailData","mamplitude","M1","M3","M5","M10","M15","risefallspeed","mamount","BUY5","SELL5","DEAL","RISEFALLSPEED_1","RISEFALLSPEED_3","RISEFALLSPEED_5","RISEFALLSPEED_10","RISEFALLSPEED_15","MINUTE_AMPLITUDE_1","MINUTE_AMPLITUDE_3","MINUTE_AMPLITUDE_5","MINUTE_AMPLITUDE_10","MINUTE_AMPLITUDE_15","MINUTE_AMOUNT_1","MINUTE_AMOUNT_3","MINUTE_AMOUNT_5","MINUTE_AMOUNT_10","MINUTE_AMOUNT_15","EVENTS","HEAT","StockDataFieldName","m_mapFiled","GetFieldName","fieldID","StockRead","stock","JSStock","Get","GetSort","EndRead","isUpdate","ReqeustData","SetQueryField","aryField","JSStockHistory","Callback","Field","Data","ApiUrl","PageSize","PageIndex","Count","currentData","RequsetData","condition","condition2","self","currentSymbol","currentSymbolLength","length","GetQuery","$","ajax","url","method","dataType","success","count","RecvData","fail","request","RecvError","GetNextPage","start","end","alert","recvData","strSymbol","stockData","SetStockData","stockday","dataMap","SetBlocktradingData","SetChangesData","SetLiftingData","SetPforecastData","SetShortIndicatorsData","finnance","finance1","STOCK_HISTORY_FIELD_NAME","FINANCE1_NPROFITINCREASE","FINANCE1_NNPROFITINCREASE","FINANCE1_NNPROFITSPEED","FINANCE1_BENFORD","announcement","announcement1","year","FINANCE1_YEAR","quarter","FINANCE1_QUARTER","finance2","FINANCE2_NPROFITINCREASE","FINANCE2_NNPROFITINCREASE","FINANCE2_NNPROFITSPEED","FINANCE2_BENFORD","announcement2","FINANCE2_YEAR","FINANCE2_QUARTER","finance3","FINANCE3_NPROFITINCREASE","FINANCE3_NNPROFITINCREASE","FINANCE3_NNPROFITSPEED","FINANCE3_BENFORD","announcement3","FINANCE3_YEAR","FINANCE3_QUARTER","finance4","FINANCE4_NPROFITINCREASE","FINANCE4_NNPROFITINCREASE","FINANCE4_NNPROFITSPEED","FINANCE4_BENFORD","announcement4","FINANCE4_YEAR","FINANCE4_QUARTER","blocktrading","BLOCK_TRADING","Premium","premium","changes","HOLDERS_CHANGES","List","list","lifting","LIFTING","Lifting","pforecast","PFORECAST","Lowprofit","lowprofit","Highprofit","highprofit","Lowchange","lowchange","Highchange","highchange","Reportdate","reportdate","policy","targetedList","targetedCount","timeList","latestTime","latestName","forEach","isTarget","some","c","e","Math","max","apply","find","SHORTIND_ICATORS","latestIndicatorName","indicatorCount","CreateCondition","QueryCondition","Init","SetDomain","domain","cacheDomain","GetSearchStock","callback","SearchStock","GetShortTerm","ShortTerm","GetDealDay","DealDay","GetBlockMember","BlockMember","GetBlockTop","BlockTop","GetMinuteImage","MinuteImage","GetHistoryDayData","HistoryDayData","GetDealPriceListData","DealPriceListData","GetLatestDetailData","LatestDetailData","GetAnalylisPlate","AnalylisPlate","GetStockHistory","BASE_DATA","INDEX_BASE_DATA","HEAT_DATA","SORT_DATA","BUY_SELL_DATA","DEAL_DATA","DERIVATIVE_DATA","FINANCE_DATA","SEARCH_STOCK_DATA","SELF_STOCK_DATA","LOGON_DATA","BLOCK_MEMBER_DATA","SHORT_TERM_DATA","COMPANY_DATA","PLATE_DATA","CAPITAL_DATA","DEAL_DAY_DATA","EVENT_DATA","IMAGE_MINUTE_DATA","HISTORY_DAY_DATA","DEAL_PRICE_LIST_DATA","LATEST_DETAIL_DATA","MapStock","MapTagCallback","RequestVersion","RealtimeApiUrl","PlateQuadrantApiUrl","IsAutoUpdate","AutoUpateTimeout","Timeout","NetworkFilter","GetStockRead","read","Unsubscribe","UnsubscribeStock","RequestData","ClearTimer","aryIndex","aryHeat","aryBuySell","aryDeal","aryDerivative","aryFinance","aryFlow","aryFlow3","aryFlow5","aryFlow10","aryDDE","aryDDE3","aryDDE5","aryDDE10","aryEvent","aryCompany","aryPlate","aryCapital","subscribe","size","RequestBuySellData","RequestBaseData","RequestIndexBaseData","RequestIndexHeatData","RequestDealData","RequestDerivativeData","RequestFinanceData","RequestCapitalData","RequestSubDocumentData","RequestEventData","RequestCompanyData","RequestPlateData","ReqeustAllSortData","obj","Explain","ID","Request","Url","Type","Self","PreventDefault","type","async","error","arySort","sortItem","sortData","ReqeustSortData","sortFiled","plate","orderfield","ordernull","filterstop","mapDay","RecvID","value","requestData","clearTimeout","setTimeout","mapTagData","RecvBaseData","RecvHeatData","RecvSortData","RecvBuySellData","RecvDealData","RecvDerivativeData","RecvFinanceData","RecvCapitalData","RecvSubDocumentData","RecvEventData","RecvCompanyData","RecvPlateData","AutoUpdate","isBeforOpen","status","STOCK_MARKET","GetMarketStatus","itemData","keyData","flowday","flowday3","flowday5","flowday10","dde","dde3","dde5","dde10","SearchStockApiUrl","UpdateUICallback","EndOffset","SearchString","SearchType","Search","input","ReqeustSearchStock","IsEndPage","NextPage","RecvSearchStockData","IStockData","Error","AutoUpate","today","getHours","getMinutes","getDay","InvokeUpdateUICallback","newMethod","shortterm","Content","content","TypeInfo","typeinfo","apiUrl","day","flag","dealData","Close","PriceList","mapPrice","totalVol","minCount","min","Flag","priceItem","BuyVol","SellVol","NoneVol","Proportion","sort","b","statusText","responseText","Status","Message","Start","OrderField","OrderNull","PageInfo","SetField","aryFiled","SetOrder","End","reqeust","BlockType","BLOCK_TOP_DATA","resCount","Risefall","risefall","Image","imagerelative","close","historyData","UpdateDate","update","KLine","GetWeekData","result","GetDayPeriodData","GetMonthData","period","index","startDate","newData","isNewData","dayData","fridayDate","GetFirday","timestamp","getTime","prevTimestamp","setTime","getFullYear","getMonth","getDate","isArray","statistics","Day","Stock","stockPrice","newItem","pageIndex","pageSize","Reqeust","Response","RequestPage","bCache","detail","detailItem","PolicyGuid","SymbolList","conceptList","info","Ratio","distributed","Distributed","Quadrant","SH","SZ","SHFE","CFFEX","DCE","CZCE","USA","IsUSA","IsSH","pos","IsSZ","IsSHFE","IsCFFEX","IsDCE","IsCZCE","IsChinaFutures","IsSHSZ","IsSHSZFund","IsSHSZIndex","temp","IsSHSZStockA","IsSHStockSTAR","usaDate","GetLocalTime","nowDate","JSStockInit"],"mappings":"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","file":"umychart.stock.vue.js","sourcesContent":["/*\r\n Copyright (c) 2018 jones\r\n \r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n 开源项目 https://github.com/jones2000/HQChart\r\n \r\n jones_2000@163.com\r\n\r\n 个股行情数据类\r\n*/\r\n\r\n////////////////////////////////////////////////////////////////////////////////////////\r\n// 股票数据\r\n//\r\n///////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction JSStockResource() \r\n{\r\n this.Domain = \"http://127.0.0.1:8886\"; //API域名\r\n this.CacheDomain = \"http://127.0.0.1:8886\"; //缓存域名\r\n}\r\n\r\nvar g_JSStockResource = new JSStockResource();\r\n\r\n//领涨领跌\r\nfunction IndexTopData()\r\n{\r\n this.Stop; //停牌\r\n this.Down; //下跌\r\n this.Up; //上涨\r\n this.Unchanged; //平盘\r\n this.UpStock={\"Symbol\":null,\"Name\":null}; //领涨\r\n this.DownStock={\"Symbol\":null,\"Name\":null}; //领跌\r\n}\r\n\r\nfunction IndexHeatData()\r\n{\r\n this.Good; //健康度\r\n //this.Date; //日期\r\n this.GoodIncrease={\"Day1\":null,'Week1':null,\"Week4\":null}; //周涨幅\r\n}\r\n\r\nfunction SortData(field,order,tagID)\r\n{\r\n this.arySymbol=new Array(); //成分\r\n this.SortField=field; //排序字段\r\n this.Order=order; //1 降, -1 升\r\n this.TagID=new Set([tagID]); //绑定的元素id\r\n}\r\n\r\n//财务数据\r\nfunction FinanceData()\r\n{\r\n this.ROE; //净资产收益率\r\n\r\n this.Date; //报告日期,\r\n this.PerSEarning; //每股收益\r\n this.EPS; //滚动每股收益\r\n this.PerNetAsset; //每股净资产\r\n\r\n this.NProfit; //净利润\r\n this.NProfitIncrease; //净利润涨幅 (当年净利润-上一年)/上一年*100\r\n\r\n this.NnetProfit; //扣非净利润\r\n this.NnProfitIncrease; //扣非净利润涨幅 (当年扣非净利润-上一年)/上一年*100\r\n this.NnProfitSpeed; //扣非净利润涨速 (当前扣非净利润/上一年-1)/(上一年/上上年-1)\r\n this.Benford; //财务粉饰\r\n \r\n //TODO:财务数据要了后面再加\r\n\r\n this.SetData=function(data)\r\n {\r\n if (!isNaN(data.roe)) this.ROE=data.roe;\r\n if (!isNaN(data.finance.date)) this.Date=data.finance.date;\r\n if (!isNaN(data.finance.persearning)) this.PerSEarning=data.finance.persearning;\r\n if (!isNaN(data.finance.eps)) this.EPS=data.finance.eps;\r\n if (!isNaN(data.finance.pernetasset)) this.PerNetAsset=data.finance.pernetasset;\r\n if (!isNaN(data.finance.nprofit)) this.NProfit=data.finance.nprofit;\r\n if (!isNaN(data.finance.nprofitincrease)) this.NProfitIncrease=data.finance.nprofitincrease;\r\n if (!isNaN(data.finance.nnetprofit)) this.NnetProfit=data.finance.nnetprofit;\r\n if (!isNaN(data.finance.nnprofitincrease)) this.NnProfitIncrease=data.finance.nnprofitincrease;\r\n if (!isNaN(data.finance.nnprofitspeed)) this.NnProfitSpeed=data.finance.nnprofitspeed;\r\n if (!isNaN(data.finance.benford)) this.Benford = data.finance.benford;\r\n }\r\n}\r\n\r\n//股本数据\r\nfunction CapitalData()\r\n{\r\n this.Date; //变动日期\t\r\n this.A; //流通A股\r\n this.Total; //总股本\r\n this.ARate; //流通A股占比\r\n\r\n this.SetData=function(data)\r\n {\r\n if (!isNaN(data.capital.date)) this.Date=data.capital.date;\r\n if (!isNaN(data.capital.a)) this.A=data.capital.a;\r\n if (!isNaN(data.capital.total)) this.Total=data.capital.total;\r\n if (!isNaN(data.capital.arate)) this.ARate=data.capital.arate;\r\n }\r\n}\r\n\r\n//资金流(当日)\r\nfunction CapitalFlowDayData()\r\n{\r\n this.SuperIn; //超大单流入\r\n this.SuperOut; //超大单流出\r\n this.BigIn; //大单流入\r\n this.BigOut; //大单流出\r\n this.MidIn; //中单流入\r\n this.MidOut; //中单流出\r\n this.SmallIn; //小单流入\r\n this.SmallOut; //小单流出\r\n this.MainIn; //主力流入\r\n this.MainOut; //主力流出\r\n this.MainNetIn; //主力净流入\r\n\r\n this.SetData = function (data) \r\n {\r\n this.SuperIn=data.superin;\r\n this.SuperOut = data.superout;\r\n this.BigIn = data.bigin; \r\n this.BigOut = data.bigout; \r\n this.MidIn = data.midin;\r\n this.MidOut=data.midout;\r\n this.SmallIn = data.smallin; //小单流入\r\n this.SmallOut = data.smallout; //小单流出\r\n this.MainIn = data.mainin; //主力流入\r\n this.MainOut = data.mainout; //主力流出\r\n this.MainNetIn = data.mainnetin; //主力净流入\r\n }\r\n}\r\n\r\n//资金流(多日)\r\nfunction CapitalFlowDaysData() \r\n{\r\n this.SuperIn; //超大单流入\r\n this.SuperOut; //超大单流出\r\n this.BigIn; //大单流入\r\n this.BigOut; //大单流出\r\n this.MidIn; //中单流入\r\n this.MidOut; //中单流出\r\n this.SmallIn; //小单流入\r\n this.SmallOut; //小单流出\r\n this.MainIn; //主力流入\r\n this.MainOut; //主力流出\r\n this.MainNetIn; //主力净流入\r\n this.MainNetInRatio; //多日日主力净流占比\r\n\r\n this.SetData = function (data) \r\n {\r\n this.SuperIn = data.superin;\r\n this.SuperOut = data.superout;\r\n this.BigIn = data.bigin;\r\n this.BigOut = data.bigout;\r\n this.MidIn = data.midin;\r\n this.MidOut = data.midout;\r\n this.SmallIn = data.smallin; //小单流入\r\n this.SmallOut = data.smallout; //小单流出\r\n this.MainIn = data.mainin; //主力流入\r\n this.MainOut = data.mainout; //主力流出\r\n this.MainNetIn = data.mainnetin; //主力净流入\r\n this.MainNetInRatio = data.mainnetinratio;\r\n }\r\n}\r\n\r\nfunction DDEData()\r\n{\r\n this.DDX;\r\n this.DDY;\r\n this.DDZ;\r\n\r\n this.SetData=function(data)\r\n {\r\n this.DDX=data.ddx;\r\n this.DDY=data.ddy;\r\n this.DDZ=data.ddz;\r\n }\r\n}\r\n\r\n//个股资料\r\nfunction CompanyData() {\r\n this.Name;\r\n this.Business; //主营业务\r\n this.Vol; //发行量\r\n this.Price; //发行价格\r\n this.ReleaseDate; //上市日期\r\n this.Competence; //核心竞争力\r\n\r\n this.SetData = function (data) {\r\n if (!data.company) return;\r\n\r\n this.Name = data.company.name;\r\n this.Business = data.company.business;\r\n this.Vol = data.company.vol;\r\n this.Price = data.company.price;\r\n this.ReleaseDate = data.company.releasedate;\r\n this.Competence = data.company.corecompetence;\r\n }\r\n}\r\n\r\n//板块信息\r\nfunction PlateData() {\r\n this.Industry; //行业分类\r\n this.Region; //地区\r\n this.Concept; //概念\r\n\r\n this.SetData = function (data) {\r\n this.SetIndustryData(data);\r\n this.SetRegionData(data);\r\n this.SetConceptData(data);\r\n }\r\n\r\n this.SetIndustryData = function (data) {\r\n if (!data.industry) return\r\n\r\n this.Industry = [];\r\n for (let i in data.industry) {\r\n let item = data.industry[i];\r\n this.Industry.push({Name: item.name, Symbol: item.symbol});\r\n }\r\n }\r\n\r\n this.SetRegionData = function (data) {\r\n if (!data.region) return\r\n\r\n this.Region = [];\r\n for (let i in data.region) {\r\n let item = data.region[i];\r\n this.Region.push({Name: item.name, Symbol: item.symbol});\r\n }\r\n }\r\n\r\n this.SetConceptData = function (data) {\r\n if (!data.concept) return\r\n\r\n this.Concept = [];\r\n for (let i in data.concept) {\r\n let item = data.concept[i];\r\n this.Concept.push({Name: item.name, Symbol: item.symbol});\r\n }\r\n }\r\n}\r\n\r\n//股票属性事件,属性\r\nfunction EventData() \r\n{\r\n this.IsMargin=false; //是否是融资融券标题\r\n this.IsHK=false; //是否有港股\r\n this.IsSHHK=false; //沪港通\r\n\tthis.IsSZHK=false; //深股通\r\n this.STType=0; //St标识(0:正常股票,1:st股票,2:*st股票)\r\n this.HK; //港股信息 { Symbol:代码 Name:名称 }\r\n\r\n this.SetData = function (data) \r\n {\r\n if (!data.events) return;\r\n\r\n if (!isNaN(data.events.margin)) this.IsMargin = data.events.margin == 1;\r\n if (!isNaN(data.events.hk)) this.IsHK = data.events.hk == 1;\r\n if (!isNaN(data.events.shhk)) this.IsSHHK = data.events.shhk == 1;\r\n\t\tif (!isNaN(data.events.szhk)) this.IsSZHK = data.events.szhk == 1;\r\n if (!isNaN(data.events.st)) this.STType = data.events.st;\r\n\r\n if (this.IsHK && data.events.hksymbol && data.events.hkname)\r\n {\r\n this.HK={ Symbol:data.events.hksymbol, Name:data.events.hkname };\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n//是否是指数代码(是一个单独的类,从umychart.js复制来的)\r\nfunction IsIndexSymbol(symbol)\r\n{\r\n var upperSymbol=symbol.toUpperCase();\r\n if (upperSymbol.indexOf('.SH')>0)\r\n {\r\n upperSymbol=upperSymbol.replace('.SH','');\r\n if (upperSymbol.charAt(0)=='0' && parseInt(upperSymbol)<=3000) return true;\r\n\r\n }\r\n else if (upperSymbol.indexOf('.SZ')>0)\r\n {\r\n upperSymbol=upperSymbol.replace('.SZ','');\r\n if (upperSymbol.charAt(0)=='3' && upperSymbol.charAt(1)=='9') return true;\r\n }\r\n else if (upperSymbol.indexOf('.CI')>0) //自定义指数\r\n {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction StockData(symbol)\r\n{\r\n this.Symbol=symbol; //股票代码\r\n this.Name; //股票名称\r\n\r\n //基础数据\r\n this.Open; //开盘\r\n this.Price; //最新\r\n this.High; //最高\r\n this.Low; //最低\r\n this.YClose; //前收盘\r\n this.Vol //成交量\r\n this.Amount; //成交金额\r\n this.Date; //交易日期\r\n this.Time; //交易时间\r\n this.ExchangeRate; //换手率\r\n this.Amplitude; //振幅\r\n this.VolRatio; //量比\r\n\r\n this.Increase; //涨幅\r\n this.MaxPrice; //涨停价\r\n this.MinPrice; //跌停价\r\n this.RFPrice //涨跌额 (Price-YClose)\r\n\r\n this.IndexTop; //涨跌家数\r\n this.Week; //周涨幅\r\n\r\n this.MinuteAmplitude = {}; //1,3,5,10,15, 振幅\r\n this.RiseFallSpeed = {}; //1,3,5,10,15 分钟涨速\r\n this.MAmount={}; //1,3,5,10,15 分钟成交量\r\n\r\n this.GetBaseData=function(tagID,field)\r\n {\r\n this.BaseDataTagID.add(tagID);\r\n switch(field)\r\n {\r\n case STOCK_FIELD_NAME.SYMBOL:\r\n return this.Symbol;\r\n case STOCK_FIELD_NAME.NAME:\r\n return this.Name;\r\n case STOCK_FIELD_NAME.OPEN:\r\n return this.Open;\r\n case STOCK_FIELD_NAME.PRICE:\r\n return this.Price;\r\n case STOCK_FIELD_NAME.YCLOSE:\r\n return this.YClose;\r\n case STOCK_FIELD_NAME.HIGH:\r\n return this.High;\r\n case STOCK_FIELD_NAME.LOW:\r\n return this.Low;\r\n case STOCK_FIELD_NAME.VOL:\r\n return this.Vol;\r\n case STOCK_FIELD_NAME.AMOUNT:\r\n return this.Amount;\r\n case STOCK_FIELD_NAME.DATE:\r\n return this.Date;\r\n case STOCK_FIELD_NAME.TIME:\r\n return this.Time;\r\n case STOCK_FIELD_NAME.INCREASE:\r\n return this.Increase;\r\n case STOCK_FIELD_NAME.EXCHANGE_RATE:\r\n return this.ExchangeRate;\r\n case STOCK_FIELD_NAME.AMPLITUDE:\r\n return this.Amplitude;\r\n case STOCK_FIELD_NAME.MAX_PRICE:\r\n return this.MaxPrice;\r\n case STOCK_FIELD_NAME.MIN_PRICE:\r\n return this.MinPrice;\r\n case STOCK_FIELD_NAME.RISE_FALL_PRICE:\r\n return this.RFPrice;\r\n case STOCK_FIELD_NAME.VOLRATIO:\r\n return this.VolRatio;\r\n\r\n \r\n case STOCK_FIELD_NAME.INDEXTOP:\r\n return this.IndexTop;\r\n case STOCK_FIELD_NAME.WEEK:\r\n return this.Week;\r\n }\r\n }\r\n\r\n this.Heat; //热度\r\n //获取热度数据,不要直接使用变量获取\r\n this.GetHeatData=function(tagID)\r\n {\r\n this.HeatTagID.add(tagID);\r\n return this.Heat;\r\n }\r\n\r\n //成分排序\r\n this.Sort=new Map(); //key=排序字段-排序方式 value=SortData 一个控件之能有1个排序规则\r\n this.GetSortData=function(tagID,field,order)\r\n {\r\n var key=field.toString()+'-'+order.toString();\r\n if (!this.Sort.has(key))\r\n {\r\n var data=new SortData(field,order,tagID);\r\n this.Sort.set(key,data);\r\n return data;\r\n }\r\n\r\n var data=this.Sort.get(key);\r\n data.TagID.add(tagID);\r\n return data;\r\n }\r\n\r\n this.Buy5; //五档买\r\n this.GetBuy5=function(tagID)\r\n {\r\n this.BuySellTagID.add(tagID);\r\n return this.Buy5;\r\n }\r\n\r\n this.Sell5; //五档卖\r\n this.GetSell5=function(tagID)\r\n {\r\n this.BuySellTagID.add(tagID);\r\n return this.Sell5;\r\n }\r\n\r\n this.Deal; //分笔 最新10条\r\n this.GetDeal=function(tagID)\r\n {\r\n this.DealTagID.add(tagID);\r\n return this.Deal;\r\n }\r\n\r\n this.MarketValue; //总市值\r\n this.FlowMarketValue; //流通市值\r\n this.Bookrate; //委比\r\n this.Bookdiffer; //委差\r\n this.PE; //市盈率\r\n this.PE2; //市盈率(TTM)\r\n this.PE3; //市盈率(动)\r\n this.PB;\r\n this.GetDerivative=function(tagID,field)\r\n {\r\n this.DerivativeTagID.add(tagID);\r\n\r\n switch(field)\r\n {\r\n case STOCK_FIELD_NAME.MARKET_VALUE:\r\n return this.MarketValue;\r\n case STOCK_FIELD_NAME.FLOW_MARKET_VALUE:\r\n return this.FlowMarketValue;\r\n case STOCK_FIELD_NAME.BOOK_RATE:\r\n return this.Bookrate;\r\n case STOCK_FIELD_NAME.BOOK_DIFFER:\r\n return this.Bookdiffer;\r\n case STOCK_FIELD_NAME.PE:\r\n return this.PE;\r\n case STOCK_FIELD_NAME.PE2:\r\n return this.PE2;\r\n case STOCK_FIELD_NAME.PE3:\r\n return this.PE3;\r\n case STOCK_FIELD_NAME.PB:\r\n return this.PB;\r\n }\r\n }\r\n\r\n \r\n this.Finance; //财务数据 \r\n this.GetFinance=function(tagID,field)\r\n {\r\n if (!this.Finance) //只请求一次\r\n {\r\n this.FinanceTagID.add(tagID);\r\n return null;\r\n }\r\n\r\n switch(field)\r\n {\r\n case STOCK_FIELD_NAME.ROE:\r\n return this.Finance.ROE;\r\n case STOCK_FIELD_NAME.FINANCE_DATE:\r\n return this.Finance.Date;\r\n case STOCK_FIELD_NAME.FINANCE_PERSEARNING:\r\n return this.Finance.PerSEarning;\r\n case STOCK_FIELD_NAME.FINANCE_PERNETASSET:\r\n return this.Finance.PerNetAsset;\r\n case STOCK_FIELD_NAME.FINANCE_NPROFIT:\r\n return this.Finance.NProfit;\r\n case STOCK_FIELD_NAME.FINANCE_NPROFITINCREASE:\r\n return this.Finance.NProfitIncrease;\r\n case STOCK_FIELD_NAME.FINANCE_NNETPROFIT:\r\n return this.Finance.NnetProfit;\r\n case STOCK_FIELD_NAME.FINANCE_NNPROFITINCREASE:\r\n return this.Finance.NnProfitIncrease;\r\n case STOCK_FIELD_NAME.FINANCE_NNPROFITSPEED:\r\n return this.Finance.NnProfitSpeed;\r\n case STOCK_FIELD_NAME.FINANCE_EPS:\r\n return this.Finance.EPS;\r\n case STOCK_FIELD_NAME.FINANCE_BENFORD:\r\n return this.Finance.Benford;\r\n }\r\n }\r\n\r\n this.Capital; //股本\r\n this.GetCapital=function(tagID, field)\r\n {\r\n if (!this.Capital) //只请求一次\r\n {\r\n this.CapitalTagID.add(tagID);\r\n return null;\r\n }\r\n\r\n switch(field)\r\n {\r\n case STOCK_FIELD_NAME.CAPITAL_TOTAL:\r\n return this.Capital.Total;\r\n case STOCK_FIELD_NAME.CAPITAL_A:\r\n return this.Capital.A;\r\n case STOCK_FIELD_NAME.CAPTIAL_ARATE:\r\n return this.Capital.ARate;\r\n }\r\n }\r\n\r\n //资金流\r\n this.CapitalFlowDay;\r\n this.CapitalFlowDay3;\r\n this.CapitalFlowDay5;\r\n this.CapitalFlowDay10;\r\n this.GetCapitalFlowDay = function (tagID, field) \r\n {\r\n let data=null;\r\n switch(field)\r\n {\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY:\r\n this.CapitalFlowDayID.add(tagID);\r\n if (this.CapitalFlowDay) data = this.CapitalFlowDay;\r\n break;\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY3:\r\n this.CapitalFlowDay3ID.add(tagID);\r\n if (this.CapitalFlowDay3) data = this.CapitalFlowDay3;\r\n break;\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY5:\r\n this.CapitalFlowDay5ID.add(tagID);\r\n if (this.CapitalFlowDay5) data = this.CapitalFlowDay5;\r\n break;\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY10:\r\n this.CapitalFlowDay10ID.add(tagID);\r\n if (this.CapitalFlowDay10) data = this.CapitalFlowDay10;\r\n break;\r\n }\r\n return data;\r\n }\r\n\r\n\r\n //资金流 DDE\r\n this.DDE;\r\n this.DDE3;\r\n this.DDE5;\r\n this.DDE10;\r\n this.GetDDE = function (tagID, field)\r\n {\r\n let data = null;\r\n switch (field) {\r\n case STOCK_FIELD_NAME.DDE:\r\n this.DDEID.add(tagID);\r\n if (this.DDE) data = this.DDE;\r\n break;\r\n case STOCK_FIELD_NAME.DDE3:\r\n this.DDE3ID.add(tagID);\r\n if (this.DDE3) data = this.DDE3;\r\n break;\r\n case STOCK_FIELD_NAME.DDE5:\r\n this.DDE5ID.add(tagID);\r\n if (this.DDE5) data = this.DDE5;\r\n break;\r\n case STOCK_FIELD_NAME.DDE10:\r\n this.DDE10ID.add(tagID);\r\n if (this.DDE10) data = this.DDE10;\r\n break;\r\n }\r\n return data;\r\n }\r\n\r\n this.Event; //事件 属性\r\n this.GetEvent = function (tagID, field) \r\n {\r\n if (!this.Event) \r\n {\r\n this.EventTagID.add(tagID);\r\n return null;\r\n }\r\n\r\n return this.Event;\r\n }\r\n\r\n\t//个股资料\r\n this.Company; //个股资料\r\n this.GetCompany = function (tagID, field) {\r\n if (!this.Company) //只请求一次\r\n {\r\n this.CompanyTagID.add(tagID);\r\n return null;\r\n }\r\n\r\n switch (field) {\r\n case STOCK_FIELD_NAME.COMPANY_NAME:\r\n return this.Company.Name;\r\n case STOCK_FIELD_NAME.COMPANY_BUSINESS:\r\n return this.Company.Business;\r\n case STOCK_FIELD_NAME.COMPANY_VOL:\r\n return this.Company.Vol;\r\n case STOCK_FIELD_NAME.COMPANY_PRICE:\r\n return this.Company.Price;\r\n case STOCK_FIELD_NAME.COMPANY_RELEASEDATE:\r\n return this.Company.ReleaseDate;\r\n case STOCK_FIELD_NAME.COMPANY_COMPETENCE:\r\n return this.Company.Competence;\r\n }\r\n }\r\n\r\n this.Plate; //板块\r\n this.GetPlate = function (tagID, field) {\r\n if (!this.Plate) //只请求一次\r\n {\r\n this.PlateTagID.add(tagID);\r\n return null;\r\n }\r\n\r\n switch (field) {\r\n case STOCK_FIELD_NAME.PLATE_INDUSTRY:\r\n return this.Plate.Industry;\r\n case STOCK_FIELD_NAME.PLATE_CONCEPT:\r\n return this.Plate.Concept;\r\n case STOCK_FIELD_NAME.PLATE_REGION:\r\n return this.Plate.Region;\r\n }\r\n }\r\n\r\n this.TagID=new Set(); //绑定的控件id\r\n this.BaseDataTagID=new Set(); //基础数据的控件id\r\n this.HeatTagID=new Set(); //需要热度的控件id\r\n this.BuySellTagID=new Set();//买卖盘的控件id\r\n this.DealTagID=new Set(); //分笔的控件id\r\n this.DerivativeTagID=new Set(); //衍生数据\r\n this.FinanceTagID=new Set(); //财务数据 (就请求1次)\r\n this.CapitalTagID=new Set(); //股本数据 (就请求1次)\r\n\r\n this.CapitalFlowDayID=new Set(); //当日资金流\r\n this.CapitalFlowDay3ID = new Set(); //3日资金流\r\n this.CapitalFlowDay5ID = new Set(); //5日资金流\r\n this.CapitalFlowDay10ID = new Set(); //10日资金流\r\n this.DDEID=new Set();\r\n this.DDE3ID = new Set();\r\n this.DDE5ID = new Set();\r\n this.DDE10ID = new Set();\r\n this.EventTagID = new Set(); //股票事件/属性\r\n\tthis.CompanyTagID = new Set(); //个股资料 (就请求1次)\r\n this.PlateTagID = new Set(); //板块 概念 地区\r\n\r\n this.AttachTagID=function(id)\r\n {\r\n this.TagID.add(id);\r\n }\r\n\r\n this.ClearTagID=function()\r\n {\r\n this.TagID.clear();\r\n this.BaseDataTagID.clear();\r\n this.HeatTagID.clear();\r\n this.BuySellTagID.clear();\r\n this.DealTagID.clear();\r\n this.DerivativeTagID.clear();\r\n this.FinanceTagID.clear();\r\n this.CapitalTagID.clear();\r\n\r\n this.CapitalFlowDayID.clear();\r\n this.CapitalFlowDay3ID.clear();\r\n this.CapitalFlowDay5ID.clear();\r\n this.CapitalFlowDay10ID.clear();\r\n\r\n this.DDEID.clear();\r\n this.DDE3ID.clear();\r\n this.DDE5ID.clear();\r\n this.DDE10ID.clear();\r\n\r\n this.EventTagID.clear();\r\n this.CompanyTagID.clear();\r\n\r\n for(var item of this.Sort)\r\n {\r\n item[1].TagID.clear();\r\n }\r\n }\r\n\r\n this.RemoveTagID=function(id)\r\n {\r\n this.TagID.delete(id);\r\n this.BaseDataTagID.delete(id);\r\n this.HeatTagID.delete(id);\r\n this.BuySellTagID.delete(id);\r\n this.DealTagID.delete(id);\r\n this.DerivativeTagID.delete(id);\r\n this.FinanceTagID.delete(id);\r\n this.CapitalTagID.delete(id);\r\n\r\n this.CapitalFlowDayID.delete(id);\r\n this.CapitalFlowDay3ID.delete(id);\r\n this.CapitalFlowDay5ID.delete(id);\r\n this.CapitalFlowDay10ID.delete(id);\r\n\r\n this.DDEID.delete(id);\r\n this.DDE3ID.delete(id);\r\n this.DDE5ID.delete(id);\r\n this.DDE10ID.delete(id);\r\n\r\n this.EventTagID.delete(id);\r\n this.CompanyTagID.delete(id);\r\n\r\n for(var item of this.Sort)\r\n {\r\n item[1].TagID.delete(id);\r\n }\r\n }\r\n\r\n //设置基础数据\r\n this.SetBaseData=function(data)\r\n {\r\n this.Name=data.name;\r\n this.YClose=data.yclose;\r\n this.Price=data.price;\r\n this.High=data.high;\r\n this.Low=data.low;\r\n this.Open=data.open;\r\n this.Vol=data.vol;\r\n this.Amount=data.amount;\r\n this.Date=data.date;\r\n this.Time=data.time;\r\n this.Increase=data.increase;\r\n if (!isNaN(data.exchangerate)) this.ExchangeRate=data.exchangerate;\r\n if (!isNaN(data.amplitude)) this.Amplitude=data.amplitude;\r\n if (!isNaN(data.volratio)) this.VolRatio=data.volratio;\r\n \r\n if (this.Name.indexOf('ST')>=0)\r\n {\r\n this.MaxPrice=(1+0.05)*this.Open;\r\n this.MinPrice=(1-0.05)*this.Open;\r\n }\r\n else\r\n {\r\n this.MaxPrice=(1+0.1)*this.Open;\r\n this.MinPrice=(1-0.1)*this.Open;\r\n }\r\n\r\n if (this.Price && this.YClose)\r\n this.RFPrice=this.Price-this.YClose;\r\n\r\n //周涨幅\r\n if (data.week)\r\n {\r\n this.Week={};\r\n this.Week.Week1=data.week.week1;\r\n this.Week.Week4=data.week.week4;\r\n this.Week.Week13=data.week.week13;\r\n this.Week.Week26=data.week.week26;\r\n this.Week.Week52=data.week.week52;\r\n }\r\n }\r\n\r\n this.SetDerivativeData=function(data)\r\n {\r\n this.MarketValue=data.marketvalue; //总市值\r\n this.FlowMarketValue=data.flowmarketvalue; //流通市值\r\n this.Bookrate=data.bookrate; //委比\r\n this.Bookdiffer=data.bookdiffer; //委差\r\n this.PE=data.pe; //市盈率\r\n this.PE2=data.pe2; //市盈率\r\n this.PE3=data.pe3; //市盈率\r\n this.PB=data.pb; //市净率\r\n }\r\n\r\n this.SetFinanceData=function(data)\r\n {\r\n console.log(data);\r\n if (!data.finance) return;\r\n\r\n this.Finance=new FinanceData();\r\n this.Finance.SetData(data); \r\n }\r\n\r\n this.SetCapitalData=function(data)\r\n {\r\n if (!data.capital) return;\r\n\r\n this.Capital=new CapitalData();\r\n this.Capital.SetData(data); \r\n }\r\n\r\n //指数基础数据\r\n this.SetIndexBaseData=function(data)\r\n {\r\n this.SetBaseData(data);\r\n\r\n var topData=new IndexTopData();\r\n if(data.indextop){\r\n topData.Up=data.indextop.up;\r\n topData.Down=data.indextop.down;\r\n topData.Unchanged=data.indextop.unchanged;\r\n topData.Stop=data.indextop.stop;\r\n\r\n topData.UpStock.Symbol=data.indextop.upstock.symbol;\r\n topData.UpStock.Name=data.indextop.upstock.name;\r\n\r\n topData.DownStock.Symbol=data.indextop.downstock.symbol;\r\n topData.DownStock.Name=data.indextop.downstock.name;\r\n }\r\n\r\n this.IndexTop=topData;\r\n }\r\n\r\n //五档买卖盘\r\n this.SetBuySellData=function(data)\r\n {\r\n this.SetBaseData(data);\r\n this.Buy5=new Array();\r\n this.Sell5=new Array();\r\n\r\n for(var i in data.buy)\r\n {\r\n var item=data.buy[i];\r\n\r\n this.Buy5.push({\"Price\":item.price,\"Vol\":item.vol});\r\n }\r\n\r\n for(var i in data.sell)\r\n {\r\n var item=data.sell[i];\r\n this.Sell5.push({\"Price\":item.price,\"Vol\":item.vol});\r\n }\r\n }\r\n\r\n //分笔\r\n this.SetDealData=function(data)\r\n {\r\n this.Price=data.price;\r\n this.High=data.high;\r\n this.Low=data.low;\r\n this.Vol=data.vol;\r\n this.Amount=data.amount;\r\n this.Date=data.date;\r\n this.Time=data.time;\r\n this.Increase=data.increase;\r\n\r\n this.Deal=new Array();\r\n for(var i in data.deal)\r\n {\r\n var item=data.deal[i];\r\n if (isNaN(item.price) || isNaN(item.time)) continue;\r\n var bs='';\r\n if (item.bs===0) bs='B';\r\n else if (item.bs===1) bs='S';\r\n this.Deal.push({\"Price\":item.price,\"Amount\":item.amount,\"Vol\":item.vol,\"Time\":item.time, 'BS':bs});\r\n }\r\n }\r\n\r\n //热度\r\n this.SetHeatData=function(data)\r\n {\r\n var heatData=new IndexHeatData();\r\n heatData.Good=data.quadrant.good;\r\n heatData.GoodIncrease.Day1=data.quadrant.gincrease.day1;\r\n heatData.GoodIncrease.Week1=data.quadrant.gincrease.week1;\r\n heatData.GoodIncrease.Week4=data.quadrant.gincrease.week4;\r\n\r\n this.Heat=heatData;\r\n }\r\n\r\n this.SetCapitalFlowDayData = function (data,datatype) \r\n {\r\n if (!data) return;\r\n\r\n switch (datatype) \r\n {\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA:\r\n this.CapitalFlowDay=new CapitalFlowDayData();\r\n this.CapitalFlowDay.SetData(data);\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA:\r\n this.CapitalFlowDay3 = new CapitalFlowDaysData();\r\n this.CapitalFlowDay3.SetData(data);\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA:\r\n this.CapitalFlowDay5 = new CapitalFlowDaysData();\r\n this.CapitalFlowDay5.SetData(data);\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA:\r\n this.CapitalFlowDay10 = new CapitalFlowDaysData();\r\n this.CapitalFlowDay10.SetData(data);\r\n break;\r\n }\r\n }\r\n\r\n this.SetDDE = function (data, datatype) \r\n {\r\n if (!data) return;\r\n\r\n switch (datatype) \r\n {\r\n case RECV_DATA_TYPE.DDE_DAY_DATA:\r\n this.DDE = new DDEData();\r\n this.DDE.SetData(data);\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY3_DATA:\r\n this.DDE3 = new DDEData();\r\n this.DDE3.SetData(data);\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY5_DATA:\r\n this.DDE5 = new DDEData();\r\n this.DDE5.SetData(data);\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY10_DATA:\r\n this.DDE10 = new DDEData();\r\n this.DDE10.SetData(data);\r\n break;\r\n }\r\n return data;\r\n }\r\n\r\n this.SetEventData = function (data) \r\n {\r\n if (!data.events) return;\r\n\r\n this.Event = new EventData();\r\n this.Event.SetData(data);\r\n }\r\n\r\n\tthis.SetCompanyData = function (data) {\r\n if (!data.company) return;\r\n\r\n this.Company = new CompanyData();\r\n this.Company.SetData(data);\r\n }\r\n\r\n this.SetPlateData = function (data) {\r\n if (!data.industry && !data.region && !data.concept) return;\r\n\r\n this.Plate = new PlateData();\r\n this.Plate.SetData(data);\r\n }\r\n //所有数据\r\n this.SetData = function (data) \r\n {\r\n if (data.name) this.Name = data.name;\r\n if (!isNaN(data.yclose)) this.YClose = data.yclose;\r\n if (!isNaN(data.price)) this.Price = data.price;\r\n if (!isNaN(data.high)) this.High = data.high;\r\n if (!isNaN(data.low)) this.Low = data.low;\r\n if (!isNaN(data.vol)) this.Vol = data.vol;\r\n if (!isNaN(data.amount)) this.Amount = data.amount;\r\n if (!isNaN(data.date)) this.Date = data.date;\r\n if (!isNaN(data.time)) this.Time = data.time;\r\n if (!isNaN(data.increase)) this.Increase = data.increase;\r\n\r\n if (!isNaN(data.marketvalue)) this.MarketValue = data.marketvalue; //总市值\r\n if (!isNaN(data.flowmarketvalue)) this.FlowMarketValue = data.flowmarketvalue; //流通市值\r\n if (!isNaN(data.bookrate)) this.Bookrate = data.bookrate; //委比\r\n if (!isNaN(data.bookdiffer)) this.Bookdiffer = data.bookdiffer; //委差\r\n if (!isNaN(data.pe)) this.PE = data.pe;\r\n if (!isNaN(data.pb)) this.PB = data.pb;\r\n\r\n if (data.finance) this.SetFinanceData(data);\r\n if (data.finance) this.SetFinanceDetailData(data);\r\n if (data.capital) this.SetCapitalData(data);\r\n\r\n if (data.mamplitude) \r\n {\r\n if (!isNaN(data.mamplitude[1])) this.MinuteAmplitude.M1 = data.mamplitude[1];\r\n if (!isNaN(data.mamplitude[3])) this.MinuteAmplitude.M3 = data.mamplitude[3];\r\n if (!isNaN(data.mamplitude[5])) this.MinuteAmplitude.M5 = data.mamplitude[5];\r\n if (!isNaN(data.mamplitude[10])) this.MinuteAmplitude.M10 = data.mamplitude[10];\r\n if (!isNaN(data.mamplitude[15])) this.MinuteAmplitude.M15 = data.mamplitude[15];\r\n }\r\n\r\n if (data.risefallspeed) \r\n {\r\n if (!isNaN(data.risefallspeed[1])) this.RiseFallSpeed.M1 = data.risefallspeed[1];\r\n if (!isNaN(data.risefallspeed[3])) this.RiseFallSpeed.M3 = data.risefallspeed[3];\r\n if (!isNaN(data.risefallspeed[5])) this.RiseFallSpeed.M5 = data.risefallspeed[5];\r\n if (!isNaN(data.risefallspeed[10])) this.RiseFallSpeed.M10 = data.risefallspeed[10];\r\n if (!isNaN(data.risefallspeed[15])) this.RiseFallSpeed.M15 = data.risefallspeed[15];\r\n }\r\n\r\n if (data.mamount) \r\n {\r\n if (!isNaN(data.mamount[1])) this.MAmount.M1 = data.mamount[1];\r\n if (!isNaN(data.mamount[3])) this.MAmount.M5 = data.mamount[3];\r\n if (!isNaN(data.mamount[5])) this.MAmount.M5 = data.mamount[5];\r\n if (!isNaN(data.mamount[10])) this.MAmount.M10 = data.mamount[10];\r\n if (!isNaN(data.mamount[15])) this.MAmount.M15 = data.mamount[15];\r\n }\r\n\r\n //if (data.pledge) this.SetPledgeData(data);\r\n //if (data.year) this.SetYearData(data);\r\n\r\n }\r\n\r\n}\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////\r\n//\r\n//\r\n\r\n//股票字段枚举\r\nvar STOCK_FIELD_NAME=\r\n{\r\n SYMBOL:0,\r\n NAME:1,\r\n OPEN:2,\r\n PRICE:3,\r\n HIGH:4,\r\n LOW:5,\r\n YCLOSE:6,\r\n VOL:7, //成交量\r\n AMOUNT:8, //成交金额\r\n DATE:9,\r\n TIME:10,\r\n INCREASE:11,\r\n BUY5:12, //5档买\r\n SELL5:13, //5挡卖\r\n DEAL:14, //分笔\r\n AMPLITUDE:15, //振幅\r\n\r\n MARKET_VALUE:16, //总市值\r\n FLOW_MARKET_VALUE:17, //流通市值\r\n\r\n BOOK_RATE:18, //委比\r\n BOOK_DIFFER:19, //委差\r\n\r\n PE:20, //市盈率=股价/滚动EPS\r\n PB:21, //市净率=股价/每股净资产\r\n EXCHANGE_RATE:23, //换手率\r\n\r\n //财务数据\r\n ROE:24, //净资产收益率\r\n FINANCE_DATE:25, //报告日期\r\n FINANCE_PERSEARNING:26, //每股收益\r\n FINANCE_PERNETASSET:27, //每股净资产\r\n\r\n FINANCE_NPROFIT:28, //净利润\r\n FINANCE_NPROFITINCREASE:29, //净利润涨幅 (当年净利润-上一年)/上一年*100\r\n\r\n FINANCE_NNETPROFIT:30, //扣非净利润\r\n FINANCE_NNPROFITINCREASE:31, //扣非净利润涨幅 (当年扣非净利润-上一年)/上一年*100\r\n FINANCE_NNPROFITSPEED:32, //扣非净利润涨速(当前扣非净利润/上一年-1)/(上一年/上上年-1)\r\n FINANCE_EPS:33, //滚动EPS\r\n\r\n MAX_PRICE:34, //涨停价\r\n MIN_PRICE:35, //跌停价\r\n RISE_FALL_PRICE:36, //涨跌额\r\n\r\n FINANCE_BENFORD:37, //财务粉饰\r\n\r\n //1,3,5 ,10,15 分钟涨速\r\n RISEFALLSPEED_1: 38,\r\n RISEFALLSPEED_3: 39,\r\n RISEFALLSPEED_5: 40,\r\n RISEFALLSPEED_10: 41,\r\n RISEFALLSPEED_15: 42,\r\n\r\n //1,3,5 ,10,15 振幅\r\n MINUTE_AMPLITUDE_1: 43,\r\n MINUTE_AMPLITUDE_3: 44,\r\n MINUTE_AMPLITUDE_5: 45,\r\n MINUTE_AMPLITUDE_10: 46,\r\n MINUTE_AMPLITUDE_15: 47,\r\n\r\n //1,3,5 ,10,15 分钟 成交金额\r\n MINUTE_AMOUNT_1: 48,\r\n MINUTE_AMOUNT_3: 49,\r\n MINUTE_AMOUNT_5: 50,\r\n MINUTE_AMOUNT_10: 51,\r\n MINUTE_AMOUNT_15: 52,\r\n\r\n\t//个股资料\r\n COMPANY_NAME: 53, //公司全称\r\n PLATE_INDUSTRY: 54, //所属行业\r\n PLATE_CONCEPT: 55, //概念\r\n PLATE_REGION: 56, //地区\r\n COMPANY_BUSINESS: 57,\r\n COMPANY_VOL: 58,\r\n COMPANY_PRICE: 59,\r\n COMPANY_RELEASEDATE: 60,\r\n COMPANY_COMPETENCE: 61,\r\n CAPITAL_FLOW_DAY:67, //当日资金流\r\n CAPITAL_FLOW_DAY3: 68, //3日资金流\r\n CAPITAL_FLOW_DAY5: 69, //5日资金流\r\n CAPITAL_FLOW_DAY10: 70, //10日资金流\r\n DDE:71,\r\n DDE3:72,\r\n DDE5:73,\r\n DDE10:74,\r\n\r\n //股票属性|事件 包含\r\n // 融资融券标,\r\n // 港股,\r\n // 沪港通,\r\n // St标识 0:正常股票,1:st股票,2:*st股票\r\n EVENTS: 75, \r\n \r\n CAPITAL_A:76, //流通A股\r\n CAPITAL_TOTAL:77, //总股本\r\n CAPTIAL_ARATE:78, //流通A股占比\r\n\r\n VOLRATIO:79, //量比\r\n PE2:80, //市盈率(TTM)\r\n PE3:81, //市盈率(动)\r\n\r\n\r\n INDEXTOP:100,\r\n WEEK:101,\r\n HEAT:102\r\n};\r\n\r\nvar StockDataFieldName =\r\n{\r\n m_mapFiled: new Map(\r\n [\r\n [STOCK_FIELD_NAME.NAME, \"name\"],\r\n [STOCK_FIELD_NAME.SYMBOL, 'symbol'],\r\n [STOCK_FIELD_NAME.PRICE, 'price'],\r\n [STOCK_FIELD_NAME.INCREASE, 'increase'],\r\n [STOCK_FIELD_NAME.PE, 'pe'],\r\n [STOCK_FIELD_NAME.FINANCE_BENFORD, 'finance.benford'],\r\n [STOCK_FIELD_NAME.YCLOSE,'yclose'],\r\n\r\n //1,3,5 ,10,15 分钟涨速\r\n [STOCK_FIELD_NAME.RISEFALLSPEED_1, 'risefallspeed.1'],\r\n [STOCK_FIELD_NAME.RISEFALLSPEED_3, 'risefallspeed.3'],\r\n [STOCK_FIELD_NAME.RISEFALLSPEED_5, 'risefallspeed.5'],\r\n [STOCK_FIELD_NAME.RISEFALLSPEED_10, 'risefallspeed.10'],\r\n [STOCK_FIELD_NAME.RISEFALLSPEED_15, 'risefallspeed.15'],\r\n\r\n //1,3,5 ,10,15 振幅\r\n [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_1, 'mamplitude.1'],\r\n [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_3, 'mamplitude.3'],\r\n [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_5, 'mamplitude.5'],\r\n [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_10, 'mamplitude.10'],\r\n [STOCK_FIELD_NAME.MINUTE_AMPLITUDE_15, 'mamplitude.15'],\r\n\r\n //1,3,5 ,10,15 分钟 成交金额\r\n [STOCK_FIELD_NAME.MINUTE_AMOUNT_1, 'mamount.1'],\r\n [STOCK_FIELD_NAME.MINUTE_AMOUNT_3, 'mamount.3'],\r\n [STOCK_FIELD_NAME.MINUTE_AMOUNT_5, 'mamount.5'],\r\n [STOCK_FIELD_NAME.MINUTE_AMOUNT_10, 'mamount.10'],\r\n [STOCK_FIELD_NAME.MINUTE_AMOUNT_15, 'mamount.15'],\r\n \r\n /*\r\n //股权质押\r\n [STOCK_FIELD_NAME.PLEDGE_PROPORTION, 'pledge.prop'], //累计质押比例%\r\n [STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_PROPORTION, 'pledge.shprop'], //控股股东累计质押比%(shareholder proportion)\r\n [STOCK_FIELD_NAME.PLEDGE_SHAREHOLDER_HELD_PROPORTION, 'pledge.shheldeprop'], //控股股东累计质押数量占持股比例% (shareholder held proportion)\r\n [STOCK_FIELD_NAME.PLEDGE_VOL, 'pledge.vol'],\r\n [STOCK_FIELD_NAME.PLEDGE_UNSALE_VOL, 'pledge.unsalevol'],\r\n [STOCK_FIELD_NAME.PLEDGE_SALE_VOL, 'pledge.salevol'],\r\n\r\n //年涨幅\r\n [STOCK_FIELD_NAME.YEAR_YEAR1, 'year.year1'],\r\n */\r\n ]\r\n ),\r\n\r\n GetFieldName: function (fieldID) \r\n {\r\n if (!this.m_mapFiled.has(fieldID)) return null;\r\n\r\n return this.m_mapFiled.get(fieldID);\r\n }\r\n}\r\n\r\n\r\nfunction StockRead(stock,tagID)\r\n{\r\n this.JSStock=stock;\r\n this.TagID=tagID;\r\n\r\n this.Get=function(symbol,field)\r\n {\r\n var data=stock.Get(symbol,this.TagID);\r\n if(!data) return null;\r\n\r\n switch(field)\r\n {\r\n case STOCK_FIELD_NAME.SYMBOL:\r\n case STOCK_FIELD_NAME.NAME:\r\n case STOCK_FIELD_NAME.OPEN:\r\n case STOCK_FIELD_NAME.PRICE:\r\n case STOCK_FIELD_NAME.YCLOSE:\r\n case STOCK_FIELD_NAME.HIGH:\r\n case STOCK_FIELD_NAME.LOW:\r\n case STOCK_FIELD_NAME.VOL:\r\n case STOCK_FIELD_NAME.AMOUNT:\r\n case STOCK_FIELD_NAME.DATE:\r\n case STOCK_FIELD_NAME.TIME:\r\n case STOCK_FIELD_NAME.INCREASE:\r\n case STOCK_FIELD_NAME.EXCHANGE_RATE:\r\n case STOCK_FIELD_NAME.AMPLITUDE:\r\n case STOCK_FIELD_NAME.MAX_PRICE:\r\n case STOCK_FIELD_NAME.MIN_PRICE:\r\n case STOCK_FIELD_NAME.RISE_FALL_PRICE:\r\n case STOCK_FIELD_NAME.INDEXTOP:\r\n case STOCK_FIELD_NAME.WEEK:\r\n case STOCK_FIELD_NAME.VOLRATIO:\r\n return data.GetBaseData(this.TagID,field);\r\n\r\n case STOCK_FIELD_NAME.HEAT:\r\n return data.GetHeatData(this.TagID);\r\n case STOCK_FIELD_NAME.BUY5:\r\n return data.GetBuy5(this.TagID);\r\n case STOCK_FIELD_NAME.SELL5:\r\n return data.GetSell5(this.TagID);\r\n case STOCK_FIELD_NAME.DEAL:\r\n return data.GetDeal(this.TagID);\r\n\r\n //实时计算的衍生数据\r\n case STOCK_FIELD_NAME.MARKET_VALUE:\r\n case STOCK_FIELD_NAME.FLOW_MARKET_VALUE:\r\n case STOCK_FIELD_NAME.BOOK_RATE:\r\n case STOCK_FIELD_NAME.BOOK_DIFFER:\r\n case STOCK_FIELD_NAME.PE:\r\n case STOCK_FIELD_NAME.PE2:\r\n case STOCK_FIELD_NAME.PE3:\r\n case STOCK_FIELD_NAME.PB:\r\n return data.GetDerivative(this.TagID,field);\r\n\r\n //财务数据\r\n case STOCK_FIELD_NAME.ROE:\r\n case STOCK_FIELD_NAME.FINANCE_DATE:\r\n case STOCK_FIELD_NAME.FINANCE_PERSEARNING:\r\n case STOCK_FIELD_NAME.FINANCE_PERNETASSET:\r\n case STOCK_FIELD_NAME.FINANCE_NPROFIT:\r\n case STOCK_FIELD_NAME.FINANCE_NPROFITINCREASE:\r\n case STOCK_FIELD_NAME.FINANCE_NNETPROFIT:\r\n case STOCK_FIELD_NAME.FINANCE_NNPROFITINCREASE:\r\n case STOCK_FIELD_NAME.FINANCE_NNPROFITSPEED:\r\n case STOCK_FIELD_NAME.FINANCE_EPS:\r\n case STOCK_FIELD_NAME.FINANCE_BENFORD:\r\n return data.GetFinance(this.TagID,field);\r\n\r\n //行业分类\r\n case STOCK_FIELD_NAME.PLATE_INDUSTRY:\r\n case STOCK_FIELD_NAME.PLATE_CONCEPT:\r\n case STOCK_FIELD_NAME.PLATE_REGION:\r\n return data.GetPlate(this.TagID, field);\r\n \r\n //资金流 \r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY:\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY3:\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY5:\r\n case STOCK_FIELD_NAME.CAPITAL_FLOW_DAY10:\r\n return data.GetCapitalFlowDay(this.TagID, field);\r\n\r\n //资金流 DDE\r\n case STOCK_FIELD_NAME.DDE:\r\n case STOCK_FIELD_NAME.DDE3:\r\n case STOCK_FIELD_NAME.DDE5:\r\n case STOCK_FIELD_NAME.DDE10:\r\n return data.GetDDE(this.TagID, field);\r\n\r\n //事件/属性\r\n case STOCK_FIELD_NAME.EVENTS:\r\n return data.GetEvent(this.TagID, field);\r\n\t\t\t//个股资料\r\n case STOCK_FIELD_NAME.COMPANY_NAME:\r\n case STOCK_FIELD_NAME.COMPANY_BUSINESS:\r\n case STOCK_FIELD_NAME.COMPANY_VOL:\r\n case STOCK_FIELD_NAME.COMPANY_PRICE:\r\n case STOCK_FIELD_NAME.COMPANY_RELEASEDATE:\r\n case STOCK_FIELD_NAME.COMPANY_COMPETENCE:\r\n return data.GetCompany(this.TagID, field);\r\n //股本\r\n case STOCK_FIELD_NAME.CAPITAL_A:\r\n case STOCK_FIELD_NAME.CAPTIAL_ARATE:\r\n case STOCK_FIELD_NAME.CAPITAL_TOTAL:\r\n return data.GetCapital(this.TagID, field);\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n //symbol=指数或板块 field=排序字段 order=排序方式\r\n this.GetSort=function(symbol,field,order)\r\n {\r\n var data=stock.Get(symbol,this.TagID);\r\n if (data==null) return data;\r\n\r\n return data.GetSortData(this.TagID,field,order);\r\n }\r\n\r\n //读取完成 isUpdate 是否马上更新数据\r\n this.EndRead=function(isUpdate)\r\n {\r\n if (isUpdate==true) this.JSStock.ReqeustData();\r\n }\r\n\r\n //批量设置查询数据字段\r\n this.SetQueryField=function(symbol, aryField)\r\n {\r\n for(var i in aryField)\r\n {\r\n this.Get(symbol,aryField[i])\r\n }\r\n }\r\n\r\n}\r\n\r\n//历史数据 个股财务粉饰 || 大宗交易 || 股东减持 || 限售解禁 || 业绩预告 || 空头指标\r\nfunction JSStockHistory() {\r\n this.Symbol;\r\n this.Callback; //UI回调\r\n this.Order = -1; //排序方向\r\n this.SortField; //排序字段\r\n this.Field; //返回字段\r\n this.Plate; //全市场\r\n this.Data = new Map(); //数据\r\n this.ApiUrl = g_JSStockResource.Domain + \"/API/StockHistoryDay\";\r\n this.PageSize = 20 ;//一页请求10调数据\r\n this.PageIndex = 1;\r\n this.Count;//数据总数\r\n this.currentData = null;//请求入参\r\n\r\n\r\n this.RequsetData = function (condition, condition2) {\r\n var self = this;\r\n var currentSymbol = typeof(self.Symbol) == \"string\" ? [this.Symbol] : this.Symbol;\r\n var currentSymbolLength = currentSymbol ? currentSymbol.length : 0;\r\n\r\n if (this.Plate){\r\n this.currentData = {\r\n \"plate\": this.Plate,//[\"CNA.ci\"],\r\n \"symbol\": currentSymbol,\r\n \"start\": 0,\r\n \"end\": this.PageSize,\r\n \"field\": this.Field,\r\n \"orderfield\": this.SortField,\r\n \"order\": this.Order,\r\n \"condition\": condition.GetQuery(),\r\n \"condition2\": condition2 ? condition2.GetQuery() : [],\r\n }\r\n }else{\r\n this.currentData = {\r\n \"symbol\": currentSymbol,\r\n \"start\": 0,\r\n \"end\": currentSymbolLength,\r\n \"field\": this.Field,\r\n \"orderfield\": this.SortField,\r\n \"order\": this.Order,\r\n \"condition\": condition.GetQuery(),\r\n \"condition2\": condition2 ? condition2.GetQuery() : [],\r\n }\r\n }\r\n\r\n $.ajax({\r\n url: this.ApiUrl,\r\n data: self.currentData,\r\n method: 'POST',\r\n\r\n dataType: 'json',\r\n success: function (data) {\r\n self.Count = data.data.count;\r\n self.RecvData(data, condition);\r\n },\r\n fail: function (request) {\r\n self.RecvError(request, condition);\r\n }\r\n });\r\n }\r\n\r\n this.GetNextPage = function () {\r\n var self = this;\r\n\r\n if (this.PageSize * this.PageIndex < this.Count){\r\n this.currentData.start = this.PageSize * this.PageIndex;\r\n this.PageIndex++;\r\n this.currentData.end = this.PageSize * this.PageIndex;\r\n\r\n $.ajax({\r\n url: this.ApiUrl,\r\n data: self.currentData,\r\n method: 'POST',\r\n dataType: 'json',\r\n success: function (data) {\r\n self.RecvData(data);\r\n },\r\n fail: function (request) {\r\n self.RecvError(request);\r\n }\r\n });\r\n }else{\r\n alert(\"数据已全部加载\")\r\n // wx.showToast({\r\n // title: \"数据已全部加载\",\r\n // icon: 'success',\r\n // duration: 1000\r\n // })\r\n }\r\n\r\n }\r\n\r\n //结果处理 个股财务粉饰\r\n this.RecvData = function (recvData, condition) {\r\n let data = recvData.data;\r\n for (let i in data.stock) {\r\n let item = data.stock[i];\r\n let strSymbol = item.symbol;\r\n let stockData = {};\r\n // console.log(\"this.Data.has(strSymbol)\", this.Data, strSymbol, this.Data.has(strSymbol));\r\n if (this.Data.has(strSymbol)) {\r\n stockData = this.Data.get(strSymbol);\r\n }\r\n else {\r\n stockData = {\r\n Symbol: item.symbol,\r\n Name: item.name,\r\n Data: new Map() //Map key=日期 value=Map(key=字段名, value=数值)\r\n };\r\n\r\n this.Data.set(strSymbol, stockData);\r\n }\r\n\r\n this.SetStockData(item, stockData);\r\n }\r\n\r\n if (this.Callback) this.Callback(this, condition);\r\n }\r\n\r\n this.SetStockData = function (data, stockData) {\r\n for (let i in data.stockday) {\r\n let item = data.stockday[i];\r\n let date = item.date;\r\n let dataMap = new Map();\r\n this.SetFinanceData(item, dataMap);\r\n this.SetBlocktradingData(item, dataMap);\r\n this.SetChangesData(item, dataMap);\r\n this.SetLiftingData(item, dataMap);\r\n this.SetPforecastData(item, dataMap);\r\n this.SetShortIndicatorsData(item, dataMap);\r\n stockData.Data.set(date, dataMap);\r\n }\r\n\r\n return stockData;\r\n }\r\n\r\n this.SetFinanceData = function (recvData, dataMap) {\r\n //1季度\r\n var finnance = recvData.finance1;\r\n if (finnance) {\r\n if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_NPROFITINCREASE, finnance.nprofitincrease);\r\n if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_NNPROFITINCREASE, finnance.nnprofitincrease);\r\n if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_NNPROFITSPEED, finnance.nnprofitspeed);\r\n if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_BENFORD, finnance.benford);\r\n }\r\n\r\n var announcement = recvData.announcement1;\r\n if (announcement) {\r\n if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_YEAR, announcement.year);\r\n if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE1_QUARTER, announcement.quarter);\r\n }\r\n\r\n //2季度\r\n var finnance = recvData.finance2;\r\n if (finnance) {\r\n if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_NPROFITINCREASE, finnance.nprofitincrease);\r\n if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_NNPROFITINCREASE, finnance.nnprofitincrease);\r\n if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_NNPROFITSPEED, finnance.nnprofitspeed);\r\n if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_BENFORD, finnance.benford);\r\n }\r\n\r\n var announcement = recvData.announcement2;\r\n if (announcement) {\r\n if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_YEAR, announcement.year);\r\n if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE2_QUARTER, announcement.quarter);\r\n }\r\n\r\n //3季度\r\n var finnance = recvData.finance3;\r\n if (finnance) {\r\n if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_NPROFITINCREASE, finnance.nprofitincrease);\r\n if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_NNPROFITINCREASE, finnance.nnprofitincrease);\r\n if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_NNPROFITSPEED, finnance.nnprofitspeed);\r\n if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_BENFORD, finnance.benford);\r\n }\r\n\r\n var announcement = recvData.announcement3;\r\n if (announcement) {\r\n if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_YEAR, announcement.year);\r\n if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE3_QUARTER, announcement.quarter);\r\n }\r\n\r\n //4季度\r\n var finnance = recvData.finance4;\r\n if (finnance) {\r\n if (!isNaN(finnance.nprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_NPROFITINCREASE, finnance.nprofitincrease);\r\n if (!isNaN(finnance.nnprofitincrease)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_NNPROFITINCREASE, finnance.nnprofitincrease);\r\n if (!isNaN(finnance.nnprofitspeed)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_NNPROFITSPEED, finnance.nnprofitspeed);\r\n if (!isNaN(finnance.benford)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_BENFORD, finnance.benford);\r\n }\r\n\r\n var announcement = recvData.announcement4;\r\n if (announcement) {\r\n if (!isNaN(announcement.year)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_YEAR, announcement.year);\r\n if (!isNaN(announcement.quarter)) dataMap.set(STOCK_HISTORY_FIELD_NAME.FINANCE4_QUARTER, announcement.quarter);\r\n }\r\n }\r\n\r\n //大宗交易\r\n this.SetBlocktradingData = function (recvData, dataMap) {\r\n var blocktrading = recvData.blocktrading;\r\n if (blocktrading) {\r\n dataMap.set(\r\n STOCK_HISTORY_FIELD_NAME.BLOCK_TRADING,\r\n {\r\n Premium: blocktrading.premium,////总溢价\r\n Price: blocktrading.price, //总成交价\r\n Vol: blocktrading.vol, //总成交量\r\n Amount: blocktrading.amount//成交额\r\n }\r\n );\r\n }\r\n }\r\n\r\n //股东减持\r\n this.SetChangesData = function (recvData, dataMap) {\r\n var changes = recvData.changes;\r\n if (changes) {\r\n dataMap.set(\r\n STOCK_HISTORY_FIELD_NAME.HOLDERS_CHANGES, {List: changes.list}\r\n );\r\n }\r\n }\r\n\r\n //限售解禁\r\n this.SetLiftingData = function (recvData, dataMap) {\r\n var lifting = recvData.lifting;\r\n if (lifting) {\r\n // console.log(\"lifting\",lifting);\r\n dataMap.set(\r\n STOCK_HISTORY_FIELD_NAME.LIFTING, {Lifting: lifting}\r\n );\r\n }\r\n }\r\n\r\n //业绩公告\r\n this.SetPforecastData = function (recvData, dataMap) {\r\n var pforecast = recvData.pforecast;\r\n if (pforecast) {\r\n // console.log(\"pforecast\", pforecast)\r\n dataMap.set(\r\n STOCK_HISTORY_FIELD_NAME.PFORECAST,\r\n {\r\n Lowprofit: pforecast[0].lowprofit,////最低利润\r\n Highprofit: pforecast[0].highprofit, //最高利润\r\n Lowchange: pforecast[0].lowchange, //最小变动幅度\r\n Highchange: pforecast[0].highchange, //最小变动幅度\r\n Reportdate: pforecast[0].reportdate, //报告期\r\n }\r\n );\r\n }\r\n }\r\n\r\n //空头指标\r\n this.SetShortIndicatorsData = function (recvData, dataMap) {\r\n // console.log(\"recvData,dataMap\", recvData, dataMap);\r\n var policy = recvData.policy;\r\n if (policy) {\r\n const targetedList = ['三只乌鸦', '乌云盖顶', '黄昏之星', '巨量阴线', '头肩顶', '射击之星', '倾盆大雨', '断头铡刀', '淡友反攻', '空方炮', '连续1周空头排列'];\r\n let targetedCount = 0, timeList = [], latestTime = 0, latestName = '';\r\n // console.table(policy); //policy\r\n policy.forEach(e => {\r\n let isTarget = targetedList.some(c => c === e.name);\r\n if (isTarget) {\r\n targetedCount++;\r\n timeList.push(e.time);\r\n }\r\n });\r\n if(!targetedCount){\r\n latestName = '';\r\n }else {\r\n latestTime = Math.max.apply(timeList, timeList);\r\n latestName = policy.find(e => e.time === latestTime).name;\r\n }\r\n console.log(latestName,targetedCount, \"latestName-targetedCount\");\r\n dataMap.set(\r\n STOCK_HISTORY_FIELD_NAME.SHORTIND_ICATORS,\r\n {\r\n latestIndicatorName: latestName,///最新指标名称\r\n indicatorCount: targetedCount, //最新指标数量\r\n }\r\n );\r\n }\r\n }\r\n\r\n this.RecvError = function (request, condition) {\r\n\r\n }\r\n\r\n this.CreateCondition = function (name) {\r\n return new QueryCondition(name);\r\n }\r\n}\r\n\r\n\r\n//初始化\r\nJSStock.Init=function()\r\n{\r\n var stock=new JSStock();\r\n return stock;\r\n}\r\n\r\nJSStock.SetDomain = function (domain, cacheDomain) \r\n{\r\n if (domain) g_JSStockResource.Domain = domain;\r\n if (cacheDomain) g_JSStockResource.CacheDomain = cacheDomain;\r\n }\r\n\r\n//获取股票搜索类\r\nJSStock.GetSearchStock=function(callback)\r\n{\r\n return new SearchStock(callback);\r\n}\r\n\r\n//短线精灵\r\nJSStock.GetShortTerm = function (symbol) \r\n{\r\n return new ShortTerm(symbol);\r\n}\r\n\r\n//每天的分笔数据\r\nJSStock.GetDealDay=function(symbol)\r\n{\r\n return new DealDay(symbol);\r\n}\r\n\r\n//板块成员\r\nJSStock.GetBlockMember = function (symbol) \r\n{\r\n return new BlockMember(symbol);\r\n}\r\nJSStock.GetBlockTop = function () {\r\n return new BlockTop();\r\n}\r\n\r\n//走势图图片路径\r\nJSStock.GetMinuteImage=function(symbol)\r\n{\r\n return new MinuteImage(symbol);\r\n}\r\n\r\n//获取历史日线收盘数据\r\nJSStock.GetHistoryDayData=function(symbol)\r\n{\r\n return new HistoryDayData(symbol);\r\n}\r\n\r\nJSStock.GetDealPriceListData=function(symbol)\r\n{\r\n return new DealPriceListData(symbol);\r\n}\r\n\r\nJSStock.GetLatestDetailData=function(symbol)\r\n{\r\n return new LatestDetailData(symbol);\r\n}\r\n\r\n//分析板块请求数据\r\nJSStock.GetAnalylisPlate = function () {\r\n return new AnalylisPlate();\r\n}\r\n\r\n//获取历史数据\r\nJSStock.GetStockHistory = function () {\r\n return new JSStockHistory();\r\n}\r\n\r\nvar RECV_DATA_TYPE=\r\n{\r\n BASE_DATA:1, //股票行情基础数据\r\n INDEX_BASE_DATA:2, //指数行情基础数据(包含 涨跌家数)\r\n HEAT_DATA:3, //热度数据\r\n SORT_DATA:4, //排序数据\r\n BUY_SELL_DATA:5, //买卖盘数据\r\n DEAL_DATA:6, //分笔数据\r\n DERIVATIVE_DATA:7, //实时衍生数据\r\n FINANCE_DATA:8, //财务数据\r\n SEARCH_STOCK_DATA:9,//股票搜索\r\n\r\n SELF_STOCK_DATA:10, //自选股数据\r\n LOGON_DATA:11, //登陆信息\r\n BLOCK_MEMBER_DATA: 13, //板块成员\r\n SHORT_TERM_DATA:14, //短线精灵\r\n\tCOMPANY_DATA: 15, //个股资料\r\n PLATE_DATA: 16, //板块(行业 概念 地区)\r\n CAPITAL_DATA:17, //股本\r\n\r\n \r\n\r\n //资金流\r\n CAPITAL_FLOW_DAY_DATA:23,\r\n CAPITAL_FLOW_DAY3_DATA:24,\r\n CAPITAL_FLOW_DAY5_DATA:25,\r\n CAPITAL_FLOW_DAY10_DATA:26,\r\n\r\n //DDE\r\n DDE_DAY_DATA:27,\r\n DDE_DAY3_DATA:28,\r\n DDE_DAY5_DATA:29,\r\n DDE_DAY10_DATA:30,\r\n\r\n DEAL_DAY_DATA:105, //分笔数据\r\n EVENT_DATA:106, //事件 属性数据\r\n IMAGE_MINUTE_DATA:107, //走势图图片\r\n HISTORY_DAY_DATA:108, //历史日线收盘数据\r\n DEAL_PRICE_LIST_DATA:109, //分价表数据\r\n LATEST_DETAIL_DATA:110 //最新分笔数据\r\n}\r\n\r\nfunction JSStock()\r\n{\r\n this.MapStock=new Map(); //key=symbol, value=StockData\r\n this.MapTagCallback=new Map(); //callback(tagID,arySymbol(更新的股票代码),dataType,this)\r\n this.RequestVersion=new Array([100,100,100]);\r\n\r\n this.RealtimeApiUrl=g_JSStockResource.Domain+\"/API/Stock\";\r\n this.PlateQuadrantApiUrl=g_JSStockResource.Domain+\"/API/StockPlateQuadrant\"; //热度api\r\n\r\n this.IsAutoUpdate=true;\r\n this.AutoUpateTimeout=15000; //更新频率\r\n this.Timeout;\r\n\r\n this.NetworkFilter; //网络过滤接口 function(data, callback)\r\n\r\n this.GetStockRead=function(tagID,callback)\r\n {\r\n for(var item of this.MapStock)\r\n {\r\n item[1].RemoveTagID(tagID);\r\n }\r\n\r\n this.MapTagCallback.set(tagID,callback);\r\n\r\n var read=new StockRead(this,tagID);\r\n return read;\r\n }\r\n\r\n //取消某一个控件订阅的股票推送\r\n this.Unsubscribe=function(tagID)\r\n {\r\n for(var item of this.MapStock)\r\n {\r\n item[1].RemoveTagID(tagID);\r\n }\r\n }\r\n\r\n //取消单个股票上的所有控件订阅\r\n this.UnsubscribeStock=function(symbol,tagID)\r\n {\r\n for(var item of this.MapStock)\r\n {\r\n if (item[0]===symbol)\r\n {\r\n if (tagID) item[1].RemoveTagID(tagID);\r\n else item[1].ClearTagID();\r\n\r\n console.log(`[JSStock::UnsubscribeStock] symbol=${symbol}, tagID=${tagID}`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n //获取一个股票\r\n this.Get=function(symbol,tagID)\r\n {\r\n if (!this.MapStock.has(symbol))\r\n {\r\n this.MapStock.set(symbol,new StockData(symbol));\r\n }\r\n\r\n var data=this.MapStock.get(symbol);\r\n if (tagID) data.AttachTagID(tagID);\r\n return data;\r\n }\r\n\r\n \r\n this.RequestData=function()\r\n {\r\n this.ClearTimer();\r\n \r\n var arySymbol=new Array(); //股票\r\n var aryIndex=new Array(); //指数\r\n var aryHeat=new Array(); //热度\r\n var aryBuySell=new Array(); //5当买卖盘\r\n var aryDeal=new Array(); //分笔\r\n var aryDerivative=new Array(); //实时衍生数据\r\n var aryFinance=new Array(); //财务数据\r\n var aryFlow = [], aryFlow3 = [], aryFlow5 = [], aryFlow10=[];\r\n var aryDDE=[], aryDDE3=[], aryDDE5=[], aryDDE10=[];\r\n var aryEvent = new Array();\r\n\t\tvar aryCompany = new Array(); //个股资料\r\n var aryPlate = new Array(); //板块(行业 概念 地址)\r\n var aryCapital=new Array();\r\n\r\n\r\n for(var item of this.MapStock)\r\n {\r\n var subscribe=item[1]; //订阅数据\r\n var symbol=item[0];\r\n\r\n //基础数据\r\n if (subscribe.BaseDataTagID.size>0) \r\n {\r\n if (IsIndexSymbol(symbol)) aryIndex.push(symbol);\r\n else arySymbol.push(symbol);\r\n }\r\n\r\n if (subscribe.BuySellTagID.size>0) aryBuySell.push(symbol);\r\n\r\n if (subscribe.CapitalFlowDayID.size > 0) aryFlow.push(symbol);\r\n if (subscribe.CapitalFlowDay3ID.size > 0) aryFlow3.push(symbol);\r\n if (subscribe.CapitalFlowDay5ID.size > 0) aryFlow5.push(symbol);\r\n if (subscribe.CapitalFlowDay10ID.size > 0) aryFlow10.push(symbol);\r\n\r\n if (subscribe.DDEID.size > 0) aryDDE.push(symbol);\r\n if (subscribe.DDE3ID.size > 0) aryDDE3.push(symbol);\r\n if (subscribe.DDE5ID.size > 0) aryDDE5.push(symbol);\r\n if (subscribe.DDE10ID.size > 0) aryDDE10.push(symbol);\r\n\r\n if (subscribe.HeatTagID.size>0) aryHeat.push(symbol)\r\n if (subscribe.DealTagID.size>0) aryDeal.push(symbol);\r\n if (subscribe.DerivativeTagID.size>0) aryDerivative.push(symbol);\r\n if (subscribe.FinanceTagID.size>0) aryFinance.push(symbol);\r\n if (subscribe.CapitalTagID.size>0) aryCapital.push(symbol);\r\n\r\n if (subscribe.Event == null && subscribe.EventTagID.size > 0) aryEvent.push(symbol);\r\n\t\t\tif (subscribe.Company == null && subscribe.CompanyTagID.size > 0) aryCompany.push(symbol);\r\n if (item[1].Plate == null && item[1].PlateTagID.size > 0) aryPlate.push(item[0]);\r\n }\r\n\r\n if (aryBuySell.length>0) this.RequestBuySellData(aryBuySell);\r\n if (arySymbol.length>0) this.RequestBaseData(arySymbol);\r\n if (aryIndex.length>0) this.RequestIndexBaseData(aryIndex);\r\n if (aryHeat.length>0) this.RequestIndexHeatData(aryHeat);\r\n if (aryDeal.length>0) this.RequestDealData(aryDeal);\r\n if (aryDerivative.length>0) this.RequestDerivativeData(aryDerivative);\r\n if (aryFinance.length>0) this.RequestFinanceData(aryFinance);\r\n if (aryCapital.length>0) this.RequestCapitalData(aryCapital);\r\n\r\n //资金流\r\n if (aryFlow.length > 0) this.RequestSubDocumentData(aryFlow, 'flowday');\r\n if (aryFlow3.length > 0) this.RequestSubDocumentData(aryFlow3, 'flowday3');\r\n if (aryFlow5.length > 0) this.RequestSubDocumentData(aryFlow5, 'flowday5');\r\n if (aryFlow10.length > 0) this.RequestSubDocumentData(aryFlow10, 'flowday10');\r\n if (aryDDE.length > 0) this.RequestSubDocumentData(aryDDE, 'dde');\r\n if (aryDDE3.length > 0) this.RequestSubDocumentData(aryDDE3, 'dde3');\r\n if (aryDDE5.length > 0) this.RequestSubDocumentData(aryDDE5, 'dde5');\r\n if (aryDDE10.length > 0) this.RequestSubDocumentData(aryDDE10, 'dde10');\r\n \r\n //属性|事件\r\n if (aryEvent.length > 0) this.RequestEventData(aryEvent);\r\n\r\n\t\t//个股资料\r\n if (aryCompany.length > 0) this.RequestCompanyData(aryCompany);\r\n if (aryPlate.length > 0) this.RequestPlateData(aryPlate);\r\n this.ReqeustAllSortData(); //成分排序\r\n }\r\n\r\n this.ReqeustData=this.RequestData; //老的接口名字写错了\r\n\r\n //请求基础数据\r\n this.RequestBaseData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field= [\"name\",\"symbol\",\"yclose\",\"open\",\"price\",\"high\",\"low\",\"vol\",\r\n \"amount\",\"date\",\"time\",\"week\",\"increase\",\"exchangerate\",\"amplitude\",\"volratio\"];\r\n\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestBaseData', //类名::方法\r\n Explain:'股票基础数据',\r\n ID:RECV_DATA_TYPE.BASE_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.BASE_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\": field,\"symbol\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.BASE_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.BASE_DATA);\r\n }\r\n });\r\n }\r\n\r\n //请求实时衍生数据\r\n this.RequestDerivativeData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field= [\"name\",\"symbol\",\"marketvalue\",\"flowmarketvalue\",\"pe\",\"pe2\",\"pe3\",\"pb\",\"bookrate\",\"bookdiffer\"];\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestDerivativeData', //类名::方法\r\n Explain:'实时衍生数据',\r\n ID:RECV_DATA_TYPE.DERIVATIVE_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.DERIVATIVE_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\":field,\"symbol\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.DERIVATIVE_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.DERIVATIVE_DATA);\r\n }\r\n });\r\n }\r\n\r\n //请求财务数据\r\n this.RequestFinanceData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field= [\"name\",\"symbol\",\"roe\",\"finance\"];\r\n\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestFinanceData', //类名::方法\r\n Explain:'财务数据',\r\n ID:RECV_DATA_TYPE.FINANCE_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.FINANCE_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\": field,\"symbol\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.FINANCE_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.FINANCE_DATA);\r\n }\r\n });\r\n }\r\n\r\n //请求股本\r\n this.RequestCapitalData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field= [\"name\",\"symbol\",\"capital\"];\r\n\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestCapitalData', //类名::方法\r\n Explain:'股本数据',\r\n ID:RECV_DATA_TYPE.CAPITAL_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.CAPITAL_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\": field,\"symbol\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.CAPITAL_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.CAPITAL_DATA);\r\n }\r\n });\r\n }\r\n \r\n\r\n //请求买卖盘\r\n this.RequestBuySellData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field=[\"name\",\"symbol\",\"yclose\",\"open\",\"price\",\"high\",\"low\",\"vol\",\"amount\",\r\n \"date\",\"time\",\"week\",\"increase\",\"buy\",\"sell\",\"exchangerate\",\"amplitude\"];\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestBuySellData', //类名::方法\r\n Explain:'买卖盘数据',\r\n ID:RECV_DATA_TYPE.BUY_SELL_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.BUY_SELL_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\": field,\"symbol\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.BUY_SELL_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.BUY_SELL_DATA);\r\n }\r\n });\r\n }\r\n\r\n //请求分笔\r\n this.RequestDealData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field=[\"name\",\"symbol\",\"price\",\"high\",\"low\",\"vol\",\"amount\",\"date\",\"time\",\"increase\",\"deal\"];\r\n\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestDealData', //类名::方法\r\n Explain:'分笔数据',\r\n ID:RECV_DATA_TYPE.DEAL_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.DEAL_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\": field, \"symbol\": arySymbol\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.DEAL_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.DEAL_DATA);\r\n }\r\n });\r\n }\r\n\r\n //指数基础数据(包含上涨下跌家数)\r\n this.RequestIndexBaseData=function(arySymbol)\r\n {\r\n var self=this;\r\n var field= [\"name\", \"symbol\", \"yclose\", \"open\",\"price\",\"high\",\"low\",\"vol\",\"amount\",\"date\",\"time\",\"week\",\"indextop\",\"increase\"];\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestIndexBaseData', //类名::方法\r\n Explain:'指数基础数据(包含上涨下跌家数)',\r\n ID:RECV_DATA_TYPE.INDEX_BASE_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:field, symbol:arySymbol }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.INDEX_BASE_DATA);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\":field,\"symbol\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n console.log(data)\r\n self.RecvData(data,RECV_DATA_TYPE.INDEX_BASE_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.INDEX_BASE_DATA);\r\n }\r\n });\r\n }\r\n\r\n //热度\r\n this.RequestIndexHeatData=function(arySymbol)\r\n {\r\n var self=this;\r\n \r\n $.ajax({\r\n url: this.PlateQuadrantApiUrl,\r\n data:\r\n {\r\n \"plate\": arySymbol,\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.HEAT_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.HEAT_DATA);\r\n }\r\n });\r\n }\r\n\r\n //排序\r\n this.ReqeustAllSortData=function()\r\n {\r\n var arySort=new Array();\r\n for(var item of this.MapStock)\r\n {\r\n if (!IsIndexSymbol(item[0])) continue;\r\n if (item[1].Sort==null || item[1].Sort.size<=0) continue;\r\n\r\n for(var sortItem of item[1].Sort)\r\n {\r\n var sortData=sortItem[1];\r\n var data={ \"Plate\":item[0], \"SortField\":sortData.SortField, \"Order\":sortData.Order, \"TagID\":sortData.TagID };\r\n arySort.push(data);\r\n }\r\n }\r\n \r\n for(var i in arySort)\r\n {\r\n var sortItem=arySort[i];\r\n this.ReqeustSortData(sortItem);\r\n }\r\n }\r\n\r\n this.ReqeustSortData=function(sortItem)\r\n {\r\n var self=this;\r\n var sortData=sortItem;\r\n var sortFiled=\"\";\r\n\r\n //字段id 转换成字段名字\r\n switch(sortData.SortField)\r\n {\r\n case STOCK_FIELD_NAME.INCREASE:\r\n sortFiled='increase';\r\n break;\r\n case STOCK_FIELD_NAME.PRICE:\r\n sortFiled='price';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n var field= [\"name\",\"symbol\",\"yclose\",\"open\",\"price\",\"high\",\"low\",\"vol\",\"amount\",\"date\",\"time\", \"week\", \"increase\", \"exchangerate\"];\r\n\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::ReqeustSortData', //类名::方法\r\n Explain:'板块排序数据',\r\n ID:RECV_DATA_TYPE.SORT_DATA,\r\n Request:{ Url:self.RealtimeApiUrl, \r\n Data:{ field:field, plate: [sortItem.Plate] , orderfield:sortFiled, order:sortItem.Order,ordernull:1, filterstop:1 }, \r\n Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data,RECV_DATA_TYPE.SORT_DATA,sortData);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data:\r\n {\r\n \"field\":field,\r\n \"plate\": [sortItem.Plate],\r\n \"orderfield\":sortFiled,\r\n \"order\":sortItem.Order,\r\n \"ordernull\":1, //过滤null字段\r\n \"filterstop\":1 //过滤掉停牌数据\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvData(data,RECV_DATA_TYPE.SORT_DATA,sortData);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.SORT_DATA,sortData);\r\n }\r\n });\r\n }\r\n\r\n //资金流\r\n this.RequestSubDocumentData = function (arySymbol, id)\r\n {\r\n var self = this;\r\n const mapDay = new Map([\r\n ['flowday', { Field: 'flowday', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA}],\r\n ['flowday3', { Field: 'flowday3', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA }],\r\n ['flowday5', { Field: 'flowday5', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA }],\r\n ['flowday10', { Field: 'flowday10', RecvID: RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA }],\r\n ['dde', { Field: 'dde', RecvID: RECV_DATA_TYPE.DDE_DAY_DATA }],\r\n ['dde3', { Field: 'dde3', RecvID: RECV_DATA_TYPE.DDE_DAY3_DATA }],\r\n ['dde5', { Field: 'dde5', RecvID: RECV_DATA_TYPE.DDE_DAY5_DATA }],\r\n ['dde10', { Field: 'dde10', RecvID: RECV_DATA_TYPE.DDE_DAY10_DATA }],\r\n ]);\r\n\r\n if (!mapDay.has(id)) return;\r\n var value = mapDay.get(id);\r\n\r\n if (this.NetworkFilter)\r\n {\r\n var obj=\r\n {\r\n Name:'JSStock::RequestSubDocumentData', //类名::方法\r\n Explain:'子文档数据',\r\n ID:value.RecvID,\r\n Request:{ Url:self.RealtimeApiUrl, Data:{ field:[\"symbol\",value.Field], symbol:arySymbol, start:0, end:50 }, Type:'POST' }, \r\n Self:this,\r\n PreventDefault:false\r\n };\r\n this.NetworkFilter(obj, function(data) \r\n { \r\n self.RecvData(data, value.RecvID);\r\n });\r\n\r\n if (obj.PreventDefault==true) return; //已被上层替换,不调用默认的网络请求\r\n }\r\n\r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data: {\r\n \"field\": [\r\n \"symbol\",\r\n value.Field,\r\n ],\r\n \"symbol\": arySymbol,\r\n \"start\": 0,\r\n \"end\": 50\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n success: function (data) {\r\n self.RecvData(data, value.RecvID);\r\n },\r\n error: function (request) {\r\n self.RecvError(request, value.RecvID);\r\n }\r\n });\r\n }\r\n\r\n this.RequestEventData = function (arySymbol) {\r\n var self = this;\r\n\r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data: \r\n {\r\n \"field\": \r\n [\r\n \"symbol\",\r\n \"events.margin\",\"events.shhk\",\"events.hk\",\"events.st\",'events.hksymbol','events.hkname',\"events.szhk\"\r\n ],\r\n \"symbol\": arySymbol,\r\n \"start\": 0,\r\n \"end\": 50\r\n },\r\n type: 'POST',\r\n dataType: \"json\",\r\n success: function (data) {\r\n self.RecvData(data, RECV_DATA_TYPE.EVENT_DATA);\r\n },\r\n error: function (request) {\r\n self.RecvError(request, RECV_DATA_TYPE.EVENT_DATA);\r\n }\r\n });\r\n }\r\n\r\n\t//个股资料\r\n this.RequestCompanyData = function (arySymbol) {\r\n var self = this;\r\n \r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data: \r\n {\r\n \"field\": [\r\n \"name\",\r\n \"symbol\",\r\n \"company\",\r\n ],\r\n \"symbol\": arySymbol,\r\n \"start\": 0,\r\n \"end\": 50\r\n },\r\n type: 'POST',\r\n dataType: \"json\",\r\n success: function (data) {\r\n self.RecvData(data, RECV_DATA_TYPE.COMPANY_DATA);\r\n },\r\n error: function (request) {\r\n self.RecvError(request, RECV_DATA_TYPE.COMPANY_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RequestPlateData = function (arySymbol) {\r\n var self = this;\r\n\r\n $.ajax({\r\n url: this.RealtimeApiUrl,\r\n data: {\r\n \"field\": [\r\n \"name\",\r\n \"symbol\",\r\n \"industry\",\r\n \"region\",\r\n \"concept\",\r\n ],\r\n \"symbol\": arySymbol,\r\n \"start\": 0,\r\n \"end\": 50\r\n },\r\n type: 'POST',\r\n dataType: \"json\",\r\n success: function (data) {\r\n self.RecvData(data, RECV_DATA_TYPE.PLATE_DATA);\r\n },\r\n error: function (request) {\r\n self.RecvError(request, RECV_DATA_TYPE.PLATE_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvError=function(request,datatype,requestData)\r\n {\r\n console.log(\"RecvError: datatype=\"+ datatype.toString());\r\n console.log(request);\r\n\r\n var self=this;\r\n if (this.Timeout) clearTimeout(this.Timeout); //清空定时器\r\n this.Timeout=setTimeout(function() { self.ReqeustData();},this.AutoUpateTimeout*2);\r\n }\r\n\r\n this.RecvData=function(data,datatype,requestData)\r\n {\r\n var mapTagData; //key=界面元素id, value=更新的股票列表\r\n \r\n switch(datatype)\r\n {\r\n case RECV_DATA_TYPE.BASE_DATA:\r\n case RECV_DATA_TYPE.INDEX_BASE_DATA:\r\n mapTagData=this.RecvBaseData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.HEAT_DATA:\r\n mapTagData=this.RecvHeatData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.SORT_DATA:\r\n mapTagData=this.RecvSortData(data,datatype,requestData);\r\n break;\r\n case RECV_DATA_TYPE.BUY_SELL_DATA:\r\n mapTagData=this.RecvBuySellData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.DEAL_DATA:\r\n mapTagData=this.RecvDealData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.DERIVATIVE_DATA:\r\n mapTagData=this.RecvDerivativeData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.FINANCE_DATA:\r\n mapTagData=this.RecvFinanceData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_DATA:\r\n mapTagData=this.RecvCapitalData(data,datatype);\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA:\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA:\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA:\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA:\r\n case RECV_DATA_TYPE.DDE_DAY_DATA:\r\n case RECV_DATA_TYPE.DDE_DAY3_DATA:\r\n case RECV_DATA_TYPE.DDE_DAY5_DATA:\r\n case RECV_DATA_TYPE.DDE_DAY10_DATA:\r\n mapTagData = this.RecvSubDocumentData(data, datatype);\r\n break;\r\n case RECV_DATA_TYPE.EVENT_DATA:\r\n mapTagData = this.RecvEventData(data, datatype);\r\n break;\r\n\t\t\tcase RECV_DATA_TYPE.COMPANY_DATA:\r\n mapTagData = this.RecvCompanyData(data, datatype);\r\n break;\r\n case RECV_DATA_TYPE.PLATE_DATA:\r\n mapTagData = this.RecvPlateData(data, datatype);\r\n break;\r\n }\r\n\r\n for(var value of mapTagData)\r\n {\r\n if (!this.MapTagCallback.has(value[0])) continue;\r\n\r\n this.MapTagCallback.get(value[0])(value[0],value[1],datatype,this);\r\n }\r\n\r\n this.AutoUpdate();\r\n }\r\n\r\n this.ClearTimer=function()\r\n {\r\n if (this.Timeout) \r\n {\r\n clearTimeout(this.Timeout); //清空定时器\r\n this.Timeout=null;\r\n }\r\n }\r\n\r\n this.AutoUpdate=function()\r\n {\r\n this.ClearTimer();\r\n if (!this.IsAutoUpdate) return;\r\n\r\n var self=this;\r\n var isBeforOpen=false;\r\n for(var item of this.MapStock) //只要有1个股票在盘中 就请求数据\r\n {\r\n var status=STOCK_MARKET.GetMarketStatus(item[0]);\r\n if (status==2) //盘中\r\n {\r\n this.Timeout=setTimeout( function() { self.ReqeustData(); },this.AutoUpateTimeout );\r\n return;\r\n }\r\n else if (status==1) //盘前\r\n {\r\n isBeforOpen=true;\r\n }\r\n } \r\n\r\n //盘前\r\n if (isBeforOpen) this.Timeout=setTimeout( function() { self.AutoUpdate(); },this.AutoUpateTimeout );\r\n }\r\n\r\n this.RecvBaseData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item =data.stock[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n switch(datatype)\r\n {\r\n case RECV_DATA_TYPE.BASE_DATA:\r\n stockData.SetBaseData(item);\r\n break;\r\n case RECV_DATA_TYPE.INDEX_BASE_DATA:\r\n stockData.SetIndexBaseData(item);\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n if (stockData.TagID.size>0) \r\n {\r\n for(var id of stockData.TagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvBuySellData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item =data.stock[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetBuySellData(item);\r\n\r\n if (stockData.TagID.size>0) \r\n {\r\n for(var id of stockData.TagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n\r\n if (stockData.BuySellTagID.size>0)\r\n {\r\n for(var id of stockData.BuySellTagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvDerivativeData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item =data.stock[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetDerivativeData(item);\r\n\r\n if (stockData.DerivativeTagID.size>0) \r\n {\r\n for(var id of stockData.DerivativeTagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvFinanceData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item =data.stock[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetFinanceData(item);\r\n\r\n if (stockData.FinanceTagID.size>0) \r\n {\r\n for(var id of stockData.FinanceTagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvCapitalData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item =data.stock[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetCapitalData(item);\r\n\r\n if (stockData.CapitalTagID.size>0) \r\n {\r\n for(var id of stockData.CapitalTagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n\r\n \r\n\r\n this.RecvDealData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item =data.stock[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetDealData(item);\r\n\r\n if (stockData.DealTagID.size>0) \r\n {\r\n for(var id of stockData.DealTagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvHeatData=function(data,datatype)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.data)\r\n {\r\n var item = data.data[i];\r\n var stockData=this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n \r\n stockData.SetHeatData(item);\r\n\r\n if (stockData.HeatTagID.size>0) \r\n {\r\n for(var id of stockData.HeatTagID)\r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvSortData=function(data,datatype,sortItem)\r\n {\r\n var mapTagData=new Map(); //key=界面元素id, value=更新的股票列表\r\n var arySymbol=new Array();\r\n var stockData=this.MapStock.get(sortItem.Plate);\r\n\r\n for(var i in data.stock)\r\n {\r\n var item=data.stock[i];\r\n arySymbol.push(item.symbol);\r\n\r\n if (this.MapStock.has(item.symbol))\r\n {\r\n var itemData=this.MapStock.get(item.symbol);\r\n itemData.SetBaseData(item);\r\n }\r\n else\r\n {\r\n var itemData=new StockData(item.symbol);\r\n itemData.SetBaseData(item);\r\n this.MapStock.set(item.symbol,itemData);\r\n }\r\n }\r\n\r\n var key=sortItem.SortField.toString()+'-'+sortItem.Order.toString();\r\n if (!stockData.Sort.has(key)) return mapTagData;\r\n\r\n var sortData=stockData.Sort.get(key);\r\n sortData.arySymbol=arySymbol;\r\n\r\n for(var item of sortItem.TagID)\r\n {\r\n mapTagData.set(item,new Array([stockData.Symbol]));\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvSubDocumentData = function(data, datatype)\r\n {\r\n var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表\r\n for(var i in data.stock)\r\n {\r\n var item = data.stock[i];\r\n var stockData = this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n var keyData=null;\r\n switch (datatype)\r\n {\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY_DATA:\r\n stockData.SetCapitalFlowDayData(item.flowday, datatype);\r\n keyData = stockData.CapitalFlowDayID;\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY3_DATA:\r\n stockData.SetCapitalFlowDayData(item.flowday3, datatype);\r\n keyData = stockData.CapitalFlowDay3ID;\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY5_DATA:\r\n stockData.SetCapitalFlowDayData(item.flowday5, datatype);\r\n keyData = stockData.CapitalFlowDay5ID;\r\n break;\r\n case RECV_DATA_TYPE.CAPITAL_FLOW_DAY10_DATA:\r\n stockData.SetCapitalFlowDayData(item.flowday10, datatype);\r\n keyData = stockData.CapitalFlowDay10ID;\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY_DATA:\r\n stockData.SetDDE(item.dde, datatype);\r\n keyData = stockData.DDEID;\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY3_DATA:\r\n stockData.SetDDE(item.dde3, datatype);\r\n keyData = stockData.DDE3ID;\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY5_DATA:\r\n stockData.SetDDE(item.dde5, datatype);\r\n keyData = stockData.DDE5ID;\r\n break;\r\n case RECV_DATA_TYPE.DDE_DAY10_DATA:\r\n stockData.SetDDE(item.dde10, datatype);\r\n keyData = stockData.DDE10ID;\r\n break;\r\n }\r\n\r\n if (keyData && keyData.size>0) \r\n {\r\n for (var id of keyData) \r\n {\r\n if (mapTagData.has(id)) \r\n {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else \r\n {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvEventData = function (data, datatype) \r\n {\r\n var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表\r\n\r\n for (var i in data.stock) \r\n {\r\n var item = data.stock[i];\r\n var stockData = this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetEventData(item);\r\n if (stockData.EventTagID.size > 0) \r\n {\r\n for (var id of stockData.EventTagID) \r\n {\r\n if (mapTagData.has(id)) mapTagData.get(id).push(stockData.Symbol);\r\n else mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n\tthis.RecvCompanyData = function (data, datatype) {\r\n var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表\r\n for (var i in data.stock) {\r\n var item = data.stock[i];\r\n var stockData = this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetCompanyData(item);\r\n\r\n if (stockData.CompanyTagID.size > 0) {\r\n for (var id of stockData.CompanyTagID) {\r\n if (mapTagData.has(id)) {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n\r\n this.RecvPlateData = function (data, datatype) {\r\n var mapTagData = new Map(); //key=界面元素id, value=更新的股票列表\r\n for (var i in data.stock) {\r\n var item = data.stock[i];\r\n var stockData = this.MapStock.get(item.symbol);\r\n if (!stockData) continue;\r\n\r\n stockData.SetPlateData(item);\r\n\r\n if (stockData.PlateTagID.size > 0) {\r\n for (var id of stockData.PlateTagID) {\r\n if (mapTagData.has(id)) {\r\n mapTagData.get(id).push(stockData.Symbol);\r\n }\r\n else {\r\n mapTagData.set(id, new Array(stockData.Symbol));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return mapTagData;\r\n }\r\n \r\n}\r\n\r\n//股票搜索返回数据\r\nfunction SearchStock(callback)\r\n{\r\n this.SearchStockApiUrl=g_JSStockResource.Domain+\"/API/StockSpell\";\r\n this.UpdateUICallback=callback;\r\n this.PageSize=50; //一页几个数据\r\n\r\n this.Count; //一共的个数\r\n this.EndOffset; //当前缓存数据的最后一个位移\r\n\r\n this.Data=new Array();\r\n this.SearchString=\"\";\r\n this.SearchType=0;\r\n\r\n this.Search=function(input,type)\r\n {\r\n if (this.SearchString==input && this.SearchType==type)\r\n {\r\n if (typeof(this.UpdateUICallback)=='function') this.UpdateUICallback(this);\r\n }\r\n else\r\n {\r\n this.SearchString=input;\r\n this.SearchType=type;\r\n this.Count=0;\r\n this.EndOffset=0;\r\n this.Data=[];\r\n var end=this.PageSize-1;\r\n this.ReqeustSearchStock(this.SearchString,this.SearchType,this.EndOffset,end);\r\n }\r\n }\r\n\r\n this.IsEndPage=function()\r\n {\r\n if (this.Count<=0) return true;\r\n\r\n return this.EndOffset>this.Count-1;\r\n }\r\n\r\n this.NextPage=function()\r\n {\r\n if (this.EndOffset+1>this.Count) return;\r\n\r\n var end=this.EndOffset+this.PageSize;\r\n this.ReqeustSearchStock(this.SearchString,this.SearchType,this.EndOffset,end);\r\n }\r\n\r\n ///////////////////////////////////////////////////////////////////////\r\n //查询股票\r\n this.ReqeustSearchStock=function(input,type,start,end)\r\n {\r\n var self=this;\r\n\r\n $.ajax({\r\n url: this.SearchStockApiUrl,\r\n data:\r\n {\r\n \"input\":input,\r\n \"start\":start,\r\n \"end\":end,\r\n 'type':type\r\n },\r\n type:\"post\",\r\n dataType: \"json\",\r\n async:true,\r\n success: function (data)\r\n {\r\n self.RecvSearchStockData(data,RECV_DATA_TYPE.SEARCH_STOCK_DATA);\r\n },\r\n error:function(request)\r\n {\r\n self.RecvError(request,RECV_DATA_TYPE.SEARCH_STOCK_DATA);\r\n }\r\n });\r\n \r\n }\r\n\r\n this.RecvSearchStockData=function(data)\r\n {\r\n for(var i in data.stock)\r\n {\r\n var item=data.stock[i];\r\n this.Data.push({\"Name\":item.name,\"Symbol\":item.symbol,\"Type\":item.type});\r\n }\r\n\r\n if (data.count==0)\r\n {\r\n this.Count=0;\r\n this.EndOffset=0;\r\n }\r\n else\r\n {\r\n if (this.Count==0) this.Count=data.count;\r\n\r\n this.EndOffset=data.end;\r\n if (this.Count>0 && this.EndOffset>this.Count) this.EndOffset=this.Count-1;\r\n }\r\n\r\n if (typeof(this.UpdateUICallback)=='function') this.UpdateUICallback(this);\r\n\r\n }\r\n\r\n this.RecvError=function(request,type)\r\n {\r\n console.log(\"[SearchStock::RecvError] datatype=\"+ type.toString());\r\n console.log(request);\r\n\r\n if (typeof(this.UpdateUICallback)=='function') this.UpdateUICallback(this,\"error\");\r\n\r\n }\r\n}\r\n\r\n//数据基类\r\nfunction IStockData() \r\n{\r\n this.IsAutoUpdate = true; //是否自动更新\r\n this.AutoUpateTimeout = 5000; //更新频率\r\n this.Timeout; //定时器\r\n this.ApiUrl;\r\n this.Data; //数据\r\n this.Error; //错误信息\r\n this.UpdateUICallback; //回调函数\r\n\r\n this.RequestData = function () {\r\n\r\n }\r\n\r\n this.Stop = function () \r\n {\r\n // console.log(\"[IStockData::Stop] stop update.\")\r\n this.IsAutoUpdate = false;\r\n if (this.Timeout) clearTimeout(this.Timeout); //清空定时器\r\n }\r\n\r\n this.AutoUpate = function () \r\n {\r\n if (this.Timeout) clearTimeout(this.Timeout); //清空定时器\r\n\r\n if (!this.IsAutoUpdate) return;\r\n\r\n if (this.Timeout) clearTimeout(this.Timeout); //清空定时器\r\n if (!this.IsAutoUpdate) return;\r\n \r\n var self=this;\r\n if (this.Symbol)\r\n {\r\n var status=STOCK_MARKET.GetMarketStatus(this.Symbol);\r\n if (status==2) this.Timeout=setTimeout( function() { self.RequestData(); },this.AutoUpateTimeout );\r\n else if (status==1) this.Timeout=setTimeout( function() { self.AutoUpdate(); },this.AutoUpateTimeout );\r\n }\r\n else\r\n {\r\n //周日 周6 不更新, [9:30-3:30] 以外的时间不更新\r\n var self = this;\r\n let today = new Date();\r\n let time = today.getHours() * 100 + today.getMinutes();\r\n if (today.getDay() > 0 && today.getDay() < 6 && time >= 930 && time < 1530)\r\n this.Timeout = setTimeout(function () {\r\n self.RequestData();\r\n }, this.AutoUpateTimeout);\r\n }\r\n }\r\n\r\n this.InvokeUpdateUICallback=function()\r\n {\r\n if (this.UpdateUICallback) this.UpdateUICallback(this);\r\n }\r\n}\r\n\r\n//短线精灵 只获取最新数据\r\nfunction ShortTerm(symbol) \r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.Symbol = symbol; //数组\r\n this.ApiUrl = g_JSStockResource.Domain + \"/API/StockShortTerm\";\r\n this.Count = 20; //请求数据个数\r\n\r\n this.RequestData = function () \r\n {\r\n var self = this;\r\n let data={count:this.Count};\r\n if (this.Symbol) data.symbol=this.Symbol;\r\n\r\n $.ajax({\r\n url: this.ApiUrl,\r\n data: data,\r\n type:\"post\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.SHORT_TERM_DATA);\r\n },\r\n fail: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.SHORT_TERM_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (data, dataType) {\r\n\r\n this.Data = [];\r\n for (let i in data.shortterm) {\r\n let item = data.shortterm[i];\r\n this.Data.push({\r\n Date: item.date,\r\n Name: item.name,\r\n Symbol: item.symbol,\r\n Time: item.time,\r\n Content: item.content,\r\n TypeInfo: item.typeinfo,\r\n Type: item.type\r\n });\r\n }\r\n\r\n if (this.UpdateUICallback) this.UpdateUICallback(this);\r\n\r\n this.AutoUpate();\r\n }\r\n\r\n this.RecvError = function (request, dataType) {\r\n\r\n }\r\n}\r\n\r\n//每天历史的分笔数据 \r\nfunction DealDay(symbol)\r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.Symbol = symbol; //数组\r\n this.Date; //交易日期\r\n\r\n this.RequestData = function () \r\n {\r\n this.Data=null;\r\n this.Error=null;\r\n\r\n var self = this;\r\n var apiUrl=g_JSStockResource.CacheDomain + \"/cache/dealday/day/\"+ this.Date + '/'+this.Symbol+'.json';\r\n console.log('[DealDay::RequestData] cache url ',apiUrl)\r\n $.ajax({\r\n url: apiUrl,\r\n type:\"get\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.DEAL_DAY_DATA);\r\n },\r\n error: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.DEAL_DAY_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (data, dataType) \r\n {\r\n if (!data.day || !data.deal) \r\n {\r\n this.InvokeUpdateUICallback();\r\n return;\r\n }\r\n\r\n var amount=data.deal.amount;\r\n var price=data.deal.price;\r\n var time=data.deal.time;\r\n var vol=data.deal.vol;\r\n var flag=data.deal.flag;\r\n\r\n if (!flag || !vol || !time || !price || !amount) \r\n {\r\n this.InvokeUpdateUICallback();\r\n return;\r\n }\r\n\r\n var dealData=\r\n { \r\n Date:data.date, //日期\r\n Open:data.day.open, //开盘\r\n Close:data.day.price, //收盘\r\n YClose:data.day.yclose, //昨收\r\n Symbol:data.symbol,\r\n Name:data.name,\r\n Deal:[],\r\n PriceList:[] //分价表\r\n };\r\n\r\n var mapPrice=new Map(); //分价表 key=价格 value={Vol:成交量, Proportion:占比, Price:价格, BuyVol:买量, SellVol:买量, NoneVol:不明盘 }\r\n var totalVol=0; //一共的成交量\r\n var minCount=Math.min(time.length,vol.length,flag.length, price.length, amount.length);\r\n for (let i =0;i<minCount;++i) \r\n {\r\n let item={ Time:time[i], Vol:vol[i], Flag:'', Price:price[i], Amount:amount[i] }\r\n if (flag[i]===0) item.Flag='B';\r\n else if (flag[i]===1)item.Flag='S';\r\n\r\n if (item.Time>150000) item.Time=150000; //盘后数据都算在15:00\r\n\r\n dealData.Deal.push(item);\r\n var priceItem;\r\n if (mapPrice.has(item.Price))\r\n {\r\n priceItem=mapPrice.get(item.Price);\r\n priceItem.Vol+=item.Vol; //成交量累加\r\n }\r\n else\r\n {\r\n priceItem={Vol:item.Vol, Price:item.Price, BuyVol:0, SellVol:0, NoneVol:0 };\r\n mapPrice.set(item.Price, priceItem);\r\n }\r\n\r\n if (flag[i]===0) priceItem.BuyVol+=item.Vol;\r\n else if (flag[i]===1) priceItem.SellVol+=item.Vol;\r\n else priceItem.NoneVol+=item.Vol;\r\n\r\n totalVol+=item.Vol;\r\n }\r\n\r\n for(var item of mapPrice)\r\n {\r\n var itemData=item[1];\r\n if (totalVol>0) itemData.Proportion=itemData.Vol/totalVol;\r\n dealData.PriceList.push(itemData);\r\n }\r\n\r\n dealData.PriceList.sort(function(a,b){return b.Price-a.Price;}); //排序\r\n\r\n this.Data=dealData;\r\n\r\n this.InvokeUpdateUICallback();\r\n }\r\n\r\n this.RecvError = function (request, dataType) \r\n {\r\n console.log(`[DealDay::RecvError] status=${request.status} statusText=${request.statusText} responseText=${request.responseText}`);\r\n\r\n this.Error={Status:request.status, Message:request.responseText };\r\n this.InvokeUpdateUICallback();\r\n }\r\n}\r\n\r\n\r\n//板块成分 支持排序\r\nfunction BlockMember(symbol) \r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.ApiUrl = g_JSStockResource.Domain + \"/API/StockBlockMember\";\r\n this.PageSize = 10; //一页几个数据\r\n this.Start = 0; //取数据的起始位置\r\n this.OrderField; //排序字段\r\n this.Order; //排序方向 -1 /1\r\n this.Symbol = symbol;\r\n this.OrderNull = 0; //排序是否提出null字段\r\n\r\n this.Field = new Array(); //字段\r\n this.Data = new Array(); //数据\r\n\r\n this.PageInfo; //分页信息\r\n\r\n this.SetField = function (aryFiled) \r\n {\r\n this.Field = new Array();\r\n for (let i in aryFiled) \r\n {\r\n let item = aryFiled[i];\r\n let name = StockDataFieldName.GetFieldName(item);\r\n if (name == null) continue;\r\n\r\n this.Field.push(name);\r\n }\r\n // this.Field = aryFiled.length > 0 ? aryFiled : [];\r\n\r\n return this.Field.length > 0;\r\n }\r\n\r\n this.SetOrder = function (fieldID, order) \r\n {\r\n this.Order = null;\r\n this.OrderField = null;\r\n\r\n let name = StockDataFieldName.GetFieldName(fieldID);\r\n if (name == null) return false;\r\n\r\n this.OrderField = name;\r\n this.Order = order;\r\n return true;\r\n }\r\n\r\n this.RequestData = function () \r\n {\r\n this.Data = [];\r\n var self = this;\r\n\r\n $.ajax(\r\n {\r\n url: this.ApiUrl,\r\n data: {\r\n \"symbol\": this.Symbol,\r\n \"field\": this.Field,\r\n \"order\": this.Order,\r\n \"orderfield\": this.OrderField,\r\n \"start\": this.Start,\r\n \"end\": this.Start + this.PageSize,\r\n \"ordernull\": this.OrderNull\r\n },\r\n type:\"post\",\r\n dataType: 'json',\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.BLOCK_MEMBER_DATA);\r\n },\r\n error: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.BLOCK_MEMBER_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (data, dataType) \r\n {\r\n for (let i in data.stock) {\r\n let item = data.stock[i];\r\n if (item.symbol == null) continue;\r\n\r\n var stock = new StockData(item.symbol);\r\n stock.SetData(item);\r\n\r\n this.Data.push(stock);\r\n }\r\n\r\n this.PageInfo = {Count: data.count, Start: data.start, End: data.end};\r\n\r\n if (typeof(this.UpdateUICallback) == 'function')\r\n this.UpdateUICallback(this);\r\n\r\n this.AutoUpate(); //自动更新\r\n }\r\n\r\n this.RecvError = function (reqeust, dataType) \r\n {\r\n\r\n }\r\n\r\n}\r\n\r\n//板块排名\r\nfunction BlockTop() {\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.BlockType = 1; //板块类型\r\n this.Count = 20;\r\n\r\n this.OrderField = 'increase'; //排序字段\r\n this.Order = -1; //排序方向 -1 /1\r\n this.Field = [\"symbol\", \"price\", \"name\", \"vol\", \"increase\", \"indextop\",'risefall'];\r\n\r\n this.ApiUrl = g_JSStockResource.Domain + \"/API/StockBlockTop\";\r\n\r\n this.SetField = function (field) {\r\n\r\n }\r\n\r\n this.ReqeustData = function () {\r\n var self = this;\r\n\r\n $.ajax({\r\n url: this.ApiUrl,\r\n data: {\r\n \"blocktype\": this.BlockType,\r\n \"start\": 0,\r\n \"end\": this.Count,\r\n \"field\": this.Field,\r\n \"orderfield\": this.OrderField,\r\n \"order\": this.Order\r\n },\r\n type:\"post\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) {\r\n self.RecvData(data, RECV_DATA_TYPE.BLOCK_TOP_DATA);\r\n },\r\n fail: function (request) {\r\n self.RecvError(request, RECV_DATA_TYPE.BLOCK_TOP_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (recvData, dataType) {\r\n let data = recvData;\r\n\r\n this.Data = [];\r\n this.resCount = data.count;\r\n for (let i in data.stock) {\r\n let item = data.stock[i];\r\n if (item.indextop != null) {\r\n var indextop = {\r\n Down: item.indextop.down,\r\n Stop: item.indextop.stop,\r\n Up: item.indextop.up,\r\n Unchanged: item.indextop.unchanged,\r\n DownStock: { Name: item.indextop.downstock.name, Symbol: item.indextop.downstock.symbol },\r\n UpStock: { Name: item.indextop.upstock.name, Symbol: item.indextop.upstock.symbol }\r\n };\r\n };\r\n this.Data.push(\r\n {\r\n Name: item.name,\r\n Symbol: item.symbol,\r\n Increase: item.increase,\r\n Risefall: item.risefall,\r\n IndexTop: indextop\r\n });\r\n }\r\n\r\n if (this.UpdateUICallback) this.UpdateUICallback(this);\r\n\r\n this.AutoUpate();\r\n }\r\n\r\n this.RecvError = function (request, dataType) {\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n//获取股票走势图图片路径\r\nfunction MinuteImage(symbol)\r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.ApiUrl = g_JSStockResource.Domain + \"/API/StockMinuteImage\";\r\n this.Symbol =[symbol]; //支持批量获取\r\n this.Data = [] //数据 {Symbol: 股票代码, Image:图片相对路径 }\r\n\r\n this.RequestData = function () \r\n {\r\n this.Data = [];\r\n var self = this;\r\n\r\n $.ajax(\r\n {\r\n url: this.ApiUrl,\r\n data: { \"symbol\": this.Symbol},\r\n type:\"post\",\r\n dataType: 'json',\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.IMAGE_MINUTE_DATA);\r\n },\r\n error: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.IMAGE_MINUTE_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (data, dataType) \r\n {\r\n for (let i in data.symbol) \r\n {\r\n let item = { Symbol:data.symbol[i], Image:data.imagerelative[i] };\r\n this.Data.push(item);\r\n }\r\n\r\n if (typeof(this.UpdateUICallback) == 'function')\r\n this.UpdateUICallback(this);\r\n }\r\n\r\n this.RecvError = function (reqeust, dataType) \r\n {\r\n\r\n }\r\n}\r\n\r\n\r\n//获取历史K线数据(不包含最新数据)\r\nfunction HistoryDayData(symbol)\r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.Symbol = symbol; //数组\r\n\r\n this.RequestData = function () \r\n {\r\n this.Data=null;\r\n this.Error=null;\r\n\r\n var self = this;\r\n \r\n var apiUrl=g_JSStockResource.CacheDomain + \"/cache/historyday/all/\"+ this.Symbol +'.json';\r\n console.log('[HistoryDayData::RequestData] cache url ',apiUrl)\r\n $.ajax({\r\n url: apiUrl,\r\n type:\"get\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.HISTORY_DAY_DATA);\r\n },\r\n error: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.HISTORY_DAY_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (data, dataType) \r\n {\r\n if (!data.symbol || !data.name) \r\n {\r\n this.InvokeUpdateUICallback();\r\n return;\r\n }\r\n\r\n var amount=data.amount;\r\n var close=data.close;\r\n var date=data.date;\r\n var high=data.high;\r\n var low=data.low;\r\n var open=data.open;\r\n var vol=data.vol;\r\n var yclose=data.yclose;\r\n\r\n if (!amount || !close || !date || !high || !low || !open || !vol || !yclose) \r\n {\r\n this.InvokeUpdateUICallback();\r\n return;\r\n }\r\n\r\n var historyData=\r\n { \r\n UpdateDate:data.update, \r\n Symbol:data.symbol,\r\n Name:data.name,\r\n KLine:[]\r\n };\r\n\r\n for (let i =0;i<date.length;++i) \r\n {\r\n let item={ Date:date[i], YClose:yclose[i], Open:open[i], High:high[i], Low:low[i], Close:close[i], Vol:vol[i], Amount:amount[i] }\r\n\r\n historyData.KLine.push(item);\r\n }\r\n\r\n this.Data=historyData;\r\n\r\n this.InvokeUpdateUICallback();\r\n }\r\n\r\n this.RecvError = function (request, dataType) \r\n {\r\n console.log(`[HistoryDayData::RecvError] status=${request.status} statusText=${request.statusText} responseText=${request.responseText}`);\r\n\r\n this.Error={Status:request.status, Message:request.responseText };\r\n this.InvokeUpdateUICallback();\r\n }\r\n\r\n this.GetWeekData=function()\r\n {\r\n if (!this.Data || !this.Data.KLine) return [];\r\n\r\n var result=this.GetDayPeriodData(1);\r\n return result;\r\n }\r\n\r\n this.GetMonthData=function()\r\n {\r\n if (!this.Data || !this.Data.KLine) return [];\r\n \r\n var result=this.GetDayPeriodData(2);\r\n return result;\r\n }\r\n\r\n //计算周,月,年\r\n this.GetDayPeriodData=function(period)\r\n {\r\n var result=new Array();\r\n var index=0;\r\n var startDate=0;\r\n var newData=null;\r\n for(var i in this.Data.KLine)\r\n {\r\n var isNewData=false;\r\n var dayData=this.Data.KLine[i];\r\n\r\n switch(period)\r\n {\r\n case 1: //周线\r\n var fridayDate=this.GetFirday(dayData.Date);\r\n if (fridayDate!=startDate)\r\n {\r\n isNewData=true;\r\n startDate=fridayDate;\r\n }\r\n break;\r\n case 2: //月线\r\n if (parseInt(dayData.Date/100)!=parseInt(startDate/100))\r\n {\r\n isNewData=true;\r\n startDate=dayData.Date;\r\n }\r\n break;\r\n case 3: //年线\r\n if (parseInt(dayData.Date/10000)!=parseInt(startDate/10000))\r\n {\r\n isNewData=true;\r\n startDate=dayData.Date;\r\n }\r\n break;\r\n }\r\n\r\n if (isNewData)\r\n {\r\n newData={};\r\n newData.Date=dayData.Date;\r\n result.push(newData);\r\n\r\n if (dayData.Open==null || dayData.Close==null) continue;\r\n\r\n newData.Open=dayData.Open;\r\n newData.High=dayData.High;\r\n newData.Low=dayData.Low;\r\n newData.YClose=dayData.YClose;\r\n newData.Close=dayData.Close;\r\n newData.Vol=dayData.Vol;\r\n newData.Amount=dayData.Amount;\r\n }\r\n else\r\n {\r\n if (newData==null) continue;\r\n if (dayData.Open==null || dayData.Close==null) continue;\r\n\r\n if (newData.Open==null || newData.Close==null)\r\n {\r\n newData.Open=dayData.Open;\r\n newData.High=dayData.High;\r\n newData.Low=dayData.Low;\r\n newData.YClose=dayData.YClose;\r\n newData.Close=dayData.Close;\r\n newData.Vol=dayData.Vol;\r\n newData.Amount=dayData.Amount;\r\n }\r\n else\r\n {\r\n if (newData.High<dayData.High) newData.High=dayData.High;\r\n if (newData.Low>dayData.Low) newData.Low=dayData.Low;\r\n\r\n newData.Close=dayData.Close;\r\n newData.Vol+=dayData.Vol;\r\n newData.Amount+=dayData.Amount;\r\n newData.Date=dayData.Date;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n this.GetFirday=function(value)\r\n {\r\n var date=new Date(parseInt(value/10000),(value/100%100-1),value%100);\r\n var day=date.getDay();\r\n if (day==5) return value;\r\n\r\n var timestamp=date.getTime();\r\n if (day<5)\r\n {\r\n var prevTimestamp=(24*60*60*1000)*(5-day);\r\n timestamp+=prevTimestamp;\r\n }\r\n else\r\n {\r\n var prevTimestamp=(24*60*60*1000)*(day-5);\r\n timestamp-=prevTimestamp;\r\n }\r\n\r\n date.setTime(timestamp);\r\n var fridayDate= date.getFullYear()*10000+(date.getMonth()+1)*100+date.getDate();\r\n var week=date.getDay();\r\n return fridayDate;\r\n\r\n }\r\n}\r\n\r\n//最新个股分价表\r\nfunction DealPriceListData(symbol)\r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.Symbol=symbol;\r\n this.ApiUrl = g_JSStockResource.Domain + \"/API/StockPriceList\";\r\n\r\n this.RequestData = function () \r\n {\r\n if (!this.Symbol) return;\r\n\r\n var self = this;\r\n var data={ };\r\n if (Array.isArray(this.Symbol)) data.Symbol = this.Symbol; //数组\r\n else data.Symbol=[this.Symbol];\r\n\r\n $.ajax({\r\n url: this.ApiUrl,\r\n data: data,\r\n type:\"post\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.DEAL_PRICE_LIST_DATA);\r\n },\r\n fail: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.DEAL_PRICE_LIST_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function (data, dataType) \r\n {\r\n this.Data = null;\r\n if (data.statistics.length<=0) return;\r\n this.Data={ Day:{}, PriceList:[] };\r\n var stock=data.data[0];\r\n this.Data.Day={Date:stock.date, YClose:stock.yclose, Price:stock.price, Vol:stock.vol, Time:stock.time};\r\n this.Data.Stock={Symbol:stock.symbol, Name:stock.name};\r\n\r\n /*\r\n var aryPrice=stock.pricelist;\r\n var aryVol=stock.vollist;\r\n for (let i=0;i<aryPrice.length;++i) \r\n {\r\n let item = {Price:aryPrice[i], Vol: aryVol[i]};\r\n if (stock.vol>0) item.Rate=item.Vol/stock.vol; //占比\r\n \r\n this.Data.PriceList.push(item);\r\n }\r\n */\r\n \r\n var stockPrice=data.statistics[0];\r\n for(var i in stockPrice.list)\r\n {\r\n var item=stockPrice.list[i];\r\n\r\n var newItem = {Price:item[0], Vol: item[1], BuyVol:item[2], SellVol:item[3], NoneVol:item[4]};\r\n if (stock.vol>0) newItem.Proportion=newItem.Vol/stock.vol;\r\n\r\n this.Data.PriceList.push(newItem);\r\n }\r\n \r\n\r\n if (this.UpdateUICallback) this.UpdateUICallback(this);\r\n\r\n this.AutoUpate();\r\n }\r\n\r\n this.RecvError = function (request, dataType) \r\n {\r\n\r\n }\r\n}\r\n\r\n//最新分笔数据\r\nfunction LatestDetailData(symbol)\r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.IsAutoUpdate = false;\r\n this.Symbol = symbol; //单个股票\r\n this.PageSize=20;\r\n\r\n\r\n this.Request=function(pageIndex, pageSize)\r\n {\r\n this.Error=null;\r\n var self = this;\r\n var start=pageIndex*pageSize;\r\n var end=start+pageSize;\r\n var apiUrl=g_JSStockResource.Domain + \"/API/StockDetail\";\r\n console.log(`[LatestDetailData::RequestData] url=${apiUrl}, start=${start} , end=${end}`);\r\n\r\n $.ajax({\r\n url: apiUrl,\r\n data: {\r\n \"symbol\": this.Symbol,\r\n \"start\": start,\r\n \"end\": end\r\n },\r\n type:\"post\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) \r\n {\r\n self.RecvData(data, RECV_DATA_TYPE.LATEST_DETAIL_DATA);\r\n },\r\n error: function (request) \r\n {\r\n self.RecvError(request, RECV_DATA_TYPE.LATEST_DETAIL_DATA);\r\n }\r\n });\r\n }\r\n\r\n this.RequestData = function () //第1次请求\r\n {\r\n this.Data={ Deal:[], Count:0 , Reqeust: { PageIndex:0 }, Response: {} };\r\n this.Request(0,this.PageSize)\r\n }\r\n\r\n this.RequestPage=function(pageIndex)\r\n {\r\n if (!this.Data) this.Data={ Deal:[], Count:0 };\r\n this.Data.Reqeust= { PageIndex:pageIndex };\r\n this.Data.Response={};\r\n\r\n var start=pageIndex*this.PageSize;\r\n var end=start+this.PageSize;\r\n //检测内存里是否已经有了\r\n var bCache=true;\r\n for(var i=start;i<end;++i)\r\n {\r\n if (!this.Data.Deal[i]) \r\n {\r\n bCache=false;\r\n break;\r\n }\r\n }\r\n\r\n if (bCache)\r\n {\r\n this.Data.Response={ Start:start, End:end };\r\n this.InvokeUpdateUICallback();\r\n }\r\n else\r\n {\r\n this.Request(pageIndex,this.PageSize);\r\n }\r\n }\r\n\r\n this.RecvData = function (data, dataType) \r\n {\r\n this.Data.Count=data.count;\r\n if (!data.detail) \r\n {\r\n this.InvokeUpdateUICallback();\r\n return;\r\n }\r\n\r\n this.Data.Day={ YClose:data.yclose, Open:data.open, Close:data.price, Date:data.date };\r\n this.Data.Stock={ Symbol:data.symbol, Name:data.name };\r\n\r\n var start=data.start;\r\n for(var i=0, index=start;i<data.detail.length;++i,++index)\r\n {\r\n var item=data.detail[i];\r\n var detailItem={ Time:item[0], Price:item[1], Vol:item[2], Amount:item[3] , Flag:''};\r\n if (item[4]===0) detailItem.Flag='B';\r\n else if (item[4]===1)detailItem.Flag='S';\r\n\r\n this.Data.Deal[index]=detailItem;\r\n }\r\n\r\n this.Data.Response={ Start:data.start, End:data.end };\r\n this.InvokeUpdateUICallback();\r\n }\r\n\r\n this.RecvError = function (request, dataType) \r\n {\r\n console.log(`[LatestDetailData::RecvError] status=${request.status} statusText=${request.statusText} responseText=${request.responseText}`);\r\n\r\n this.Error={Status:request.status, Message:request.responseText };\r\n this.InvokeUpdateUICallback();\r\n }\r\n}\r\n\r\n//分析板块请求数据\r\nfunction AnalylisPlate()\r\n{\r\n this.newMethod = IStockData; //派生\r\n this.newMethod();\r\n delete this.newMethod;\r\n\r\n this.ApiUrl = g_JSStockResource.Domain + \"/api/StockListAnalyze\";\r\n this.PolicyGuid; //查询策略的Guid\r\n this.Plate = \"\"; //板块id\r\n this.SymbolList = []; //股票列表\r\n\r\n this.RequestData = function()\r\n {\r\n var self = this;\r\n $.ajax({\r\n url: self.ApiUrl,\r\n data: {\r\n \"PolicyGuid\": self.PolicyGuid,\r\n \"Plate\": self.Plate,\r\n \"Symbol\": self.SymbolList\r\n },\r\n type:\"post\",\r\n dataType: 'json',\r\n async:true,\r\n success: function (data) \r\n {\r\n self.RecvData(data);\r\n },\r\n error: function (request) \r\n {\r\n self.RecvError(request);\r\n }\r\n });\r\n }\r\n\r\n this.RecvData = function(recvData)\r\n {\r\n this.Data = {};\r\n // console.log(recvData.data,\"recvData,分析板块:::::\")\r\n var data = recvData;\r\n if (data.count == 0) return;\r\n \r\n if (data.concept){ //概念占比\r\n // 0 = 概念名称 1 = 代码 0 = 占比 3 = 个数 4 = 涨幅 5 = 最新价 6 = 一周涨幅 7 = 四周涨幅\r\n var conceptList = [];\r\n for (var i in data.concept.data){\r\n var item = data.concept.data[i];\r\n var info = {};\r\n info.Name = item[0];\r\n info.Symbol = item[1];\r\n info.Ratio = item[2];\r\n info.Count = item[3];\r\n info.Increase = item[4];\r\n info.Price = item[5];\r\n info.Week1 = item[6];\r\n info.Week4 = item[7];\r\n conceptList.push(info);\r\n }\r\n this.Data.Concept = conceptList;\r\n }\r\n if (data.distributed) { //股票类型占比\r\n this.Data.Distributed = data.distributed;\r\n }\r\n if (data.industry) { //行业占比\r\n this.Data.Industry = data.industry;\r\n }\r\n if (data.quadrant) { //四象限占比\r\n this.Data.Quadrant = data.quadrant;\r\n }\r\n if (data.region) { //四象限占比\r\n this.Data.Region = data.region;\r\n }\r\n\r\n // console.log(this.Data,\"this.Data\")\r\n if (this.UpdateUICallback) this.UpdateUICallback(this);\r\n }\r\n\r\n this.RecvError = function (request)\r\n {\r\n console.log(request)\r\n }\r\n}\r\n\r\nvar STOCK_MARKET=\r\n{\r\n SH:'.SH',\r\n SZ:'.SZ',\r\n HK:'.HK',\r\n SHFE: '.SHF', //上期所 (Shanghai Futures Exchange)\r\n CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)\r\n DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)\r\n CZCE: '.CZC', //郑州期货交易所\r\n USA:'.USA', //美股\r\n\r\n IsUSA:function(upperSymbol) //是否是美股\r\n {\r\n if (!upperSymbol) return false;\r\n return upperSymbol.indexOf(this.USA) > 0;\r\n },\r\n\r\n IsSH: function (upperSymbol)\r\n {\r\n //需要精确匹配最后3位\r\n var pos = upperSymbol.length-this.SH.length;\r\n var find = upperSymbol.indexOf(this.SH);\r\n return find == pos;\r\n },\r\n\r\n IsSZ: function (upperSymbol)\r\n {\r\n var pos = upperSymbol.length - this.SZ.length;\r\n var find = upperSymbol.indexOf(this.SZ);\r\n return find == pos;\r\n },\r\n\r\n IsHK: function (upperSymbol)\r\n {\r\n var pos = upperSymbol.length - this.HK.length;\r\n var find = upperSymbol.indexOf(this.HK);\r\n return find == pos;\r\n },\r\n\r\n IsSHFE: function (upperSymbol)\r\n {\r\n return upperSymbol.indexOf(this.SHFE) > 0;\r\n },\r\n \r\n IsCFFEX: function (upperSymbol) \r\n {\r\n return upperSymbol.indexOf(this.CFFEX) > 0;\r\n },\r\n\r\n IsDCE: function (upperSymbol) \r\n {\r\n return upperSymbol.indexOf(this.DCE) > 0;\r\n },\r\n\r\n IsCZCE: function (upperSymbol) \r\n {\r\n return upperSymbol.indexOf(this.CZCE) > 0;\r\n },\r\n\r\n IsChinaFutures:function(upperSymbol) //是否是国内期货\r\n {\r\n return this.IsCFFEX(upperSymbol) || this.IsCZCE(upperSymbol) || this.IsDCE(upperSymbol) || this.IsSHFE(upperSymbol);\r\n },\r\n\r\n IsSHSZ:function(upperSymbol) //是否是沪深的股票\r\n {\r\n return this.IsSZ(upperSymbol)|| this.IsSH(upperSymbol);\r\n },\r\n\r\n IsSHSZFund:function(upperSymbol) //是否是交易所基金\r\n {\r\n if (!upperSymbol) return false;\r\n\r\n if (this.IsSH(upperSymbol)) //51XXXX.SH\r\n {\r\n if (upperSymbol.charAt(0)=='5' && upperSymbol.charAt(1)=='1') return true;\r\n }\r\n else if (this.IsSZ(upperSymbol)) //15XXXX.sz, 16XXXX.sz, 17XXXX.sz, 18XXXX.sz\r\n {\r\n if (upperSymbol.charAt(0)=='1' && \r\n (upperSymbol.charAt(1)=='5' || upperSymbol.charAt(1)=='6' || upperSymbol.charAt(1)=='7' || upperSymbol.charAt(1)=='8') ) return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n IsSHSZIndex:function(symbol) //是否是沪深指数代码\r\n {\r\n if (!symbol) return false;\r\n var upperSymbol=symbol.toUpperCase();\r\n if (this.IsSH(upperSymbol))\r\n {\r\n var temp=upperSymbol.replace('.SH','');\r\n if (upperSymbol.charAt(0)=='0' && parseInt(temp)<=3000) return true;\r\n\r\n }\r\n else if (this.IsSZ(upperSymbol))\r\n {\r\n if (upperSymbol.charAt(0)=='3' && upperSymbol.charAt(1)=='9') return true;\r\n }\r\n else if (upperSymbol.indexOf('.CI')>0) //自定义指数\r\n {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n IsSHSZStockA:function(symbol) //是否是沪深A股\r\n {\r\n if (!symbol) return false;\r\n var upperSymbol=symbol.toUpperCase();\r\n if (this.IsSH(upperSymbol))\r\n {\r\n var temp=upperSymbol.replace('.SH','');\r\n if (upperSymbol.charAt(0)=='6') return true;\r\n\r\n }\r\n else if (this.IsSZ(upperSymbol))\r\n {\r\n if (upperSymbol.charAt(0)=='0')\r\n {\r\n if (upperSymbol.charAt(1)=='0' && upperSymbol.charAt(1)=='2') return true; //002 中小板\r\n if (upperSymbol.charAt(1)!='7' && upperSymbol.charAt(1)!='8') return true;\r\n } \r\n }\r\n\r\n return false;\r\n },\r\n\r\n IsSHStockSTAR:function(symbol) // 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)\r\n {\r\n if (!symbol) return false;\r\n var upperSymbol=symbol.toUpperCase();\r\n if (!this.IsSH(upperSymbol)) return false;\r\n if (upperSymbol.charAt(0)=='6' && upperSymbol.charAt(1)=='8' && upperSymbol.charAt(2)=='8')\r\n return true;\r\n \r\n return false;\r\n },\r\n\r\n GetMarketStatus:function(symbol) //获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后\r\n {\r\n if (!symbol) return 0;\r\n var upperSymbol=symbol.toUpperCase();\r\n if (this.IsUSA(upperSymbol))\r\n {\r\n var usaDate=GetLocalTime(-4);\r\n day = usaDate.getDay(),\r\n time = usaDate.getHours() * 100 + usaDate.getMinutes();\r\n if(day == 6 || day== 0) return 0; //周末\r\n\r\n //9:30 - 16:00 考虑夏令时间时间增加1小时 9:30 - 17:00\r\n if (time>1730) return 3;\r\n if (time<930) return 1;\r\n\r\n return 2;\r\n }\r\n else\r\n {\r\n \r\n var nowDate= new Date(),\r\n day = nowDate.getDay(),\r\n time = nowDate.getHours() * 100 + nowDate.getMinutes();\r\n if(day == 6 || day== 0) return 0; //周末\r\n\r\n //9:30 - 15:40\r\n if(time>1540) return 3;\r\n if(time<925) return 1;\r\n return 2; \r\n }\r\n }\r\n};\r\n\r\n\r\n/*外部导入*/ \r\nimport $ from 'jquery'\r\n\r\n/*暴露外部用的方法*/\r\nexport default {\r\n JSStockInit:JSStock.Init,\r\n STOCK_FIELD_NAME:STOCK_FIELD_NAME,\r\n\r\n //类导出\r\n JSStock: JSStock,\r\n StockRead: StockRead,\r\n STOCK_FIELD_NAME: STOCK_FIELD_NAME,\r\n RECV_DATA_TYPE:RECV_DATA_TYPE,\r\n \r\n}"]}