stock-sdk 1.4.0 → 1.4.1
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.
- package/README.md +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var yt=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Ke=Object.prototype.hasOwnProperty;var Ct=(t,e)=>{for(var o in e)yt(t,o,{get:e[o],enumerable:!0})},Ae=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Te(e))!Ke.call(t,n)&&n!==o&&yt(t,n,{get:()=>e[n],enumerable:!(s=Me(e,n))||s.enumerable});return t};var Pe=t=>Ae(yt({},"__esModule",{value:!0}),t);var Ee={};Ct(Ee,{StockSDK:()=>st,addIndicators:()=>ot,asyncPool:()=>N,calcATR:()=>rt,calcBIAS:()=>et,calcBOLL:()=>Z,calcCCI:()=>nt,calcEMA:()=>j,calcKDJ:()=>Y,calcMA:()=>G,calcMACD:()=>J,calcRSI:()=>X,calcSMA:()=>E,calcWMA:()=>gt,calcWR:()=>tt,chunkArray:()=>v,decodeGBK:()=>D,default:()=>we,parseResponse:()=>Q,safeNumber:()=>g,safeNumberOrNull:()=>C});module.exports=Pe(Ee);function D(t){return new TextDecoder("gbk").decode(t)}function Q(t){let e=t.split(";").map(s=>s.trim()).filter(Boolean),o=[];for(let s of e){let n=s.indexOf("=");if(n<0)continue;let r=s.slice(0,n).trim();r.startsWith("v_")&&(r=r.slice(2));let i=s.slice(n+1).trim();i.startsWith('"')&&i.endsWith('"')&&(i=i.slice(1,-1));let a=i.split("~");o.push({key:r,fields:a})}return o}function g(t){if(!t||t==="")return 0;let e=parseFloat(t);return Number.isNaN(e)?0:e}function C(t){if(!t||t==="")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}function u(t){if(!t||t===""||t==="-")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}var Rt="https://qt.gtimg.cn",St="https://web.ifzq.gtimg.cn/appstock/app/minute/query",bt="https://assets.linkdiary.cn/shares/zh_a_list.json",wt="https://assets.linkdiary.cn/shares/us_list.json",Mt="https://assets.linkdiary.cn/shares/hk_list.json";var it="https://push2his.eastmoney.com/api/qt/stock/kline/get",Tt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",Kt="https://33.push2his.eastmoney.com/api/qt/stock/kline/get",At="https://63.push2his.eastmoney.com/api/qt/stock/kline/get",Pt="https://17.push2.eastmoney.com/api/qt/clist/get",kt="https://91.push2.eastmoney.com/api/qt/stock/get",Lt="https://29.push2.eastmoney.com/api/qt/clist/get",at="https://7.push2his.eastmoney.com/api/qt/stock/kline/get",_t="https://push2his.eastmoney.com/api/qt/stock/trends2/get",It="https://79.push2.eastmoney.com/api/qt/clist/get",xt="https://91.push2.eastmoney.com/api/qt/stock/get",Ot="https://29.push2.eastmoney.com/api/qt/clist/get",lt="https://91.push2his.eastmoney.com/api/qt/stock/kline/get",Ut="https://push2his.eastmoney.com/api/qt/stock/trends2/get",Bt=3e4,$=500,F=500,W=7;var z=class{constructor(e={}){this.baseUrl=e.baseUrl??Rt,this.timeout=e.timeout??Bt}getTimeout(){return this.timeout}async get(e,o={}){let s=new AbortController,n=setTimeout(()=>s.abort(),this.timeout);try{let r=await fetch(e,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);switch(o.responseType){case"json":return await r.json();case"arraybuffer":return await r.arrayBuffer();default:return await r.text()}}finally{clearTimeout(n)}}async getTencentQuote(e){let o=`${this.baseUrl}/?q=${encodeURIComponent(e)}`,s=await this.get(o,{responseType:"arraybuffer"}),n=D(s);return Q(n)}};var ke=new Set(["daily","weekly","monthly"]),Le=new Set(["1","5","15","30","60"]),_e=new Set(["","qfq","hfq"]);function B(t,e){if(!Number.isFinite(t)||!Number.isInteger(t)||t<=0)throw new RangeError(`${e} must be a positive integer`)}function U(t){if(!ke.has(t))throw new RangeError("period must be one of: daily, weekly, monthly")}function H(t){if(!Le.has(t))throw new RangeError("period must be one of: 1, 5, 15, 30, 60")}function I(t){if(!_e.has(t))throw new RangeError("adjust must be one of: '', 'qfq', 'hfq'")}function v(t,e){B(e,"chunkSize");let o=[];for(let s=0;s<t.length;s+=e)o.push(t.slice(s,s+e));return o}async function N(t,e){B(e,"concurrency");let o=[],s=[];for(let n of t){let r=Promise.resolve().then(()=>n()).then(i=>{o.push(i)});if(s.push(r),s.length>=e){await Promise.race(s);for(let i=s.length-1;i>=0;i--)await Promise.race([s[i].then(()=>"fulfilled"),Promise.resolve("pending")])==="fulfilled"&&s.splice(i,1)}}return await Promise.all(s),o}function ut(t){return t.startsWith("sh")?"1":t.startsWith("sz")||t.startsWith("bj")?"0":t.startsWith("6")?"1":"0"}var A={};Ct(A,{getAShareCodeList:()=>ee,getAllHKQuotesByCodes:()=>se,getAllQuotesByCodes:()=>oe,getAllUSQuotesByCodes:()=>ie,getFullQuotes:()=>ct,getFundFlow:()=>Zt,getFundQuotes:()=>Xt,getHKCodeList:()=>re,getHKQuotes:()=>ft,getPanelLargeOrder:()=>Yt,getSimpleQuotes:()=>Jt,getTodayTimeline:()=>te,getUSCodeList:()=>ne,getUSQuotes:()=>pt,parseFullQuote:()=>Et,parseFundFlow:()=>qt,parseFundQuote:()=>Dt,parseHKQuote:()=>vt,parsePanelLargeOrder:()=>Ht,parseSimpleQuote:()=>jt,parseUSQuote:()=>Nt});function Et(t){let e=[];for(let s=0;s<5;s++)e.push({price:g(t[9+s*2]),volume:g(t[10+s*2])});let o=[];for(let s=0;s<5;s++)o.push({price:g(t[19+s*2]),volume:g(t[20+s*2])});return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),outerVolume:g(t[7]),innerVolume:g(t[8]),bid:e,ask:o,time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),volume2:g(t[36]),amount:g(t[37]),turnoverRate:C(t[38]),pe:C(t[39]),amplitude:C(t[43]),circulatingMarketCap:C(t[44]),totalMarketCap:C(t[45]),pb:C(t[46]),limitUp:C(t[47]),limitDown:C(t[48]),volumeRatio:C(t[49]),avgPrice:C(t[51]),peStatic:C(t[52]),peDynamic:C(t[53]),high52w:C(t[67]),low52w:C(t[68]),circulatingShares:C(t[72]),totalShares:C(t[73]),raw:t}}function jt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),change:g(t[4]),changePercent:g(t[5]),volume:g(t[6]),amount:g(t[7]),marketCap:C(t[9]),marketType:t[10]??"",raw:t}}function qt(t){return{code:t[0]??"",mainInflow:g(t[1]),mainOutflow:g(t[2]),mainNet:g(t[3]),mainNetRatio:g(t[4]),retailInflow:g(t[5]),retailOutflow:g(t[6]),retailNet:g(t[7]),retailNetRatio:g(t[8]),totalFlow:g(t[9]),name:t[12]??"",date:t[13]??"",raw:t}}function Ht(t){return{buyLargeRatio:g(t[0]),buySmallRatio:g(t[1]),sellLargeRatio:g(t[2]),sellSmallRatio:g(t[3]),raw:t}}function vt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),lotSize:C(t[40]),circulatingMarketCap:C(t[44]),totalMarketCap:C(t[45]),currency:t[t.length-3]??"",raw:t}}function Nt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),turnoverRate:C(t[38]),pe:C(t[39]),amplitude:C(t[43]),totalMarketCap:C(t[45]),pb:C(t[47]),high52w:C(t[48]),low52w:C(t[49]),raw:t}}function Dt(t){return{code:t[0]??"",name:t[1]??"",nav:g(t[5]),accNav:g(t[6]),change:g(t[7]),navDate:t[8]??"",raw:t}}async function ct(t,e){return!e||e.length===0?[]:(await t.getTencentQuote(e.join(","))).filter(s=>s.fields&&s.fields.length>0&&s.fields[0]!=="").map(s=>Et(s.fields))}async function Jt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`s_${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>jt(n.fields))}async function Zt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`ff_${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>qt(n.fields))}async function Yt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`s_pk${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Ht(n.fields))}async function ft(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`hk${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>vt(n.fields))}async function pt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`us${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Nt(n.fields))}async function Xt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`jj${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Dt(n.fields))}async function te(t,e){let o=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),o);try{let r=await fetch(`${St}?code=${e}`,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let i=await r.json();if(i.code!==0)throw new Error(i.msg||"API error");let a=i.data?.[e];if(!a)return{code:e,date:"",data:[]};let l=a.data?.data||[],c=a.data?.date||"",f=!1;if(l.length>0){let p=l[0].split(" "),m=parseFloat(p[1])||0,h=parseInt(p[2],10)||0,y=parseFloat(p[3])||0;h>0&&m>0&&y/h>m*50&&(f=!0)}let d=l.map(p=>{let m=p.split(" "),h=m[0],y=`${h.slice(0,2)}:${h.slice(2,4)}`,R=parseInt(m[2],10)||0,S=parseFloat(m[3])||0,b=f?R*100:R,T=b>0?S/b:0;return{time:y,price:parseFloat(m[1])||0,volume:b,amount:S,avgPrice:Math.round(T*100)/100}});return{code:e,date:c,data:d}}finally{clearTimeout(n)}}async function ee(t,e=!0){let o=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),o);try{let r=await fetch(bt,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let a=(await r.json()).list||[];return e?a:a.map(l=>l.replace(/^(sh|sz|bj)/,""))}finally{clearTimeout(n)}}async function ne(t,e=!0){let o=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),o);try{let r=await fetch(wt,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let a=(await r.json()).list||[];return e?a:a.map(l=>l.replace(/^\d{3}\./,""))}finally{clearTimeout(n)}}async function re(t){let e=t.getTimeout(),o=new AbortController,s=setTimeout(()=>o.abort(),e);try{let n=await fetch(Mt,{signal:o.signal});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return(await n.json()).list||[]}finally{clearTimeout(s)}}async function oe(t,e,o={}){let{batchSize:s=$,concurrency:n=W,onProgress:r}=o;B(s,"batchSize"),B(n,"concurrency");let i=Math.min(s,F),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await ct(t,p);return c++,r&&r(c,l),m});return(await N(f,n)).flat()}async function se(t,e,o={}){let{batchSize:s=$,concurrency:n=W,onProgress:r}=o;B(s,"batchSize"),B(n,"concurrency");let i=Math.min(s,F),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await ft(t,p);return c++,r&&r(c,l),m});return(await N(f,n)).flat()}async function ie(t,e,o={}){let{batchSize:s=$,concurrency:n=W,onProgress:r}=o;B(s,"batchSize"),B(n,"concurrency");let i=Math.min(s,F),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await pt(t,p);return c++,r&&r(c,l),m});return(await N(f,n)).flat()}var P={};Ct(P,{getConceptConstituents:()=>Ce,getConceptKline:()=>Re,getConceptList:()=>Wt,getConceptMinuteKline:()=>Se,getConceptSpot:()=>ye,getHKHistoryKline:()=>ue,getHistoryKline:()=>ae,getIndustryConstituents:()=>de,getIndustryKline:()=>me,getIndustryList:()=>$t,getIndustryMinuteKline:()=>ge,getIndustrySpot:()=>pe,getMinuteKline:()=>le,getUSHistoryKline:()=>ce});async function ae(t,e,o={}){let{period:s="daily",adjust:n="hfq",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`${ut(e)}.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:r,end:i}),p=`${it}?${d.toString()}`,h=(await t.get(p,{responseType:"json"}))?.data?.klines;return!Array.isArray(h)||h.length===0?[]:h.map(y=>{let[R,S,b,T,K,k,L,_,x,O,q]=y.split(",");return{date:R,code:a,open:u(S),close:u(b),high:u(T),low:u(K),volume:u(k),amount:u(L),amplitude:u(_),changePercent:u(x),change:u(O),turnoverRate:u(q)}})}async function le(t,e,o={}){let{period:s="1",adjust:n="hfq",startDate:r="1979-09-01 09:32:00",endDate:i="2222-01-01 09:32:00"}=o;H(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l=`${ut(e)}.${a}`;if(s==="1"){let c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",ut:"7eea3edcaed734bea9cbfc24409ed989",ndays:"5",iscr:"0",secid:l}),f=`${Tt}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data?.trends;if(!Array.isArray(p)||p.length===0)return[];let m=r.replace("T"," ").slice(0,16),h=i.replace("T"," ").slice(0,16);return p.map(y=>{let[R,S,b,T,K,k,L,_]=y.split(",");return{time:R,open:u(S),close:u(b),high:u(T),low:u(K),volume:u(k),amount:u(L),avgPrice:u(_)}}).filter(y=>y.time>=m&&y.time<=h)}else{let c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:s,fqt:c[n],secid:l,beg:"0",end:"20500000"}),d=`${it}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;if(!Array.isArray(m)||m.length===0)return[];let h=r.replace("T"," ").slice(0,16),y=i.replace("T"," ").slice(0,16);return m.map(R=>{let[S,b,T,K,k,L,_,x,O,q,ht]=R.split(",");return{time:S,open:u(b),close:u(T),high:u(K),low:u(k),changePercent:u(O),change:u(q),volume:u(L),amount:u(_),amplitude:u(x),turnoverRate:u(ht)}}).filter(R=>R.time>=h&&R.time<=y)}}async function ue(t,e,o={}){let{period:s="daily",adjust:n="hfq",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=e.replace(/^hk/i,"").padStart(5,"0"),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`116.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:r,end:i,lmt:"1000000"}),p=`${Kt}?${d.toString()}`,m=await t.get(p,{responseType:"json"}),h=m?.data?.klines,y=m?.data?.name||"";return!Array.isArray(h)||h.length===0?[]:h.map(R=>{let[S,b,T,K,k,L,_,x,O,q,ht]=R.split(",");return{date:S,code:a,name:y,open:u(b),close:u(T),high:u(K),low:u(k),volume:u(L),amount:u(_),amplitude:u(x),changePercent:u(O),change:u(q),turnoverRate:u(ht)}})}async function ce(t,e,o={}){let{period:s="daily",adjust:n="hfq",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a={daily:"101",weekly:"102",monthly:"103"},l={"":"0",qfq:"1",hfq:"2"},c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:a[s],fqt:l[n],secid:e,beg:r,end:i,lmt:"1000000"}),f=`${At}?${c.toString()}`,d=await t.get(f,{responseType:"json"}),p=d?.data?.klines,m=d?.data?.code||e.split(".")[1]||e,h=d?.data?.name||"";return!Array.isArray(p)||p.length===0?[]:p.map(y=>{let[R,S,b,T,K,k,L,_,x,O,q]=y.split(",");return{date:R,code:m,name:h,open:u(S),close:u(b),high:u(T),low:u(K),volume:u(k),amount:u(L),amplitude:u(_),changePercent:u(x),change:u(O),turnoverRate:u(q)}})}var Qt=null;async function dt(t,e){if(e.startsWith("BK"))return e;if(!Qt){let s=await $t(t);Qt=new Map(s.map(n=>[n.name,n.code]))}let o=Qt.get(e);if(!o)throw new Error(`\u672A\u627E\u5230\u884C\u4E1A\u677F\u5757: ${e}`);return o}function w(t){if(t==null)return null;let e=String(t);return u(e)}async function fe(t,e,o,s,n=100,r){let i=[],a=1,l=0;do{let c=new URLSearchParams({...o,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>r(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function $t(t){let s=await fe(t,Pt,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:"m:90 t:2 f:!50"},"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,f140,f141,f207,f208,f209,f222",100,(n,r)=>({rank:r,name:String(n.f14??""),code:String(n.f12??""),price:w(n.f2),change:w(n.f4),changePercent:w(n.f3),totalMarketCap:w(n.f20),turnoverRate:w(n.f8),riseCount:w(n.f104),fallCount:w(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:w(n.f136)}));return s.sort((n,r)=>(r.changePercent??0)-(n.changePercent??0)),s.forEach((n,r)=>{n.rank=r+1}),s}async function pe(t,e){let o=await dt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${o}`}),n=`${kt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function de(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:`b:${await dt(t,e)} f:!50`};return fe(t,Lt,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(r,i)=>({rank:i,code:String(r.f12??""),name:String(r.f14??""),price:w(r.f2),changePercent:w(r.f3),change:w(r.f4),volume:w(r.f5),amount:w(r.f6),amplitude:w(r.f7),high:w(r.f15),low:w(r.f16),open:w(r.f17),prevClose:w(r.f18),turnoverRate:w(r.f8),pe:w(r.f9),pb:w(r.f23)}))}async function me(t,e,o={}){let{period:s="daily",adjust:n="",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=await dt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:r,end:i,smplmt:"10000",lmt:"1000000"}),d=`${at}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,R,S,b,T,K,k,L,_,x,O]=h.split(",");return{date:y,open:u(R),close:u(S),high:u(b),low:u(T),changePercent:u(_),change:u(x),volume:u(K),amount:u(k),amplitude:u(L),turnoverRate:u(O)}})}async function ge(t,e,o={}){let{period:s="5"}=o;H(s);let n=await dt(t,e);if(s==="1"){let r=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${_t}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(R),price:u(S)}})}else{let r=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${at}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S,b,T,K]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(T),volume:u(y),amount:u(R),amplitude:u(S),turnoverRate:u(K)}})}}var Ft=null;function M(t){if(t==null)return null;let e=String(t);return u(e)}async function mt(t,e){if(e.startsWith("BK"))return e;if(!Ft){let s=await Wt(t);Ft=new Map(s.map(n=>[n.name,n.code]))}let o=Ft.get(e);if(!o)throw new Error(`\u672A\u627E\u5230\u6982\u5FF5\u677F\u5757: ${e}`);return o}async function he(t,e,o,s,n=100,r){let i=[],a=1,l=0;do{let c=new URLSearchParams({...o,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>r(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function Wt(t){let s=await he(t,It,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:"m:90 t:3 f:!50"},"f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",100,(n,r)=>({rank:r,name:String(n.f14??""),code:String(n.f12??""),price:M(n.f2),change:M(n.f4),changePercent:M(n.f3),totalMarketCap:M(n.f20),turnoverRate:M(n.f8),riseCount:M(n.f104),fallCount:M(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:M(n.f136)}));return s.sort((n,r)=>(r.changePercent??0)-(n.changePercent??0)),s.forEach((n,r)=>{n.rank=r+1}),s}async function ye(t,e){let o=await mt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${o}`}),n=`${xt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function Ce(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:`b:${await mt(t,e)} f:!50`};return he(t,Ot,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(r,i)=>({rank:i,code:String(r.f12??""),name:String(r.f14??""),price:M(r.f2),changePercent:M(r.f3),change:M(r.f4),volume:M(r.f5),amount:M(r.f6),amplitude:M(r.f7),high:M(r.f15),low:M(r.f16),open:M(r.f17),prevClose:M(r.f18),turnoverRate:M(r.f8),pe:M(r.f9),pb:M(r.f23)}))}async function Re(t,e,o={}){let{period:s="daily",adjust:n="",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=await mt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:r,end:i,smplmt:"10000",lmt:"1000000"}),d=`${lt}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,R,S,b,T,K,k,L,_,x,O]=h.split(",");return{date:y,open:u(R),close:u(S),high:u(b),low:u(T),changePercent:u(_),change:u(x),volume:u(K),amount:u(k),amplitude:u(L),turnoverRate:u(O)}})}async function Se(t,e,o={}){let{period:s="5"}=o;H(s);let n=await mt(t,e);if(s==="1"){let r=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${Ut}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(R),price:u(S)}})}else{let r=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${lt}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S,b,T,K]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(T),volume:u(y),amount:u(R),amplitude:u(S),turnoverRate:u(K)}})}}function V(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function E(t,e){let o=[];for(let s=0;s<t.length;s++){if(s<e-1){o.push(null);continue}let n=0,r=0;for(let i=s-e+1;i<=s;i++)t[i]!==null&&(n+=t[i],r++);o.push(r===e?V(n/e):null)}return o}function j(t,e){let o=[],s=2/(e+1),n=null,r=!1;for(let i=0;i<t.length;i++){if(i<e-1){o.push(null);continue}if(!r){let l=0,c=0;for(let f=i-e+1;f<=i;f++)t[f]!==null&&(l+=t[f],c++);c===e&&(n=l/e,r=!0),o.push(n!==null?V(n):null);continue}let a=t[i];a===null?o.push(n!==null?V(n):null):(n=s*a+(1-s)*n,o.push(V(n)))}return o}function gt(t,e){let o=[],s=Array.from({length:e},(r,i)=>i+1),n=s.reduce((r,i)=>r+i,0);for(let r=0;r<t.length;r++){if(r<e-1){o.push(null);continue}let i=0,a=!0;for(let l=0;l<e;l++){let c=t[r-e+1+l];if(c===null){a=!1;break}i+=c*s[l]}o.push(a?V(i/n):null)}return o}function G(t,e={}){let{periods:o=[5,10,20,30,60,120,250],type:s="sma"}=e,n=s==="ema"?j:s==="wma"?gt:E,r={};for(let i of o)r[`ma${i}`]=n(t,i);return t.map((i,a)=>{let l={};for(let c of o)l[`ma${c}`]=r[`ma${c}`][a];return l})}function be(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function J(t,e={}){let{short:o=12,long:s=26,signal:n=9}=e,r=j(t,o),i=j(t,s),a=t.map((c,f)=>r[f]===null||i[f]===null?null:r[f]-i[f]),l=j(a,n);return t.map((c,f)=>({dif:a[f]!==null?be(a[f]):null,dea:l[f],macd:a[f]!==null&&l[f]!==null?be((a[f]-l[f])*2):null}))}function zt(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function Ie(t,e,o){let s=[];for(let n=0;n<t.length;n++){if(n<e-1||o[n]===null){s.push(null);continue}let r=0,i=0;for(let a=n-e+1;a<=n;a++)t[a]!==null&&o[n]!==null&&(r+=Math.pow(t[a]-o[n],2),i++);s.push(i===e?Math.sqrt(r/e):null)}return s}function Z(t,e={}){let{period:o=20,stdDev:s=2}=e,n=E(t,o),r=Ie(t,o,n);return t.map((i,a)=>{if(n[a]===null||r[a]===null)return{mid:null,upper:null,lower:null,bandwidth:null};let l=n[a]+s*r[a],c=n[a]-s*r[a],f=n[a]!==0?zt((l-c)/n[a]*100):null;return{mid:n[a],upper:zt(l),lower:zt(c),bandwidth:f}})}function Vt(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function Y(t,e={}){let{period:o=9,kPeriod:s=3,dPeriod:n=3}=e,r=[],i=50,a=50;for(let l=0;l<t.length;l++){if(l<o-1){r.push({k:null,d:null,j:null});continue}let c=-1/0,f=1/0,d=!0;for(let y=l-o+1;y<=l;y++){if(t[y].high===null||t[y].low===null){d=!1;break}c=Math.max(c,t[y].high),f=Math.min(f,t[y].low)}let p=t[l].close;if(!d||p===null||c===f){r.push({k:null,d:null,j:null});continue}let m=(p-f)/(c-f)*100;i=(s-1)/s*i+1/s*m,a=(n-1)/n*a+1/n*i;let h=3*i-2*a;r.push({k:Vt(i),d:Vt(a),j:Vt(h)})}return r}function xe(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function X(t,e={}){let{periods:o=[6,12,24]}=e,s=[null];for(let r=1;r<t.length;r++)t[r]===null||t[r-1]===null?s.push(null):s.push(t[r]-t[r-1]);let n={};for(let r of o){let i=[],a=0,l=0;for(let c=0;c<t.length;c++){if(c<r){i.push(null),s[c]!==null&&(s[c]>0?a+=s[c]:l+=Math.abs(s[c]));continue}if(c===r)a=a/r,l=l/r;else{let f=s[c]??0,d=f>0?f:0,p=f<0?Math.abs(f):0;a=(a*(r-1)+d)/r,l=(l*(r-1)+p)/r}if(l===0)i.push(100);else if(a===0)i.push(0);else{let f=a/l;i.push(xe(100-100/(1+f)))}}n[`rsi${r}`]=i}return t.map((r,i)=>{let a={};for(let l of o)a[`rsi${l}`]=n[`rsi${l}`][i];return a})}function Oe(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function tt(t,e={}){let{periods:o=[6,10]}=e,s={};for(let n of o){let r=[];for(let i=0;i<t.length;i++){if(i<n-1){r.push(null);continue}let a=-1/0,l=1/0,c=!0;for(let p=i-n+1;p<=i;p++){if(t[p].high===null||t[p].low===null){c=!1;break}a=Math.max(a,t[p].high),l=Math.min(l,t[p].low)}let f=t[i].close;if(!c||f===null||a===l){r.push(null);continue}let d=(a-f)/(a-l)*100;r.push(Oe(d))}s[`wr${n}`]=r}return t.map((n,r)=>{let i={};for(let a of o)i[`wr${a}`]=s[`wr${a}`][r];return i})}function Ue(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function et(t,e={}){let{periods:o=[6,12,24]}=e,s={};for(let n of o){let r=E(t,n),i=[];for(let a=0;a<t.length;a++)if(t[a]===null||r[a]===null||r[a]===0)i.push(null);else{let l=(t[a]-r[a])/r[a]*100;i.push(Ue(l))}s[`bias${n}`]=i}return t.map((n,r)=>{let i={};for(let a of o)i[`bias${a}`]=s[`bias${a}`][r];return i})}function Be(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function nt(t,e={}){let{period:o=14}=e,s=[],n=t.map(r=>r.high===null||r.low===null||r.close===null?null:(r.high+r.low+r.close)/3);for(let r=0;r<t.length;r++){if(r<o-1){s.push({cci:null});continue}let i=0,a=0;for(let d=r-o+1;d<=r;d++)n[d]!==null&&(i+=n[d],a++);if(a!==o||n[r]===null){s.push({cci:null});continue}let l=i/o,c=0;for(let d=r-o+1;d<=r;d++)c+=Math.abs(n[d]-l);let f=c/o;if(f===0)s.push({cci:0});else{let d=(n[r]-l)/(.015*f);s.push({cci:Be(d)})}}return s}function Gt(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function rt(t,e={}){let{period:o=14}=e,s=[],n=[];for(let i=0;i<t.length;i++){let{high:a,low:l,close:c}=t[i];if(a===null||l===null||c===null){n.push(null);continue}if(i===0)n.push(a-l);else{let f=t[i-1].close;if(f===null)n.push(a-l);else{let d=a-l,p=Math.abs(a-f),m=Math.abs(l-f);n.push(Math.max(d,p,m))}}}let r=null;for(let i=0;i<t.length;i++){if(i<o-1){s.push({tr:n[i]!==null?Gt(n[i]):null,atr:null});continue}if(i===o-1){let a=0,l=0;for(let c=0;c<o;c++)n[c]!==null&&(a+=n[c],l++);l===o&&(r=a/o)}else r!==null&&n[i]!==null&&(r=(r*(o-1)+n[i])/o);s.push({tr:n[i]!==null?Gt(n[i]):null,atr:r!==null?Gt(r):null})}return s}function ot(t,e={}){if(t.length===0)return[];let o=t.map(m=>m.close),s=t.map(m=>({open:m.open,high:m.high,low:m.low,close:m.close,volume:m.volume})),n=e.ma?G(o,typeof e.ma=="object"?e.ma:{}):null,r=e.macd?J(o,typeof e.macd=="object"?e.macd:{}):null,i=e.boll?Z(o,typeof e.boll=="object"?e.boll:{}):null,a=e.kdj?Y(s,typeof e.kdj=="object"?e.kdj:{}):null,l=e.rsi?X(o,typeof e.rsi=="object"?e.rsi:{}):null,c=e.wr?tt(s,typeof e.wr=="object"?e.wr:{}):null,f=e.bias?et(o,typeof e.bias=="object"?e.bias:{}):null,d=e.cci?nt(s,typeof e.cci=="object"?e.cci:{}):null,p=e.atr?rt(s,typeof e.atr=="object"?e.atr:{}):null;return t.map((m,h)=>({...m,...n&&{ma:n[h]},...r&&{macd:r[h]},...i&&{boll:i[h]},...a&&{kdj:a[h]},...l&&{rsi:l[h]},...c&&{wr:c[h]},...f&&{bias:f[h]},...d&&{cci:d[h]},...p&&{atr:p[h]}}))}var st=class{constructor(e={}){this.client=new z(e)}getFullQuotes(e){return A.getFullQuotes(this.client,e)}getSimpleQuotes(e){return A.getSimpleQuotes(this.client,e)}getHKQuotes(e){return A.getHKQuotes(this.client,e)}getUSQuotes(e){return A.getUSQuotes(this.client,e)}getFundQuotes(e){return A.getFundQuotes(this.client,e)}getFundFlow(e){return A.getFundFlow(this.client,e)}getPanelLargeOrder(e){return A.getPanelLargeOrder(this.client,e)}getTodayTimeline(e){return A.getTodayTimeline(this.client,e)}getIndustryList(){return P.getIndustryList(this.client)}getIndustrySpot(e){return P.getIndustrySpot(this.client,e)}getIndustryConstituents(e){return P.getIndustryConstituents(this.client,e)}getIndustryKline(e,o){return P.getIndustryKline(this.client,e,o)}getIndustryMinuteKline(e,o){return P.getIndustryMinuteKline(this.client,e,o)}getConceptList(){return P.getConceptList(this.client)}getConceptSpot(e){return P.getConceptSpot(this.client,e)}getConceptConstituents(e){return P.getConceptConstituents(this.client,e)}getConceptKline(e,o){return P.getConceptKline(this.client,e,o)}getConceptMinuteKline(e,o){return P.getConceptMinuteKline(this.client,e,o)}getHistoryKline(e,o){return P.getHistoryKline(this.client,e,o)}getMinuteKline(e,o){return P.getMinuteKline(this.client,e,o)}getHKHistoryKline(e,o){return P.getHKHistoryKline(this.client,e,o)}getUSHistoryKline(e,o){return P.getUSHistoryKline(this.client,e,o)}getAShareCodeList(e=!0){return A.getAShareCodeList(this.client,e)}getUSCodeList(e=!0){return A.getUSCodeList(this.client,e)}getHKCodeList(){return A.getHKCodeList(this.client)}async getAllAShareQuotes(e={}){let o=await this.getAShareCodeList();return this.getAllQuotesByCodes(o,e)}async getAllHKShareQuotes(e={}){let o=await this.getHKCodeList();return A.getAllHKQuotesByCodes(this.client,o,e)}async getAllUSShareQuotes(e={}){let o=await this.getUSCodeList(!1);return A.getAllUSQuotesByCodes(this.client,o,e)}getAllQuotesByCodes(e,o={}){return A.getAllQuotesByCodes(this.client,e,o)}async batchRaw(e){return this.client.getTencentQuote(e)}detectMarket(e){return/^\d{3}\.[A-Z]+$/i.test(e)?"US":/^\d{5}$/.test(e)?"HK":"A"}safeMax(e,o=0){return!e||e.length===0?o:Math.max(...e)}calcRequiredLookback(e){let o=0,s=!1;if(e.ma){let r=typeof e.ma=="object"?e.ma:{},i=r.periods??[5,10,20,30,60,120,250],a=r.type??"sma";o=Math.max(o,this.safeMax(i,20)),a==="ema"&&(s=!0)}if(e.macd){let r=typeof e.macd=="object"?e.macd:{},i=r.long??26,a=r.signal??9;o=Math.max(o,i*3+a),s=!0}if(e.boll){let r=typeof e.boll=="object"&&e.boll.period?e.boll.period:20;o=Math.max(o,r)}if(e.kdj){let r=typeof e.kdj=="object"&&e.kdj.period?e.kdj.period:9;o=Math.max(o,r)}if(e.rsi){let r=typeof e.rsi=="object"&&e.rsi.periods?e.rsi.periods:[6,12,24];o=Math.max(o,this.safeMax(r,14)+1)}if(e.wr){let r=typeof e.wr=="object"&&e.wr.periods?e.wr.periods:[6,10];o=Math.max(o,this.safeMax(r,10))}if(e.bias){let r=typeof e.bias=="object"&&e.bias.periods?e.bias.periods:[6,12,24];o=Math.max(o,this.safeMax(r,12))}if(e.cci){let r=typeof e.cci=="object"&&e.cci.period?e.cci.period:14;o=Math.max(o,r)}if(e.atr){let r=typeof e.atr=="object"&&e.atr.period?e.atr.period:14;o=Math.max(o,r)}return Math.ceil(o*(s?1.5:1.2))}calcActualStartDate(e,o,s=1.5){let n=Math.ceil(o*s),r=new Date(parseInt(e.slice(0,4)),parseInt(e.slice(4,6))-1,parseInt(e.slice(6,8)));r.setDate(r.getDate()-n);let i=r.getFullYear(),a=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0");return`${i}${a}${l}`}dateToTimestamp(e){let o=e.includes("-")?e:`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`;return new Date(o).getTime()}async getKlineWithIndicators(e,o={}){let{startDate:s,endDate:n,indicators:r={}}=o,i=o.market??this.detectMarket(e),a=this.calcRequiredLookback(r),c={A:1.5,HK:1.46,US:1.45}[i],f=s?this.calcActualStartDate(s,a,c):void 0,d={period:o.period,adjust:o.adjust,startDate:f,endDate:o.endDate},p;switch(i){case"HK":p=await this.getHKHistoryKline(e,d);break;case"US":p=await this.getUSHistoryKline(e,d);break;default:p=await this.getHistoryKline(e,d)}if(s&&p.length<a)switch(i){case"HK":p=await this.getHKHistoryKline(e,{...d,startDate:void 0});break;case"US":p=await this.getUSHistoryKline(e,{...d,startDate:void 0});break;default:p=await this.getHistoryKline(e,{...d,startDate:void 0})}let m=ot(p,r);if(s){let h=this.dateToTimestamp(s),y=n?this.dateToTimestamp(n):1/0;return m.filter(R=>{let S=this.dateToTimestamp(R.date);return S>=h&&S<=y})}return m}},we=st;0&&(module.exports={StockSDK,addIndicators,asyncPool,calcATR,calcBIAS,calcBOLL,calcCCI,calcEMA,calcKDJ,calcMA,calcMACD,calcRSI,calcSMA,calcWMA,calcWR,chunkArray,decodeGBK,parseResponse,safeNumber,safeNumberOrNull});
|
|
1
|
+
"use strict";var yt=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Pe=Object.prototype.hasOwnProperty;var Ct=(t,e)=>{for(var r in e)yt(t,r,{get:e[r],enumerable:!0})},Le=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ae(e))!Pe.call(t,n)&&n!==r&&yt(t,n,{get:()=>e[n],enumerable:!(s=Ke(e,n))||s.enumerable});return t};var _e=t=>Le(yt({},"__esModule",{value:!0}),t);var je={};Ct(je,{StockSDK:()=>st,addIndicators:()=>ot,asyncPool:()=>D,calcATR:()=>rt,calcBIAS:()=>et,calcBOLL:()=>Z,calcCCI:()=>nt,calcEMA:()=>q,calcKDJ:()=>Y,calcMA:()=>G,calcMACD:()=>J,calcRSI:()=>X,calcSMA:()=>B,calcWMA:()=>gt,calcWR:()=>tt,chunkArray:()=>v,decodeGBK:()=>N,default:()=>Me,parseResponse:()=>Q,safeNumber:()=>g,safeNumberOrNull:()=>C});module.exports=_e(je);function N(t){return new TextDecoder("gbk").decode(t)}function Q(t){let e=t.split(";").map(s=>s.trim()).filter(Boolean),r=[];for(let s of e){let n=s.indexOf("=");if(n<0)continue;let o=s.slice(0,n).trim();o.startsWith("v_")&&(o=o.slice(2));let i=s.slice(n+1).trim();i.startsWith('"')&&i.endsWith('"')&&(i=i.slice(1,-1));let a=i.split("~");r.push({key:o,fields:a})}return r}function g(t){if(!t||t==="")return 0;let e=parseFloat(t);return Number.isNaN(e)?0:e}function C(t){if(!t||t==="")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}function u(t){if(!t||t===""||t==="-")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}var Rt="https://qt.gtimg.cn",St="https://web.ifzq.gtimg.cn/appstock/app/minute/query",bt="https://assets.linkdiary.cn/shares/zh_a_list.json",wt="https://assets.linkdiary.cn/shares/us_list.json",Tt="https://assets.linkdiary.cn/shares/hk_list.json",Jt="https://assets.linkdiary.cn/shares/trade-data-list.txt";var it="https://push2his.eastmoney.com/api/qt/stock/kline/get",Mt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",Kt="https://33.push2his.eastmoney.com/api/qt/stock/kline/get",At="https://63.push2his.eastmoney.com/api/qt/stock/kline/get",Pt="https://17.push2.eastmoney.com/api/qt/clist/get",Lt="https://91.push2.eastmoney.com/api/qt/stock/get",_t="https://29.push2.eastmoney.com/api/qt/clist/get",at="https://7.push2his.eastmoney.com/api/qt/stock/kline/get",kt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",It="https://79.push2.eastmoney.com/api/qt/clist/get",xt="https://91.push2.eastmoney.com/api/qt/stock/get",Ot="https://29.push2.eastmoney.com/api/qt/clist/get",lt="https://91.push2his.eastmoney.com/api/qt/stock/kline/get",Ut="https://push2his.eastmoney.com/api/qt/stock/trends2/get",Et=3e4,$=500,F=500,W=7;var z=class{constructor(e={}){this.baseUrl=e.baseUrl??Rt,this.timeout=e.timeout??Et}getTimeout(){return this.timeout}async get(e,r={}){let s=new AbortController,n=setTimeout(()=>s.abort(),this.timeout);try{let o=await fetch(e,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);switch(r.responseType){case"json":return await o.json();case"arraybuffer":return await o.arrayBuffer();default:return await o.text()}}finally{clearTimeout(n)}}async getTencentQuote(e){let r=`${this.baseUrl}/?q=${encodeURIComponent(e)}`,s=await this.get(r,{responseType:"arraybuffer"}),n=N(s);return Q(n)}};var ke=new Set(["daily","weekly","monthly"]),Ie=new Set(["1","5","15","30","60"]),xe=new Set(["","qfq","hfq"]);function E(t,e){if(!Number.isFinite(t)||!Number.isInteger(t)||t<=0)throw new RangeError(`${e} must be a positive integer`)}function U(t){if(!ke.has(t))throw new RangeError("period must be one of: daily, weekly, monthly")}function H(t){if(!Ie.has(t))throw new RangeError("period must be one of: 1, 5, 15, 30, 60")}function I(t){if(!xe.has(t))throw new RangeError("adjust must be one of: '', 'qfq', 'hfq'")}function v(t,e){E(e,"chunkSize");let r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r}async function D(t,e){E(e,"concurrency");let r=[],s=[];for(let n of t){let o=Promise.resolve().then(()=>n()).then(i=>{r.push(i)});if(s.push(o),s.length>=e){await Promise.race(s);for(let i=s.length-1;i>=0;i--)await Promise.race([s[i].then(()=>"fulfilled"),Promise.resolve("pending")])==="fulfilled"&&s.splice(i,1)}}return await Promise.all(s),r}function ut(t){return t.startsWith("sh")?"1":t.startsWith("sz")||t.startsWith("bj")?"0":t.startsWith("6")?"1":"0"}var K={};Ct(K,{getAShareCodeList:()=>ne,getAllHKQuotesByCodes:()=>ie,getAllQuotesByCodes:()=>se,getAllUSQuotesByCodes:()=>ae,getFullQuotes:()=>ct,getFundFlow:()=>Yt,getFundQuotes:()=>te,getHKCodeList:()=>oe,getHKQuotes:()=>ft,getPanelLargeOrder:()=>Xt,getSimpleQuotes:()=>Zt,getTodayTimeline:()=>ee,getTradingCalendar:()=>le,getUSCodeList:()=>re,getUSQuotes:()=>pt,parseFullQuote:()=>Bt,parseFundFlow:()=>jt,parseFundQuote:()=>Nt,parseHKQuote:()=>vt,parsePanelLargeOrder:()=>Ht,parseSimpleQuote:()=>qt,parseUSQuote:()=>Dt});function Bt(t){let e=[];for(let s=0;s<5;s++)e.push({price:g(t[9+s*2]),volume:g(t[10+s*2])});let r=[];for(let s=0;s<5;s++)r.push({price:g(t[19+s*2]),volume:g(t[20+s*2])});return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),outerVolume:g(t[7]),innerVolume:g(t[8]),bid:e,ask:r,time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),volume2:g(t[36]),amount:g(t[37]),turnoverRate:C(t[38]),pe:C(t[39]),amplitude:C(t[43]),circulatingMarketCap:C(t[44]),totalMarketCap:C(t[45]),pb:C(t[46]),limitUp:C(t[47]),limitDown:C(t[48]),volumeRatio:C(t[49]),avgPrice:C(t[51]),peStatic:C(t[52]),peDynamic:C(t[53]),high52w:C(t[67]),low52w:C(t[68]),circulatingShares:C(t[72]),totalShares:C(t[73]),raw:t}}function qt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),change:g(t[4]),changePercent:g(t[5]),volume:g(t[6]),amount:g(t[7]),marketCap:C(t[9]),marketType:t[10]??"",raw:t}}function jt(t){return{code:t[0]??"",mainInflow:g(t[1]),mainOutflow:g(t[2]),mainNet:g(t[3]),mainNetRatio:g(t[4]),retailInflow:g(t[5]),retailOutflow:g(t[6]),retailNet:g(t[7]),retailNetRatio:g(t[8]),totalFlow:g(t[9]),name:t[12]??"",date:t[13]??"",raw:t}}function Ht(t){return{buyLargeRatio:g(t[0]),buySmallRatio:g(t[1]),sellLargeRatio:g(t[2]),sellSmallRatio:g(t[3]),raw:t}}function vt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),lotSize:C(t[40]),circulatingMarketCap:C(t[44]),totalMarketCap:C(t[45]),currency:t[t.length-3]??"",raw:t}}function Dt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),turnoverRate:C(t[38]),pe:C(t[39]),amplitude:C(t[43]),totalMarketCap:C(t[45]),pb:C(t[47]),high52w:C(t[48]),low52w:C(t[49]),raw:t}}function Nt(t){return{code:t[0]??"",name:t[1]??"",nav:g(t[5]),accNav:g(t[6]),change:g(t[7]),navDate:t[8]??"",raw:t}}async function ct(t,e){return!e||e.length===0?[]:(await t.getTencentQuote(e.join(","))).filter(s=>s.fields&&s.fields.length>0&&s.fields[0]!=="").map(s=>Bt(s.fields))}async function Zt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`s_${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>qt(n.fields))}async function Yt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`ff_${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>jt(n.fields))}async function Xt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`s_pk${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Ht(n.fields))}async function ft(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`hk${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>vt(n.fields))}async function pt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`us${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Dt(n.fields))}async function te(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`jj${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Nt(n.fields))}async function ee(t,e){let r=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{let o=await fetch(`${St}?code=${e}`,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);let i=await o.json();if(i.code!==0)throw new Error(i.msg||"API error");let a=i.data?.[e];if(!a)return{code:e,date:"",data:[]};let l=a.data?.data||[],c=a.data?.date||"",f=!1;if(l.length>0){let p=l[0].split(" "),m=parseFloat(p[1])||0,h=parseInt(p[2],10)||0,y=parseFloat(p[3])||0;h>0&&m>0&&y/h>m*50&&(f=!0)}let d=l.map(p=>{let m=p.split(" "),h=m[0],y=`${h.slice(0,2)}:${h.slice(2,4)}`,R=parseInt(m[2],10)||0,S=parseFloat(m[3])||0,b=f?R*100:R,M=b>0?S/b:0;return{time:y,price:parseFloat(m[1])||0,volume:b,amount:S,avgPrice:Math.round(M*100)/100}});return{code:e,date:c,data:d}}finally{clearTimeout(n)}}async function ne(t,e=!0){let r=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{let o=await fetch(bt,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);let a=(await o.json()).list||[];return e?a:a.map(l=>l.replace(/^(sh|sz|bj)/,""))}finally{clearTimeout(n)}}async function re(t,e=!0){let r=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{let o=await fetch(wt,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);let a=(await o.json()).list||[];return e?a:a.map(l=>l.replace(/^\d{3}\./,""))}finally{clearTimeout(n)}}async function oe(t){let e=t.getTimeout(),r=new AbortController,s=setTimeout(()=>r.abort(),e);try{let n=await fetch(Tt,{signal:r.signal});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return(await n.json()).list||[]}finally{clearTimeout(s)}}async function se(t,e,r={}){let{batchSize:s=$,concurrency:n=W,onProgress:o}=r;E(s,"batchSize"),E(n,"concurrency");let i=Math.min(s,F),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await ct(t,p);return c++,o&&o(c,l),m});return(await D(f,n)).flat()}async function ie(t,e,r={}){let{batchSize:s=$,concurrency:n=W,onProgress:o}=r;E(s,"batchSize"),E(n,"concurrency");let i=Math.min(s,F),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await ft(t,p);return c++,o&&o(c,l),m});return(await D(f,n)).flat()}async function ae(t,e,r={}){let{batchSize:s=$,concurrency:n=W,onProgress:o}=r;E(s,"batchSize"),E(n,"concurrency");let i=Math.min(s,F),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await pt(t,p);return c++,o&&o(c,l),m});return(await D(f,n)).flat()}async function le(t){let e=await t.get(Jt);return!e||e.trim()===""?[]:e.trim().split(",").map(r=>r.trim()).filter(r=>r.length>0)}var P={};Ct(P,{getConceptConstituents:()=>Se,getConceptKline:()=>be,getConceptList:()=>Wt,getConceptMinuteKline:()=>we,getConceptSpot:()=>Re,getHKHistoryKline:()=>fe,getHistoryKline:()=>ue,getIndustryConstituents:()=>ge,getIndustryKline:()=>he,getIndustryList:()=>$t,getIndustryMinuteKline:()=>ye,getIndustrySpot:()=>me,getMinuteKline:()=>ce,getUSHistoryKline:()=>pe});async function ue(t,e,r={}){let{period:s="daily",adjust:n="hfq",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`${ut(e)}.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:o,end:i}),p=`${it}?${d.toString()}`,h=(await t.get(p,{responseType:"json"}))?.data?.klines;return!Array.isArray(h)||h.length===0?[]:h.map(y=>{let[R,S,b,M,A,L,_,k,x,O,j]=y.split(",");return{date:R,code:a,open:u(S),close:u(b),high:u(M),low:u(A),volume:u(L),amount:u(_),amplitude:u(k),changePercent:u(x),change:u(O),turnoverRate:u(j)}})}async function ce(t,e,r={}){let{period:s="1",adjust:n="hfq",startDate:o="1979-09-01 09:32:00",endDate:i="2222-01-01 09:32:00"}=r;H(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l=`${ut(e)}.${a}`;if(s==="1"){let c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",ut:"7eea3edcaed734bea9cbfc24409ed989",ndays:"5",iscr:"0",secid:l}),f=`${Mt}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data?.trends;if(!Array.isArray(p)||p.length===0)return[];let m=o.replace("T"," ").slice(0,16),h=i.replace("T"," ").slice(0,16);return p.map(y=>{let[R,S,b,M,A,L,_,k]=y.split(",");return{time:R,open:u(S),close:u(b),high:u(M),low:u(A),volume:u(L),amount:u(_),avgPrice:u(k)}}).filter(y=>y.time>=m&&y.time<=h)}else{let c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:s,fqt:c[n],secid:l,beg:"0",end:"20500000"}),d=`${it}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;if(!Array.isArray(m)||m.length===0)return[];let h=o.replace("T"," ").slice(0,16),y=i.replace("T"," ").slice(0,16);return m.map(R=>{let[S,b,M,A,L,_,k,x,O,j,ht]=R.split(",");return{time:S,open:u(b),close:u(M),high:u(A),low:u(L),changePercent:u(O),change:u(j),volume:u(_),amount:u(k),amplitude:u(x),turnoverRate:u(ht)}}).filter(R=>R.time>=h&&R.time<=y)}}async function fe(t,e,r={}){let{period:s="daily",adjust:n="hfq",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=e.replace(/^hk/i,"").padStart(5,"0"),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`116.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:o,end:i,lmt:"1000000"}),p=`${Kt}?${d.toString()}`,m=await t.get(p,{responseType:"json"}),h=m?.data?.klines,y=m?.data?.name||"";return!Array.isArray(h)||h.length===0?[]:h.map(R=>{let[S,b,M,A,L,_,k,x,O,j,ht]=R.split(",");return{date:S,code:a,name:y,open:u(b),close:u(M),high:u(A),low:u(L),volume:u(_),amount:u(k),amplitude:u(x),changePercent:u(O),change:u(j),turnoverRate:u(ht)}})}async function pe(t,e,r={}){let{period:s="daily",adjust:n="hfq",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a={daily:"101",weekly:"102",monthly:"103"},l={"":"0",qfq:"1",hfq:"2"},c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:a[s],fqt:l[n],secid:e,beg:o,end:i,lmt:"1000000"}),f=`${At}?${c.toString()}`,d=await t.get(f,{responseType:"json"}),p=d?.data?.klines,m=d?.data?.code||e.split(".")[1]||e,h=d?.data?.name||"";return!Array.isArray(p)||p.length===0?[]:p.map(y=>{let[R,S,b,M,A,L,_,k,x,O,j]=y.split(",");return{date:R,code:m,name:h,open:u(S),close:u(b),high:u(M),low:u(A),volume:u(L),amount:u(_),amplitude:u(k),changePercent:u(x),change:u(O),turnoverRate:u(j)}})}var Qt=null;async function dt(t,e){if(e.startsWith("BK"))return e;if(!Qt){let s=await $t(t);Qt=new Map(s.map(n=>[n.name,n.code]))}let r=Qt.get(e);if(!r)throw new Error(`\u672A\u627E\u5230\u884C\u4E1A\u677F\u5757: ${e}`);return r}function w(t){if(t==null)return null;let e=String(t);return u(e)}async function de(t,e,r,s,n=100,o){let i=[],a=1,l=0;do{let c=new URLSearchParams({...r,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>o(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function $t(t){let s=await de(t,Pt,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:"m:90 t:2 f:!50"},"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,f140,f141,f207,f208,f209,f222",100,(n,o)=>({rank:o,name:String(n.f14??""),code:String(n.f12??""),price:w(n.f2),change:w(n.f4),changePercent:w(n.f3),totalMarketCap:w(n.f20),turnoverRate:w(n.f8),riseCount:w(n.f104),fallCount:w(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:w(n.f136)}));return s.sort((n,o)=>(o.changePercent??0)-(n.changePercent??0)),s.forEach((n,o)=>{n.rank=o+1}),s}async function me(t,e){let r=await dt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${r}`}),n=`${Lt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function ge(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:`b:${await dt(t,e)} f:!50`};return de(t,_t,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(o,i)=>({rank:i,code:String(o.f12??""),name:String(o.f14??""),price:w(o.f2),changePercent:w(o.f3),change:w(o.f4),volume:w(o.f5),amount:w(o.f6),amplitude:w(o.f7),high:w(o.f15),low:w(o.f16),open:w(o.f17),prevClose:w(o.f18),turnoverRate:w(o.f8),pe:w(o.f9),pb:w(o.f23)}))}async function he(t,e,r={}){let{period:s="daily",adjust:n="",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=await dt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:o,end:i,smplmt:"10000",lmt:"1000000"}),d=`${at}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,R,S,b,M,A,L,_,k,x,O]=h.split(",");return{date:y,open:u(R),close:u(S),high:u(b),low:u(M),changePercent:u(k),change:u(x),volume:u(A),amount:u(L),amplitude:u(_),turnoverRate:u(O)}})}async function ye(t,e,r={}){let{period:s="5"}=r;H(s);let n=await dt(t,e);if(s==="1"){let o=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${kt}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(R),price:u(S)}})}else{let o=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${at}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S,b,M,A]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(M),volume:u(y),amount:u(R),amplitude:u(S),turnoverRate:u(A)}})}}var Ft=null;function T(t){if(t==null)return null;let e=String(t);return u(e)}async function mt(t,e){if(e.startsWith("BK"))return e;if(!Ft){let s=await Wt(t);Ft=new Map(s.map(n=>[n.name,n.code]))}let r=Ft.get(e);if(!r)throw new Error(`\u672A\u627E\u5230\u6982\u5FF5\u677F\u5757: ${e}`);return r}async function Ce(t,e,r,s,n=100,o){let i=[],a=1,l=0;do{let c=new URLSearchParams({...r,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>o(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function Wt(t){let s=await Ce(t,It,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:"m:90 t:3 f:!50"},"f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",100,(n,o)=>({rank:o,name:String(n.f14??""),code:String(n.f12??""),price:T(n.f2),change:T(n.f4),changePercent:T(n.f3),totalMarketCap:T(n.f20),turnoverRate:T(n.f8),riseCount:T(n.f104),fallCount:T(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:T(n.f136)}));return s.sort((n,o)=>(o.changePercent??0)-(n.changePercent??0)),s.forEach((n,o)=>{n.rank=o+1}),s}async function Re(t,e){let r=await mt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${r}`}),n=`${xt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function Se(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:`b:${await mt(t,e)} f:!50`};return Ce(t,Ot,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(o,i)=>({rank:i,code:String(o.f12??""),name:String(o.f14??""),price:T(o.f2),changePercent:T(o.f3),change:T(o.f4),volume:T(o.f5),amount:T(o.f6),amplitude:T(o.f7),high:T(o.f15),low:T(o.f16),open:T(o.f17),prevClose:T(o.f18),turnoverRate:T(o.f8),pe:T(o.f9),pb:T(o.f23)}))}async function be(t,e,r={}){let{period:s="daily",adjust:n="",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=await mt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:o,end:i,smplmt:"10000",lmt:"1000000"}),d=`${lt}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,R,S,b,M,A,L,_,k,x,O]=h.split(",");return{date:y,open:u(R),close:u(S),high:u(b),low:u(M),changePercent:u(k),change:u(x),volume:u(A),amount:u(L),amplitude:u(_),turnoverRate:u(O)}})}async function we(t,e,r={}){let{period:s="5"}=r;H(s);let n=await mt(t,e);if(s==="1"){let o=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${Ut}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(R),price:u(S)}})}else{let o=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${lt}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,R,S,b,M,A]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(M),volume:u(y),amount:u(R),amplitude:u(S),turnoverRate:u(A)}})}}function V(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function B(t,e){let r=[];for(let s=0;s<t.length;s++){if(s<e-1){r.push(null);continue}let n=0,o=0;for(let i=s-e+1;i<=s;i++)t[i]!==null&&(n+=t[i],o++);r.push(o===e?V(n/e):null)}return r}function q(t,e){let r=[],s=2/(e+1),n=null,o=!1;for(let i=0;i<t.length;i++){if(i<e-1){r.push(null);continue}if(!o){let l=0,c=0;for(let f=i-e+1;f<=i;f++)t[f]!==null&&(l+=t[f],c++);c===e&&(n=l/e,o=!0),r.push(n!==null?V(n):null);continue}let a=t[i];a===null?r.push(n!==null?V(n):null):(n=s*a+(1-s)*n,r.push(V(n)))}return r}function gt(t,e){let r=[],s=Array.from({length:e},(o,i)=>i+1),n=s.reduce((o,i)=>o+i,0);for(let o=0;o<t.length;o++){if(o<e-1){r.push(null);continue}let i=0,a=!0;for(let l=0;l<e;l++){let c=t[o-e+1+l];if(c===null){a=!1;break}i+=c*s[l]}r.push(a?V(i/n):null)}return r}function G(t,e={}){let{periods:r=[5,10,20,30,60,120,250],type:s="sma"}=e,n=s==="ema"?q:s==="wma"?gt:B,o={};for(let i of r)o[`ma${i}`]=n(t,i);return t.map((i,a)=>{let l={};for(let c of r)l[`ma${c}`]=o[`ma${c}`][a];return l})}function Te(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function J(t,e={}){let{short:r=12,long:s=26,signal:n=9}=e,o=q(t,r),i=q(t,s),a=t.map((c,f)=>o[f]===null||i[f]===null?null:o[f]-i[f]),l=q(a,n);return t.map((c,f)=>({dif:a[f]!==null?Te(a[f]):null,dea:l[f],macd:a[f]!==null&&l[f]!==null?Te((a[f]-l[f])*2):null}))}function zt(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function Oe(t,e,r){let s=[];for(let n=0;n<t.length;n++){if(n<e-1||r[n]===null){s.push(null);continue}let o=0,i=0;for(let a=n-e+1;a<=n;a++)t[a]!==null&&r[n]!==null&&(o+=Math.pow(t[a]-r[n],2),i++);s.push(i===e?Math.sqrt(o/e):null)}return s}function Z(t,e={}){let{period:r=20,stdDev:s=2}=e,n=B(t,r),o=Oe(t,r,n);return t.map((i,a)=>{if(n[a]===null||o[a]===null)return{mid:null,upper:null,lower:null,bandwidth:null};let l=n[a]+s*o[a],c=n[a]-s*o[a],f=n[a]!==0?zt((l-c)/n[a]*100):null;return{mid:n[a],upper:zt(l),lower:zt(c),bandwidth:f}})}function Vt(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function Y(t,e={}){let{period:r=9,kPeriod:s=3,dPeriod:n=3}=e,o=[],i=50,a=50;for(let l=0;l<t.length;l++){if(l<r-1){o.push({k:null,d:null,j:null});continue}let c=-1/0,f=1/0,d=!0;for(let y=l-r+1;y<=l;y++){if(t[y].high===null||t[y].low===null){d=!1;break}c=Math.max(c,t[y].high),f=Math.min(f,t[y].low)}let p=t[l].close;if(!d||p===null||c===f){o.push({k:null,d:null,j:null});continue}let m=(p-f)/(c-f)*100;i=(s-1)/s*i+1/s*m,a=(n-1)/n*a+1/n*i;let h=3*i-2*a;o.push({k:Vt(i),d:Vt(a),j:Vt(h)})}return o}function Ue(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function X(t,e={}){let{periods:r=[6,12,24]}=e,s=[null];for(let o=1;o<t.length;o++)t[o]===null||t[o-1]===null?s.push(null):s.push(t[o]-t[o-1]);let n={};for(let o of r){let i=[],a=0,l=0;for(let c=0;c<t.length;c++){if(c<o){i.push(null),s[c]!==null&&(s[c]>0?a+=s[c]:l+=Math.abs(s[c]));continue}if(c===o)a=a/o,l=l/o;else{let f=s[c]??0,d=f>0?f:0,p=f<0?Math.abs(f):0;a=(a*(o-1)+d)/o,l=(l*(o-1)+p)/o}if(l===0)i.push(100);else if(a===0)i.push(0);else{let f=a/l;i.push(Ue(100-100/(1+f)))}}n[`rsi${o}`]=i}return t.map((o,i)=>{let a={};for(let l of r)a[`rsi${l}`]=n[`rsi${l}`][i];return a})}function Ee(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function tt(t,e={}){let{periods:r=[6,10]}=e,s={};for(let n of r){let o=[];for(let i=0;i<t.length;i++){if(i<n-1){o.push(null);continue}let a=-1/0,l=1/0,c=!0;for(let p=i-n+1;p<=i;p++){if(t[p].high===null||t[p].low===null){c=!1;break}a=Math.max(a,t[p].high),l=Math.min(l,t[p].low)}let f=t[i].close;if(!c||f===null||a===l){o.push(null);continue}let d=(a-f)/(a-l)*100;o.push(Ee(d))}s[`wr${n}`]=o}return t.map((n,o)=>{let i={};for(let a of r)i[`wr${a}`]=s[`wr${a}`][o];return i})}function Be(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function et(t,e={}){let{periods:r=[6,12,24]}=e,s={};for(let n of r){let o=B(t,n),i=[];for(let a=0;a<t.length;a++)if(t[a]===null||o[a]===null||o[a]===0)i.push(null);else{let l=(t[a]-o[a])/o[a]*100;i.push(Be(l))}s[`bias${n}`]=i}return t.map((n,o)=>{let i={};for(let a of r)i[`bias${a}`]=s[`bias${a}`][o];return i})}function qe(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function nt(t,e={}){let{period:r=14}=e,s=[],n=t.map(o=>o.high===null||o.low===null||o.close===null?null:(o.high+o.low+o.close)/3);for(let o=0;o<t.length;o++){if(o<r-1){s.push({cci:null});continue}let i=0,a=0;for(let d=o-r+1;d<=o;d++)n[d]!==null&&(i+=n[d],a++);if(a!==r||n[o]===null){s.push({cci:null});continue}let l=i/r,c=0;for(let d=o-r+1;d<=o;d++)c+=Math.abs(n[d]-l);let f=c/r;if(f===0)s.push({cci:0});else{let d=(n[o]-l)/(.015*f);s.push({cci:qe(d)})}}return s}function Gt(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function rt(t,e={}){let{period:r=14}=e,s=[],n=[];for(let i=0;i<t.length;i++){let{high:a,low:l,close:c}=t[i];if(a===null||l===null||c===null){n.push(null);continue}if(i===0)n.push(a-l);else{let f=t[i-1].close;if(f===null)n.push(a-l);else{let d=a-l,p=Math.abs(a-f),m=Math.abs(l-f);n.push(Math.max(d,p,m))}}}let o=null;for(let i=0;i<t.length;i++){if(i<r-1){s.push({tr:n[i]!==null?Gt(n[i]):null,atr:null});continue}if(i===r-1){let a=0,l=0;for(let c=0;c<r;c++)n[c]!==null&&(a+=n[c],l++);l===r&&(o=a/r)}else o!==null&&n[i]!==null&&(o=(o*(r-1)+n[i])/r);s.push({tr:n[i]!==null?Gt(n[i]):null,atr:o!==null?Gt(o):null})}return s}function ot(t,e={}){if(t.length===0)return[];let r=t.map(m=>m.close),s=t.map(m=>({open:m.open,high:m.high,low:m.low,close:m.close,volume:m.volume})),n=e.ma?G(r,typeof e.ma=="object"?e.ma:{}):null,o=e.macd?J(r,typeof e.macd=="object"?e.macd:{}):null,i=e.boll?Z(r,typeof e.boll=="object"?e.boll:{}):null,a=e.kdj?Y(s,typeof e.kdj=="object"?e.kdj:{}):null,l=e.rsi?X(r,typeof e.rsi=="object"?e.rsi:{}):null,c=e.wr?tt(s,typeof e.wr=="object"?e.wr:{}):null,f=e.bias?et(r,typeof e.bias=="object"?e.bias:{}):null,d=e.cci?nt(s,typeof e.cci=="object"?e.cci:{}):null,p=e.atr?rt(s,typeof e.atr=="object"?e.atr:{}):null;return t.map((m,h)=>({...m,...n&&{ma:n[h]},...o&&{macd:o[h]},...i&&{boll:i[h]},...a&&{kdj:a[h]},...l&&{rsi:l[h]},...c&&{wr:c[h]},...f&&{bias:f[h]},...d&&{cci:d[h]},...p&&{atr:p[h]}}))}var st=class{constructor(e={}){this.client=new z(e)}getFullQuotes(e){return K.getFullQuotes(this.client,e)}getSimpleQuotes(e){return K.getSimpleQuotes(this.client,e)}getHKQuotes(e){return K.getHKQuotes(this.client,e)}getUSQuotes(e){return K.getUSQuotes(this.client,e)}getFundQuotes(e){return K.getFundQuotes(this.client,e)}getFundFlow(e){return K.getFundFlow(this.client,e)}getPanelLargeOrder(e){return K.getPanelLargeOrder(this.client,e)}getTodayTimeline(e){return K.getTodayTimeline(this.client,e)}getIndustryList(){return P.getIndustryList(this.client)}getIndustrySpot(e){return P.getIndustrySpot(this.client,e)}getIndustryConstituents(e){return P.getIndustryConstituents(this.client,e)}getIndustryKline(e,r){return P.getIndustryKline(this.client,e,r)}getIndustryMinuteKline(e,r){return P.getIndustryMinuteKline(this.client,e,r)}getConceptList(){return P.getConceptList(this.client)}getConceptSpot(e){return P.getConceptSpot(this.client,e)}getConceptConstituents(e){return P.getConceptConstituents(this.client,e)}getConceptKline(e,r){return P.getConceptKline(this.client,e,r)}getConceptMinuteKline(e,r){return P.getConceptMinuteKline(this.client,e,r)}getHistoryKline(e,r){return P.getHistoryKline(this.client,e,r)}getMinuteKline(e,r){return P.getMinuteKline(this.client,e,r)}getHKHistoryKline(e,r){return P.getHKHistoryKline(this.client,e,r)}getUSHistoryKline(e,r){return P.getUSHistoryKline(this.client,e,r)}getAShareCodeList(e=!0){return K.getAShareCodeList(this.client,e)}getUSCodeList(e=!0){return K.getUSCodeList(this.client,e)}getHKCodeList(){return K.getHKCodeList(this.client)}async getAllAShareQuotes(e={}){let r=await this.getAShareCodeList();return this.getAllQuotesByCodes(r,e)}async getAllHKShareQuotes(e={}){let r=await this.getHKCodeList();return K.getAllHKQuotesByCodes(this.client,r,e)}async getAllUSShareQuotes(e={}){let r=await this.getUSCodeList(!1);return K.getAllUSQuotesByCodes(this.client,r,e)}getAllQuotesByCodes(e,r={}){return K.getAllQuotesByCodes(this.client,e,r)}async batchRaw(e){return this.client.getTencentQuote(e)}getTradingCalendar(){return K.getTradingCalendar(this.client)}detectMarket(e){return/^\d{3}\.[A-Z]+$/i.test(e)?"US":/^\d{5}$/.test(e)?"HK":"A"}safeMax(e,r=0){return!e||e.length===0?r:Math.max(...e)}calcRequiredLookback(e){let r=0,s=!1;if(e.ma){let o=typeof e.ma=="object"?e.ma:{},i=o.periods??[5,10,20,30,60,120,250],a=o.type??"sma";r=Math.max(r,this.safeMax(i,20)),a==="ema"&&(s=!0)}if(e.macd){let o=typeof e.macd=="object"?e.macd:{},i=o.long??26,a=o.signal??9;r=Math.max(r,i*3+a),s=!0}if(e.boll){let o=typeof e.boll=="object"&&e.boll.period?e.boll.period:20;r=Math.max(r,o)}if(e.kdj){let o=typeof e.kdj=="object"&&e.kdj.period?e.kdj.period:9;r=Math.max(r,o)}if(e.rsi){let o=typeof e.rsi=="object"&&e.rsi.periods?e.rsi.periods:[6,12,24];r=Math.max(r,this.safeMax(o,14)+1)}if(e.wr){let o=typeof e.wr=="object"&&e.wr.periods?e.wr.periods:[6,10];r=Math.max(r,this.safeMax(o,10))}if(e.bias){let o=typeof e.bias=="object"&&e.bias.periods?e.bias.periods:[6,12,24];r=Math.max(r,this.safeMax(o,12))}if(e.cci){let o=typeof e.cci=="object"&&e.cci.period?e.cci.period:14;r=Math.max(r,o)}if(e.atr){let o=typeof e.atr=="object"&&e.atr.period?e.atr.period:14;r=Math.max(r,o)}return Math.ceil(r*(s?1.5:1.2))}calcActualStartDate(e,r,s=1.5){let n=Math.ceil(r*s),o=new Date(parseInt(e.slice(0,4)),parseInt(e.slice(4,6))-1,parseInt(e.slice(6,8)));o.setDate(o.getDate()-n);let i=o.getFullYear(),a=String(o.getMonth()+1).padStart(2,"0"),l=String(o.getDate()).padStart(2,"0");return`${i}${a}${l}`}dateToTimestamp(e){let r=e.includes("-")?e:`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`;return new Date(r).getTime()}async getKlineWithIndicators(e,r={}){let{startDate:s,endDate:n,indicators:o={}}=r,i=r.market??this.detectMarket(e),a=this.calcRequiredLookback(o),c={A:1.5,HK:1.46,US:1.45}[i],f=s?this.calcActualStartDate(s,a,c):void 0,d={period:r.period,adjust:r.adjust,startDate:f,endDate:r.endDate},p;switch(i){case"HK":p=await this.getHKHistoryKline(e,d);break;case"US":p=await this.getUSHistoryKline(e,d);break;default:p=await this.getHistoryKline(e,d)}if(s&&p.length<a)switch(i){case"HK":p=await this.getHKHistoryKline(e,{...d,startDate:void 0});break;case"US":p=await this.getUSHistoryKline(e,{...d,startDate:void 0});break;default:p=await this.getHistoryKline(e,{...d,startDate:void 0})}let m=ot(p,o);if(s){let h=this.dateToTimestamp(s),y=n?this.dateToTimestamp(n):1/0;return m.filter(R=>{let S=this.dateToTimestamp(R.date);return S>=h&&S<=y})}return m}},Me=st;0&&(module.exports={StockSDK,addIndicators,asyncPool,calcATR,calcBIAS,calcBOLL,calcCCI,calcEMA,calcKDJ,calcMA,calcMACD,calcRSI,calcSMA,calcWMA,calcWR,chunkArray,decodeGBK,parseResponse,safeNumber,safeNumberOrNull});
|
package/dist/index.d.cts
CHANGED
|
@@ -1062,6 +1062,11 @@ declare class StockSDK {
|
|
|
1062
1062
|
key: string;
|
|
1063
1063
|
fields: string[];
|
|
1064
1064
|
}[]>;
|
|
1065
|
+
/**
|
|
1066
|
+
* 获取 A 股交易日历
|
|
1067
|
+
* @returns 交易日期字符串数组,格式如 ['1990-12-19', '1990-12-20', ...]
|
|
1068
|
+
*/
|
|
1069
|
+
getTradingCalendar(): Promise<string[]>;
|
|
1065
1070
|
/**
|
|
1066
1071
|
* 市场类型识别
|
|
1067
1072
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -1062,6 +1062,11 @@ declare class StockSDK {
|
|
|
1062
1062
|
key: string;
|
|
1063
1063
|
fields: string[];
|
|
1064
1064
|
}[]>;
|
|
1065
|
+
/**
|
|
1066
|
+
* 获取 A 股交易日历
|
|
1067
|
+
* @returns 交易日期字符串数组,格式如 ['1990-12-19', '1990-12-20', ...]
|
|
1068
|
+
*/
|
|
1069
|
+
getTradingCalendar(): Promise<string[]>;
|
|
1065
1070
|
/**
|
|
1066
1071
|
* 市场类型识别
|
|
1067
1072
|
*/
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var be=Object.defineProperty;var Vt=(t,e)=>{for(var o in e)be(t,o,{get:e[o],enumerable:!0})};function z(t){return new TextDecoder("gbk").decode(t)}function V(t){let e=t.split(";").map(s=>s.trim()).filter(Boolean),o=[];for(let s of e){let n=s.indexOf("=");if(n<0)continue;let r=s.slice(0,n).trim();r.startsWith("v_")&&(r=r.slice(2));let i=s.slice(n+1).trim();i.startsWith('"')&&i.endsWith('"')&&(i=i.slice(1,-1));let a=i.split("~");o.push({key:r,fields:a})}return o}function g(t){if(!t||t==="")return 0;let e=parseFloat(t);return Number.isNaN(e)?0:e}function R(t){if(!t||t==="")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}function u(t){if(!t||t===""||t==="-")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}var ht="https://qt.gtimg.cn",yt="https://web.ifzq.gtimg.cn/appstock/app/minute/query",Ct="https://assets.linkdiary.cn/shares/zh_a_list.json",Rt="https://assets.linkdiary.cn/shares/us_list.json",St="https://assets.linkdiary.cn/shares/hk_list.json";var G="https://push2his.eastmoney.com/api/qt/stock/kline/get",bt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",wt="https://33.push2his.eastmoney.com/api/qt/stock/kline/get",Mt="https://63.push2his.eastmoney.com/api/qt/stock/kline/get",Tt="https://17.push2.eastmoney.com/api/qt/clist/get",Kt="https://91.push2.eastmoney.com/api/qt/stock/get",At="https://29.push2.eastmoney.com/api/qt/clist/get",J="https://7.push2his.eastmoney.com/api/qt/stock/kline/get",Pt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",kt="https://79.push2.eastmoney.com/api/qt/clist/get",Lt="https://91.push2.eastmoney.com/api/qt/stock/get",_t="https://29.push2.eastmoney.com/api/qt/clist/get",Z="https://91.push2his.eastmoney.com/api/qt/stock/kline/get",It="https://push2his.eastmoney.com/api/qt/stock/trends2/get",xt=3e4,D=500,Q=500,$=7;var F=class{constructor(e={}){this.baseUrl=e.baseUrl??ht,this.timeout=e.timeout??xt}getTimeout(){return this.timeout}async get(e,o={}){let s=new AbortController,n=setTimeout(()=>s.abort(),this.timeout);try{let r=await fetch(e,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);switch(o.responseType){case"json":return await r.json();case"arraybuffer":return await r.arrayBuffer();default:return await r.text()}}finally{clearTimeout(n)}}async getTencentQuote(e){let o=`${this.baseUrl}/?q=${encodeURIComponent(e)}`,s=await this.get(o,{responseType:"arraybuffer"}),n=z(s);return V(n)}};var we=new Set(["daily","weekly","monthly"]),Me=new Set(["1","5","15","30","60"]),Te=new Set(["","qfq","hfq"]);function B(t,e){if(!Number.isFinite(t)||!Number.isInteger(t)||t<=0)throw new RangeError(`${e} must be a positive integer`)}function U(t){if(!we.has(t))throw new RangeError("period must be one of: daily, weekly, monthly")}function j(t){if(!Me.has(t))throw new RangeError("period must be one of: 1, 5, 15, 30, 60")}function I(t){if(!Te.has(t))throw new RangeError("adjust must be one of: '', 'qfq', 'hfq'")}function v(t,e){B(e,"chunkSize");let o=[];for(let s=0;s<t.length;s+=e)o.push(t.slice(s,s+e));return o}async function N(t,e){B(e,"concurrency");let o=[],s=[];for(let n of t){let r=Promise.resolve().then(()=>n()).then(i=>{o.push(i)});if(s.push(r),s.length>=e){await Promise.race(s);for(let i=s.length-1;i>=0;i--)await Promise.race([s[i].then(()=>"fulfilled"),Promise.resolve("pending")])==="fulfilled"&&s.splice(i,1)}}return await Promise.all(s),o}function Y(t){return t.startsWith("sh")?"1":t.startsWith("sz")||t.startsWith("bj")?"0":t.startsWith("6")?"1":"0"}var A={};Vt(A,{getAShareCodeList:()=>te,getAllHKQuotesByCodes:()=>oe,getAllQuotesByCodes:()=>re,getAllUSQuotesByCodes:()=>se,getFullQuotes:()=>X,getFundFlow:()=>Jt,getFundQuotes:()=>Yt,getHKCodeList:()=>ne,getHKQuotes:()=>tt,getPanelLargeOrder:()=>Zt,getSimpleQuotes:()=>Gt,getTodayTimeline:()=>Xt,getUSCodeList:()=>ee,getUSQuotes:()=>et,parseFullQuote:()=>Ot,parseFundFlow:()=>Bt,parseFundQuote:()=>Ht,parseHKQuote:()=>jt,parsePanelLargeOrder:()=>Et,parseSimpleQuote:()=>Ut,parseUSQuote:()=>qt});function Ot(t){let e=[];for(let s=0;s<5;s++)e.push({price:g(t[9+s*2]),volume:g(t[10+s*2])});let o=[];for(let s=0;s<5;s++)o.push({price:g(t[19+s*2]),volume:g(t[20+s*2])});return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),outerVolume:g(t[7]),innerVolume:g(t[8]),bid:e,ask:o,time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),volume2:g(t[36]),amount:g(t[37]),turnoverRate:R(t[38]),pe:R(t[39]),amplitude:R(t[43]),circulatingMarketCap:R(t[44]),totalMarketCap:R(t[45]),pb:R(t[46]),limitUp:R(t[47]),limitDown:R(t[48]),volumeRatio:R(t[49]),avgPrice:R(t[51]),peStatic:R(t[52]),peDynamic:R(t[53]),high52w:R(t[67]),low52w:R(t[68]),circulatingShares:R(t[72]),totalShares:R(t[73]),raw:t}}function Ut(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),change:g(t[4]),changePercent:g(t[5]),volume:g(t[6]),amount:g(t[7]),marketCap:R(t[9]),marketType:t[10]??"",raw:t}}function Bt(t){return{code:t[0]??"",mainInflow:g(t[1]),mainOutflow:g(t[2]),mainNet:g(t[3]),mainNetRatio:g(t[4]),retailInflow:g(t[5]),retailOutflow:g(t[6]),retailNet:g(t[7]),retailNetRatio:g(t[8]),totalFlow:g(t[9]),name:t[12]??"",date:t[13]??"",raw:t}}function Et(t){return{buyLargeRatio:g(t[0]),buySmallRatio:g(t[1]),sellLargeRatio:g(t[2]),sellSmallRatio:g(t[3]),raw:t}}function jt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),lotSize:R(t[40]),circulatingMarketCap:R(t[44]),totalMarketCap:R(t[45]),currency:t[t.length-3]??"",raw:t}}function qt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),turnoverRate:R(t[38]),pe:R(t[39]),amplitude:R(t[43]),totalMarketCap:R(t[45]),pb:R(t[47]),high52w:R(t[48]),low52w:R(t[49]),raw:t}}function Ht(t){return{code:t[0]??"",name:t[1]??"",nav:g(t[5]),accNav:g(t[6]),change:g(t[7]),navDate:t[8]??"",raw:t}}async function X(t,e){return!e||e.length===0?[]:(await t.getTencentQuote(e.join(","))).filter(s=>s.fields&&s.fields.length>0&&s.fields[0]!=="").map(s=>Ot(s.fields))}async function Gt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`s_${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Ut(n.fields))}async function Jt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`ff_${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Bt(n.fields))}async function Zt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`s_pk${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Et(n.fields))}async function tt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`hk${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>jt(n.fields))}async function et(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`us${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>qt(n.fields))}async function Yt(t,e){if(!e||e.length===0)return[];let o=e.map(n=>`jj${n}`);return(await t.getTencentQuote(o.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Ht(n.fields))}async function Xt(t,e){let o=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),o);try{let r=await fetch(`${yt}?code=${e}`,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let i=await r.json();if(i.code!==0)throw new Error(i.msg||"API error");let a=i.data?.[e];if(!a)return{code:e,date:"",data:[]};let l=a.data?.data||[],c=a.data?.date||"",f=!1;if(l.length>0){let p=l[0].split(" "),m=parseFloat(p[1])||0,h=parseInt(p[2],10)||0,y=parseFloat(p[3])||0;h>0&&m>0&&y/h>m*50&&(f=!0)}let d=l.map(p=>{let m=p.split(" "),h=m[0],y=`${h.slice(0,2)}:${h.slice(2,4)}`,C=parseInt(m[2],10)||0,S=parseFloat(m[3])||0,b=f?C*100:C,T=b>0?S/b:0;return{time:y,price:parseFloat(m[1])||0,volume:b,amount:S,avgPrice:Math.round(T*100)/100}});return{code:e,date:c,data:d}}finally{clearTimeout(n)}}async function te(t,e=!0){let o=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),o);try{let r=await fetch(Ct,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let a=(await r.json()).list||[];return e?a:a.map(l=>l.replace(/^(sh|sz|bj)/,""))}finally{clearTimeout(n)}}async function ee(t,e=!0){let o=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),o);try{let r=await fetch(Rt,{signal:s.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);let a=(await r.json()).list||[];return e?a:a.map(l=>l.replace(/^\d{3}\./,""))}finally{clearTimeout(n)}}async function ne(t){let e=t.getTimeout(),o=new AbortController,s=setTimeout(()=>o.abort(),e);try{let n=await fetch(St,{signal:o.signal});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return(await n.json()).list||[]}finally{clearTimeout(s)}}async function re(t,e,o={}){let{batchSize:s=D,concurrency:n=$,onProgress:r}=o;B(s,"batchSize"),B(n,"concurrency");let i=Math.min(s,Q),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await X(t,p);return c++,r&&r(c,l),m});return(await N(f,n)).flat()}async function oe(t,e,o={}){let{batchSize:s=D,concurrency:n=$,onProgress:r}=o;B(s,"batchSize"),B(n,"concurrency");let i=Math.min(s,Q),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await tt(t,p);return c++,r&&r(c,l),m});return(await N(f,n)).flat()}async function se(t,e,o={}){let{batchSize:s=D,concurrency:n=$,onProgress:r}=o;B(s,"batchSize"),B(n,"concurrency");let i=Math.min(s,Q),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await et(t,p);return c++,r&&r(c,l),m});return(await N(f,n)).flat()}var P={};Vt(P,{getConceptConstituents:()=>ye,getConceptKline:()=>Ce,getConceptList:()=>Qt,getConceptMinuteKline:()=>Re,getConceptSpot:()=>he,getHKHistoryKline:()=>le,getHistoryKline:()=>ie,getIndustryConstituents:()=>pe,getIndustryKline:()=>de,getIndustryList:()=>Nt,getIndustryMinuteKline:()=>me,getIndustrySpot:()=>fe,getMinuteKline:()=>ae,getUSHistoryKline:()=>ue});async function ie(t,e,o={}){let{period:s="daily",adjust:n="hfq",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`${Y(e)}.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:r,end:i}),p=`${G}?${d.toString()}`,h=(await t.get(p,{responseType:"json"}))?.data?.klines;return!Array.isArray(h)||h.length===0?[]:h.map(y=>{let[C,S,b,T,K,k,L,_,x,O,E]=y.split(",");return{date:C,code:a,open:u(S),close:u(b),high:u(T),low:u(K),volume:u(k),amount:u(L),amplitude:u(_),changePercent:u(x),change:u(O),turnoverRate:u(E)}})}async function ae(t,e,o={}){let{period:s="1",adjust:n="hfq",startDate:r="1979-09-01 09:32:00",endDate:i="2222-01-01 09:32:00"}=o;j(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l=`${Y(e)}.${a}`;if(s==="1"){let c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",ut:"7eea3edcaed734bea9cbfc24409ed989",ndays:"5",iscr:"0",secid:l}),f=`${bt}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data?.trends;if(!Array.isArray(p)||p.length===0)return[];let m=r.replace("T"," ").slice(0,16),h=i.replace("T"," ").slice(0,16);return p.map(y=>{let[C,S,b,T,K,k,L,_]=y.split(",");return{time:C,open:u(S),close:u(b),high:u(T),low:u(K),volume:u(k),amount:u(L),avgPrice:u(_)}}).filter(y=>y.time>=m&&y.time<=h)}else{let c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:s,fqt:c[n],secid:l,beg:"0",end:"20500000"}),d=`${G}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;if(!Array.isArray(m)||m.length===0)return[];let h=r.replace("T"," ").slice(0,16),y=i.replace("T"," ").slice(0,16);return m.map(C=>{let[S,b,T,K,k,L,_,x,O,E,gt]=C.split(",");return{time:S,open:u(b),close:u(T),high:u(K),low:u(k),changePercent:u(O),change:u(E),volume:u(L),amount:u(_),amplitude:u(x),turnoverRate:u(gt)}}).filter(C=>C.time>=h&&C.time<=y)}}async function le(t,e,o={}){let{period:s="daily",adjust:n="hfq",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=e.replace(/^hk/i,"").padStart(5,"0"),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`116.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:r,end:i,lmt:"1000000"}),p=`${wt}?${d.toString()}`,m=await t.get(p,{responseType:"json"}),h=m?.data?.klines,y=m?.data?.name||"";return!Array.isArray(h)||h.length===0?[]:h.map(C=>{let[S,b,T,K,k,L,_,x,O,E,gt]=C.split(",");return{date:S,code:a,name:y,open:u(b),close:u(T),high:u(K),low:u(k),volume:u(L),amount:u(_),amplitude:u(x),changePercent:u(O),change:u(E),turnoverRate:u(gt)}})}async function ue(t,e,o={}){let{period:s="daily",adjust:n="hfq",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a={daily:"101",weekly:"102",monthly:"103"},l={"":"0",qfq:"1",hfq:"2"},c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:a[s],fqt:l[n],secid:e,beg:r,end:i,lmt:"1000000"}),f=`${Mt}?${c.toString()}`,d=await t.get(f,{responseType:"json"}),p=d?.data?.klines,m=d?.data?.code||e.split(".")[1]||e,h=d?.data?.name||"";return!Array.isArray(p)||p.length===0?[]:p.map(y=>{let[C,S,b,T,K,k,L,_,x,O,E]=y.split(",");return{date:C,code:m,name:h,open:u(S),close:u(b),high:u(T),low:u(K),volume:u(k),amount:u(L),amplitude:u(_),changePercent:u(x),change:u(O),turnoverRate:u(E)}})}var vt=null;async function nt(t,e){if(e.startsWith("BK"))return e;if(!vt){let s=await Nt(t);vt=new Map(s.map(n=>[n.name,n.code]))}let o=vt.get(e);if(!o)throw new Error(`\u672A\u627E\u5230\u884C\u4E1A\u677F\u5757: ${e}`);return o}function w(t){if(t==null)return null;let e=String(t);return u(e)}async function ce(t,e,o,s,n=100,r){let i=[],a=1,l=0;do{let c=new URLSearchParams({...o,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>r(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function Nt(t){let s=await ce(t,Tt,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:"m:90 t:2 f:!50"},"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,f140,f141,f207,f208,f209,f222",100,(n,r)=>({rank:r,name:String(n.f14??""),code:String(n.f12??""),price:w(n.f2),change:w(n.f4),changePercent:w(n.f3),totalMarketCap:w(n.f20),turnoverRate:w(n.f8),riseCount:w(n.f104),fallCount:w(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:w(n.f136)}));return s.sort((n,r)=>(r.changePercent??0)-(n.changePercent??0)),s.forEach((n,r)=>{n.rank=r+1}),s}async function fe(t,e){let o=await nt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${o}`}),n=`${Kt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function pe(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:`b:${await nt(t,e)} f:!50`};return ce(t,At,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(r,i)=>({rank:i,code:String(r.f12??""),name:String(r.f14??""),price:w(r.f2),changePercent:w(r.f3),change:w(r.f4),volume:w(r.f5),amount:w(r.f6),amplitude:w(r.f7),high:w(r.f15),low:w(r.f16),open:w(r.f17),prevClose:w(r.f18),turnoverRate:w(r.f8),pe:w(r.f9),pb:w(r.f23)}))}async function de(t,e,o={}){let{period:s="daily",adjust:n="",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=await nt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:r,end:i,smplmt:"10000",lmt:"1000000"}),d=`${J}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,C,S,b,T,K,k,L,_,x,O]=h.split(",");return{date:y,open:u(C),close:u(S),high:u(b),low:u(T),changePercent:u(_),change:u(x),volume:u(K),amount:u(k),amplitude:u(L),turnoverRate:u(O)}})}async function me(t,e,o={}){let{period:s="5"}=o;j(s);let n=await nt(t,e);if(s==="1"){let r=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${Pt}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(C),price:u(S)}})}else{let r=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${J}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S,b,T,K]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(T),volume:u(y),amount:u(C),amplitude:u(S),turnoverRate:u(K)}})}}var Dt=null;function M(t){if(t==null)return null;let e=String(t);return u(e)}async function rt(t,e){if(e.startsWith("BK"))return e;if(!Dt){let s=await Qt(t);Dt=new Map(s.map(n=>[n.name,n.code]))}let o=Dt.get(e);if(!o)throw new Error(`\u672A\u627E\u5230\u6982\u5FF5\u677F\u5757: ${e}`);return o}async function ge(t,e,o,s,n=100,r){let i=[],a=1,l=0;do{let c=new URLSearchParams({...o,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>r(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function Qt(t){let s=await ge(t,kt,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:"m:90 t:3 f:!50"},"f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",100,(n,r)=>({rank:r,name:String(n.f14??""),code:String(n.f12??""),price:M(n.f2),change:M(n.f4),changePercent:M(n.f3),totalMarketCap:M(n.f20),turnoverRate:M(n.f8),riseCount:M(n.f104),fallCount:M(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:M(n.f136)}));return s.sort((n,r)=>(r.changePercent??0)-(n.changePercent??0)),s.forEach((n,r)=>{n.rank=r+1}),s}async function he(t,e){let o=await rt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${o}`}),n=`${Lt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function ye(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:`b:${await rt(t,e)} f:!50`};return ge(t,_t,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(r,i)=>({rank:i,code:String(r.f12??""),name:String(r.f14??""),price:M(r.f2),changePercent:M(r.f3),change:M(r.f4),volume:M(r.f5),amount:M(r.f6),amplitude:M(r.f7),high:M(r.f15),low:M(r.f16),open:M(r.f17),prevClose:M(r.f18),turnoverRate:M(r.f8),pe:M(r.f9),pb:M(r.f23)}))}async function Ce(t,e,o={}){let{period:s="daily",adjust:n="",startDate:r="19700101",endDate:i="20500101"}=o;U(s),I(n);let a=await rt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:r,end:i,smplmt:"10000",lmt:"1000000"}),d=`${Z}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,C,S,b,T,K,k,L,_,x,O]=h.split(",");return{date:y,open:u(C),close:u(S),high:u(b),low:u(T),changePercent:u(_),change:u(x),volume:u(K),amount:u(k),amplitude:u(L),turnoverRate:u(O)}})}async function Re(t,e,o={}){let{period:s="5"}=o;j(s);let n=await rt(t,e);if(s==="1"){let r=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${It}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(C),price:u(S)}})}else{let r=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${Z}?${r.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S,b,T,K]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(T),volume:u(y),amount:u(C),amplitude:u(S),turnoverRate:u(K)}})}}function W(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function q(t,e){let o=[];for(let s=0;s<t.length;s++){if(s<e-1){o.push(null);continue}let n=0,r=0;for(let i=s-e+1;i<=s;i++)t[i]!==null&&(n+=t[i],r++);o.push(r===e?W(n/e):null)}return o}function H(t,e){let o=[],s=2/(e+1),n=null,r=!1;for(let i=0;i<t.length;i++){if(i<e-1){o.push(null);continue}if(!r){let l=0,c=0;for(let f=i-e+1;f<=i;f++)t[f]!==null&&(l+=t[f],c++);c===e&&(n=l/e,r=!0),o.push(n!==null?W(n):null);continue}let a=t[i];a===null?o.push(n!==null?W(n):null):(n=s*a+(1-s)*n,o.push(W(n)))}return o}function $t(t,e){let o=[],s=Array.from({length:e},(r,i)=>i+1),n=s.reduce((r,i)=>r+i,0);for(let r=0;r<t.length;r++){if(r<e-1){o.push(null);continue}let i=0,a=!0;for(let l=0;l<e;l++){let c=t[r-e+1+l];if(c===null){a=!1;break}i+=c*s[l]}o.push(a?W(i/n):null)}return o}function ot(t,e={}){let{periods:o=[5,10,20,30,60,120,250],type:s="sma"}=e,n=s==="ema"?H:s==="wma"?$t:q,r={};for(let i of o)r[`ma${i}`]=n(t,i);return t.map((i,a)=>{let l={};for(let c of o)l[`ma${c}`]=r[`ma${c}`][a];return l})}function Se(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function st(t,e={}){let{short:o=12,long:s=26,signal:n=9}=e,r=H(t,o),i=H(t,s),a=t.map((c,f)=>r[f]===null||i[f]===null?null:r[f]-i[f]),l=H(a,n);return t.map((c,f)=>({dif:a[f]!==null?Se(a[f]):null,dea:l[f],macd:a[f]!==null&&l[f]!==null?Se((a[f]-l[f])*2):null}))}function Ft(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function Ke(t,e,o){let s=[];for(let n=0;n<t.length;n++){if(n<e-1||o[n]===null){s.push(null);continue}let r=0,i=0;for(let a=n-e+1;a<=n;a++)t[a]!==null&&o[n]!==null&&(r+=Math.pow(t[a]-o[n],2),i++);s.push(i===e?Math.sqrt(r/e):null)}return s}function it(t,e={}){let{period:o=20,stdDev:s=2}=e,n=q(t,o),r=Ke(t,o,n);return t.map((i,a)=>{if(n[a]===null||r[a]===null)return{mid:null,upper:null,lower:null,bandwidth:null};let l=n[a]+s*r[a],c=n[a]-s*r[a],f=n[a]!==0?Ft((l-c)/n[a]*100):null;return{mid:n[a],upper:Ft(l),lower:Ft(c),bandwidth:f}})}function Wt(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function at(t,e={}){let{period:o=9,kPeriod:s=3,dPeriod:n=3}=e,r=[],i=50,a=50;for(let l=0;l<t.length;l++){if(l<o-1){r.push({k:null,d:null,j:null});continue}let c=-1/0,f=1/0,d=!0;for(let y=l-o+1;y<=l;y++){if(t[y].high===null||t[y].low===null){d=!1;break}c=Math.max(c,t[y].high),f=Math.min(f,t[y].low)}let p=t[l].close;if(!d||p===null||c===f){r.push({k:null,d:null,j:null});continue}let m=(p-f)/(c-f)*100;i=(s-1)/s*i+1/s*m,a=(n-1)/n*a+1/n*i;let h=3*i-2*a;r.push({k:Wt(i),d:Wt(a),j:Wt(h)})}return r}function Ae(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function lt(t,e={}){let{periods:o=[6,12,24]}=e,s=[null];for(let r=1;r<t.length;r++)t[r]===null||t[r-1]===null?s.push(null):s.push(t[r]-t[r-1]);let n={};for(let r of o){let i=[],a=0,l=0;for(let c=0;c<t.length;c++){if(c<r){i.push(null),s[c]!==null&&(s[c]>0?a+=s[c]:l+=Math.abs(s[c]));continue}if(c===r)a=a/r,l=l/r;else{let f=s[c]??0,d=f>0?f:0,p=f<0?Math.abs(f):0;a=(a*(r-1)+d)/r,l=(l*(r-1)+p)/r}if(l===0)i.push(100);else if(a===0)i.push(0);else{let f=a/l;i.push(Ae(100-100/(1+f)))}}n[`rsi${r}`]=i}return t.map((r,i)=>{let a={};for(let l of o)a[`rsi${l}`]=n[`rsi${l}`][i];return a})}function Pe(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function ut(t,e={}){let{periods:o=[6,10]}=e,s={};for(let n of o){let r=[];for(let i=0;i<t.length;i++){if(i<n-1){r.push(null);continue}let a=-1/0,l=1/0,c=!0;for(let p=i-n+1;p<=i;p++){if(t[p].high===null||t[p].low===null){c=!1;break}a=Math.max(a,t[p].high),l=Math.min(l,t[p].low)}let f=t[i].close;if(!c||f===null||a===l){r.push(null);continue}let d=(a-f)/(a-l)*100;r.push(Pe(d))}s[`wr${n}`]=r}return t.map((n,r)=>{let i={};for(let a of o)i[`wr${a}`]=s[`wr${a}`][r];return i})}function ke(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function ct(t,e={}){let{periods:o=[6,12,24]}=e,s={};for(let n of o){let r=q(t,n),i=[];for(let a=0;a<t.length;a++)if(t[a]===null||r[a]===null||r[a]===0)i.push(null);else{let l=(t[a]-r[a])/r[a]*100;i.push(ke(l))}s[`bias${n}`]=i}return t.map((n,r)=>{let i={};for(let a of o)i[`bias${a}`]=s[`bias${a}`][r];return i})}function Le(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function ft(t,e={}){let{period:o=14}=e,s=[],n=t.map(r=>r.high===null||r.low===null||r.close===null?null:(r.high+r.low+r.close)/3);for(let r=0;r<t.length;r++){if(r<o-1){s.push({cci:null});continue}let i=0,a=0;for(let d=r-o+1;d<=r;d++)n[d]!==null&&(i+=n[d],a++);if(a!==o||n[r]===null){s.push({cci:null});continue}let l=i/o,c=0;for(let d=r-o+1;d<=r;d++)c+=Math.abs(n[d]-l);let f=c/o;if(f===0)s.push({cci:0});else{let d=(n[r]-l)/(.015*f);s.push({cci:Le(d)})}}return s}function zt(t,e=2){let o=Math.pow(10,e);return Math.round(t*o)/o}function pt(t,e={}){let{period:o=14}=e,s=[],n=[];for(let i=0;i<t.length;i++){let{high:a,low:l,close:c}=t[i];if(a===null||l===null||c===null){n.push(null);continue}if(i===0)n.push(a-l);else{let f=t[i-1].close;if(f===null)n.push(a-l);else{let d=a-l,p=Math.abs(a-f),m=Math.abs(l-f);n.push(Math.max(d,p,m))}}}let r=null;for(let i=0;i<t.length;i++){if(i<o-1){s.push({tr:n[i]!==null?zt(n[i]):null,atr:null});continue}if(i===o-1){let a=0,l=0;for(let c=0;c<o;c++)n[c]!==null&&(a+=n[c],l++);l===o&&(r=a/o)}else r!==null&&n[i]!==null&&(r=(r*(o-1)+n[i])/o);s.push({tr:n[i]!==null?zt(n[i]):null,atr:r!==null?zt(r):null})}return s}function dt(t,e={}){if(t.length===0)return[];let o=t.map(m=>m.close),s=t.map(m=>({open:m.open,high:m.high,low:m.low,close:m.close,volume:m.volume})),n=e.ma?ot(o,typeof e.ma=="object"?e.ma:{}):null,r=e.macd?st(o,typeof e.macd=="object"?e.macd:{}):null,i=e.boll?it(o,typeof e.boll=="object"?e.boll:{}):null,a=e.kdj?at(s,typeof e.kdj=="object"?e.kdj:{}):null,l=e.rsi?lt(o,typeof e.rsi=="object"?e.rsi:{}):null,c=e.wr?ut(s,typeof e.wr=="object"?e.wr:{}):null,f=e.bias?ct(o,typeof e.bias=="object"?e.bias:{}):null,d=e.cci?ft(s,typeof e.cci=="object"?e.cci:{}):null,p=e.atr?pt(s,typeof e.atr=="object"?e.atr:{}):null;return t.map((m,h)=>({...m,...n&&{ma:n[h]},...r&&{macd:r[h]},...i&&{boll:i[h]},...a&&{kdj:a[h]},...l&&{rsi:l[h]},...c&&{wr:c[h]},...f&&{bias:f[h]},...d&&{cci:d[h]},...p&&{atr:p[h]}}))}var mt=class{constructor(e={}){this.client=new F(e)}getFullQuotes(e){return A.getFullQuotes(this.client,e)}getSimpleQuotes(e){return A.getSimpleQuotes(this.client,e)}getHKQuotes(e){return A.getHKQuotes(this.client,e)}getUSQuotes(e){return A.getUSQuotes(this.client,e)}getFundQuotes(e){return A.getFundQuotes(this.client,e)}getFundFlow(e){return A.getFundFlow(this.client,e)}getPanelLargeOrder(e){return A.getPanelLargeOrder(this.client,e)}getTodayTimeline(e){return A.getTodayTimeline(this.client,e)}getIndustryList(){return P.getIndustryList(this.client)}getIndustrySpot(e){return P.getIndustrySpot(this.client,e)}getIndustryConstituents(e){return P.getIndustryConstituents(this.client,e)}getIndustryKline(e,o){return P.getIndustryKline(this.client,e,o)}getIndustryMinuteKline(e,o){return P.getIndustryMinuteKline(this.client,e,o)}getConceptList(){return P.getConceptList(this.client)}getConceptSpot(e){return P.getConceptSpot(this.client,e)}getConceptConstituents(e){return P.getConceptConstituents(this.client,e)}getConceptKline(e,o){return P.getConceptKline(this.client,e,o)}getConceptMinuteKline(e,o){return P.getConceptMinuteKline(this.client,e,o)}getHistoryKline(e,o){return P.getHistoryKline(this.client,e,o)}getMinuteKline(e,o){return P.getMinuteKline(this.client,e,o)}getHKHistoryKline(e,o){return P.getHKHistoryKline(this.client,e,o)}getUSHistoryKline(e,o){return P.getUSHistoryKline(this.client,e,o)}getAShareCodeList(e=!0){return A.getAShareCodeList(this.client,e)}getUSCodeList(e=!0){return A.getUSCodeList(this.client,e)}getHKCodeList(){return A.getHKCodeList(this.client)}async getAllAShareQuotes(e={}){let o=await this.getAShareCodeList();return this.getAllQuotesByCodes(o,e)}async getAllHKShareQuotes(e={}){let o=await this.getHKCodeList();return A.getAllHKQuotesByCodes(this.client,o,e)}async getAllUSShareQuotes(e={}){let o=await this.getUSCodeList(!1);return A.getAllUSQuotesByCodes(this.client,o,e)}getAllQuotesByCodes(e,o={}){return A.getAllQuotesByCodes(this.client,e,o)}async batchRaw(e){return this.client.getTencentQuote(e)}detectMarket(e){return/^\d{3}\.[A-Z]+$/i.test(e)?"US":/^\d{5}$/.test(e)?"HK":"A"}safeMax(e,o=0){return!e||e.length===0?o:Math.max(...e)}calcRequiredLookback(e){let o=0,s=!1;if(e.ma){let r=typeof e.ma=="object"?e.ma:{},i=r.periods??[5,10,20,30,60,120,250],a=r.type??"sma";o=Math.max(o,this.safeMax(i,20)),a==="ema"&&(s=!0)}if(e.macd){let r=typeof e.macd=="object"?e.macd:{},i=r.long??26,a=r.signal??9;o=Math.max(o,i*3+a),s=!0}if(e.boll){let r=typeof e.boll=="object"&&e.boll.period?e.boll.period:20;o=Math.max(o,r)}if(e.kdj){let r=typeof e.kdj=="object"&&e.kdj.period?e.kdj.period:9;o=Math.max(o,r)}if(e.rsi){let r=typeof e.rsi=="object"&&e.rsi.periods?e.rsi.periods:[6,12,24];o=Math.max(o,this.safeMax(r,14)+1)}if(e.wr){let r=typeof e.wr=="object"&&e.wr.periods?e.wr.periods:[6,10];o=Math.max(o,this.safeMax(r,10))}if(e.bias){let r=typeof e.bias=="object"&&e.bias.periods?e.bias.periods:[6,12,24];o=Math.max(o,this.safeMax(r,12))}if(e.cci){let r=typeof e.cci=="object"&&e.cci.period?e.cci.period:14;o=Math.max(o,r)}if(e.atr){let r=typeof e.atr=="object"&&e.atr.period?e.atr.period:14;o=Math.max(o,r)}return Math.ceil(o*(s?1.5:1.2))}calcActualStartDate(e,o,s=1.5){let n=Math.ceil(o*s),r=new Date(parseInt(e.slice(0,4)),parseInt(e.slice(4,6))-1,parseInt(e.slice(6,8)));r.setDate(r.getDate()-n);let i=r.getFullYear(),a=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0");return`${i}${a}${l}`}dateToTimestamp(e){let o=e.includes("-")?e:`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`;return new Date(o).getTime()}async getKlineWithIndicators(e,o={}){let{startDate:s,endDate:n,indicators:r={}}=o,i=o.market??this.detectMarket(e),a=this.calcRequiredLookback(r),c={A:1.5,HK:1.46,US:1.45}[i],f=s?this.calcActualStartDate(s,a,c):void 0,d={period:o.period,adjust:o.adjust,startDate:f,endDate:o.endDate},p;switch(i){case"HK":p=await this.getHKHistoryKline(e,d);break;case"US":p=await this.getUSHistoryKline(e,d);break;default:p=await this.getHistoryKline(e,d)}if(s&&p.length<a)switch(i){case"HK":p=await this.getHKHistoryKline(e,{...d,startDate:void 0});break;case"US":p=await this.getUSHistoryKline(e,{...d,startDate:void 0});break;default:p=await this.getHistoryKline(e,{...d,startDate:void 0})}let m=dt(p,r);if(s){let h=this.dateToTimestamp(s),y=n?this.dateToTimestamp(n):1/0;return m.filter(C=>{let S=this.dateToTimestamp(C.date);return S>=h&&S<=y})}return m}},_e=mt;export{mt as StockSDK,dt as addIndicators,N as asyncPool,pt as calcATR,ct as calcBIAS,it as calcBOLL,ft as calcCCI,H as calcEMA,at as calcKDJ,ot as calcMA,st as calcMACD,lt as calcRSI,q as calcSMA,$t as calcWMA,ut as calcWR,v as chunkArray,z as decodeGBK,_e as default,V as parseResponse,g as safeNumber,R as safeNumberOrNull};
|
|
1
|
+
var Te=Object.defineProperty;var Vt=(t,e)=>{for(var r in e)Te(t,r,{get:e[r],enumerable:!0})};function z(t){return new TextDecoder("gbk").decode(t)}function V(t){let e=t.split(";").map(s=>s.trim()).filter(Boolean),r=[];for(let s of e){let n=s.indexOf("=");if(n<0)continue;let o=s.slice(0,n).trim();o.startsWith("v_")&&(o=o.slice(2));let i=s.slice(n+1).trim();i.startsWith('"')&&i.endsWith('"')&&(i=i.slice(1,-1));let a=i.split("~");r.push({key:o,fields:a})}return r}function g(t){if(!t||t==="")return 0;let e=parseFloat(t);return Number.isNaN(e)?0:e}function R(t){if(!t||t==="")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}function u(t){if(!t||t===""||t==="-")return null;let e=parseFloat(t);return Number.isNaN(e)?null:e}var ht="https://qt.gtimg.cn",yt="https://web.ifzq.gtimg.cn/appstock/app/minute/query",Ct="https://assets.linkdiary.cn/shares/zh_a_list.json",Rt="https://assets.linkdiary.cn/shares/us_list.json",St="https://assets.linkdiary.cn/shares/hk_list.json",Gt="https://assets.linkdiary.cn/shares/trade-data-list.txt";var G="https://push2his.eastmoney.com/api/qt/stock/kline/get",bt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",wt="https://33.push2his.eastmoney.com/api/qt/stock/kline/get",Tt="https://63.push2his.eastmoney.com/api/qt/stock/kline/get",Mt="https://17.push2.eastmoney.com/api/qt/clist/get",Kt="https://91.push2.eastmoney.com/api/qt/stock/get",At="https://29.push2.eastmoney.com/api/qt/clist/get",J="https://7.push2his.eastmoney.com/api/qt/stock/kline/get",Pt="https://push2his.eastmoney.com/api/qt/stock/trends2/get",Lt="https://79.push2.eastmoney.com/api/qt/clist/get",_t="https://91.push2.eastmoney.com/api/qt/stock/get",kt="https://29.push2.eastmoney.com/api/qt/clist/get",Z="https://91.push2his.eastmoney.com/api/qt/stock/kline/get",It="https://push2his.eastmoney.com/api/qt/stock/trends2/get",xt=3e4,N=500,Q=500,$=7;var F=class{constructor(e={}){this.baseUrl=e.baseUrl??ht,this.timeout=e.timeout??xt}getTimeout(){return this.timeout}async get(e,r={}){let s=new AbortController,n=setTimeout(()=>s.abort(),this.timeout);try{let o=await fetch(e,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);switch(r.responseType){case"json":return await o.json();case"arraybuffer":return await o.arrayBuffer();default:return await o.text()}}finally{clearTimeout(n)}}async getTencentQuote(e){let r=`${this.baseUrl}/?q=${encodeURIComponent(e)}`,s=await this.get(r,{responseType:"arraybuffer"}),n=z(s);return V(n)}};var Me=new Set(["daily","weekly","monthly"]),Ke=new Set(["1","5","15","30","60"]),Ae=new Set(["","qfq","hfq"]);function E(t,e){if(!Number.isFinite(t)||!Number.isInteger(t)||t<=0)throw new RangeError(`${e} must be a positive integer`)}function U(t){if(!Me.has(t))throw new RangeError("period must be one of: daily, weekly, monthly")}function q(t){if(!Ke.has(t))throw new RangeError("period must be one of: 1, 5, 15, 30, 60")}function I(t){if(!Ae.has(t))throw new RangeError("adjust must be one of: '', 'qfq', 'hfq'")}function v(t,e){E(e,"chunkSize");let r=[];for(let s=0;s<t.length;s+=e)r.push(t.slice(s,s+e));return r}async function D(t,e){E(e,"concurrency");let r=[],s=[];for(let n of t){let o=Promise.resolve().then(()=>n()).then(i=>{r.push(i)});if(s.push(o),s.length>=e){await Promise.race(s);for(let i=s.length-1;i>=0;i--)await Promise.race([s[i].then(()=>"fulfilled"),Promise.resolve("pending")])==="fulfilled"&&s.splice(i,1)}}return await Promise.all(s),r}function Y(t){return t.startsWith("sh")?"1":t.startsWith("sz")||t.startsWith("bj")?"0":t.startsWith("6")?"1":"0"}var K={};Vt(K,{getAShareCodeList:()=>ee,getAllHKQuotesByCodes:()=>se,getAllQuotesByCodes:()=>oe,getAllUSQuotesByCodes:()=>ie,getFullQuotes:()=>X,getFundFlow:()=>Zt,getFundQuotes:()=>Xt,getHKCodeList:()=>re,getHKQuotes:()=>tt,getPanelLargeOrder:()=>Yt,getSimpleQuotes:()=>Jt,getTodayTimeline:()=>te,getTradingCalendar:()=>ae,getUSCodeList:()=>ne,getUSQuotes:()=>et,parseFullQuote:()=>Ot,parseFundFlow:()=>Et,parseFundQuote:()=>Ht,parseHKQuote:()=>qt,parsePanelLargeOrder:()=>Bt,parseSimpleQuote:()=>Ut,parseUSQuote:()=>jt});function Ot(t){let e=[];for(let s=0;s<5;s++)e.push({price:g(t[9+s*2]),volume:g(t[10+s*2])});let r=[];for(let s=0;s<5;s++)r.push({price:g(t[19+s*2]),volume:g(t[20+s*2])});return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),outerVolume:g(t[7]),innerVolume:g(t[8]),bid:e,ask:r,time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),volume2:g(t[36]),amount:g(t[37]),turnoverRate:R(t[38]),pe:R(t[39]),amplitude:R(t[43]),circulatingMarketCap:R(t[44]),totalMarketCap:R(t[45]),pb:R(t[46]),limitUp:R(t[47]),limitDown:R(t[48]),volumeRatio:R(t[49]),avgPrice:R(t[51]),peStatic:R(t[52]),peDynamic:R(t[53]),high52w:R(t[67]),low52w:R(t[68]),circulatingShares:R(t[72]),totalShares:R(t[73]),raw:t}}function Ut(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),change:g(t[4]),changePercent:g(t[5]),volume:g(t[6]),amount:g(t[7]),marketCap:R(t[9]),marketType:t[10]??"",raw:t}}function Et(t){return{code:t[0]??"",mainInflow:g(t[1]),mainOutflow:g(t[2]),mainNet:g(t[3]),mainNetRatio:g(t[4]),retailInflow:g(t[5]),retailOutflow:g(t[6]),retailNet:g(t[7]),retailNetRatio:g(t[8]),totalFlow:g(t[9]),name:t[12]??"",date:t[13]??"",raw:t}}function Bt(t){return{buyLargeRatio:g(t[0]),buySmallRatio:g(t[1]),sellLargeRatio:g(t[2]),sellSmallRatio:g(t[3]),raw:t}}function qt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),lotSize:R(t[40]),circulatingMarketCap:R(t[44]),totalMarketCap:R(t[45]),currency:t[t.length-3]??"",raw:t}}function jt(t){return{marketId:t[0]??"",name:t[1]??"",code:t[2]??"",price:g(t[3]),prevClose:g(t[4]),open:g(t[5]),volume:g(t[6]),time:t[30]??"",change:g(t[31]),changePercent:g(t[32]),high:g(t[33]),low:g(t[34]),amount:g(t[37]),turnoverRate:R(t[38]),pe:R(t[39]),amplitude:R(t[43]),totalMarketCap:R(t[45]),pb:R(t[47]),high52w:R(t[48]),low52w:R(t[49]),raw:t}}function Ht(t){return{code:t[0]??"",name:t[1]??"",nav:g(t[5]),accNav:g(t[6]),change:g(t[7]),navDate:t[8]??"",raw:t}}async function X(t,e){return!e||e.length===0?[]:(await t.getTencentQuote(e.join(","))).filter(s=>s.fields&&s.fields.length>0&&s.fields[0]!=="").map(s=>Ot(s.fields))}async function Jt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`s_${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Ut(n.fields))}async function Zt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`ff_${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Et(n.fields))}async function Yt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`s_pk${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Bt(n.fields))}async function tt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`hk${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>qt(n.fields))}async function et(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`us${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>jt(n.fields))}async function Xt(t,e){if(!e||e.length===0)return[];let r=e.map(n=>`jj${n}`);return(await t.getTencentQuote(r.join(","))).filter(n=>n.fields&&n.fields.length>0&&n.fields[0]!=="").map(n=>Ht(n.fields))}async function te(t,e){let r=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{let o=await fetch(`${yt}?code=${e}`,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);let i=await o.json();if(i.code!==0)throw new Error(i.msg||"API error");let a=i.data?.[e];if(!a)return{code:e,date:"",data:[]};let l=a.data?.data||[],c=a.data?.date||"",f=!1;if(l.length>0){let p=l[0].split(" "),m=parseFloat(p[1])||0,h=parseInt(p[2],10)||0,y=parseFloat(p[3])||0;h>0&&m>0&&y/h>m*50&&(f=!0)}let d=l.map(p=>{let m=p.split(" "),h=m[0],y=`${h.slice(0,2)}:${h.slice(2,4)}`,C=parseInt(m[2],10)||0,S=parseFloat(m[3])||0,b=f?C*100:C,M=b>0?S/b:0;return{time:y,price:parseFloat(m[1])||0,volume:b,amount:S,avgPrice:Math.round(M*100)/100}});return{code:e,date:c,data:d}}finally{clearTimeout(n)}}async function ee(t,e=!0){let r=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{let o=await fetch(Ct,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);let a=(await o.json()).list||[];return e?a:a.map(l=>l.replace(/^(sh|sz|bj)/,""))}finally{clearTimeout(n)}}async function ne(t,e=!0){let r=t.getTimeout(),s=new AbortController,n=setTimeout(()=>s.abort(),r);try{let o=await fetch(Rt,{signal:s.signal});if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);let a=(await o.json()).list||[];return e?a:a.map(l=>l.replace(/^\d{3}\./,""))}finally{clearTimeout(n)}}async function re(t){let e=t.getTimeout(),r=new AbortController,s=setTimeout(()=>r.abort(),e);try{let n=await fetch(St,{signal:r.signal});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return(await n.json()).list||[]}finally{clearTimeout(s)}}async function oe(t,e,r={}){let{batchSize:s=N,concurrency:n=$,onProgress:o}=r;E(s,"batchSize"),E(n,"concurrency");let i=Math.min(s,Q),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await X(t,p);return c++,o&&o(c,l),m});return(await D(f,n)).flat()}async function se(t,e,r={}){let{batchSize:s=N,concurrency:n=$,onProgress:o}=r;E(s,"batchSize"),E(n,"concurrency");let i=Math.min(s,Q),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await tt(t,p);return c++,o&&o(c,l),m});return(await D(f,n)).flat()}async function ie(t,e,r={}){let{batchSize:s=N,concurrency:n=$,onProgress:o}=r;E(s,"batchSize"),E(n,"concurrency");let i=Math.min(s,Q),a=v(e,i),l=a.length,c=0,f=a.map(p=>async()=>{let m=await et(t,p);return c++,o&&o(c,l),m});return(await D(f,n)).flat()}async function ae(t){let e=await t.get(Gt);return!e||e.trim()===""?[]:e.trim().split(",").map(r=>r.trim()).filter(r=>r.length>0)}var P={};Vt(P,{getConceptConstituents:()=>Re,getConceptKline:()=>Se,getConceptList:()=>Qt,getConceptMinuteKline:()=>be,getConceptSpot:()=>Ce,getHKHistoryKline:()=>ce,getHistoryKline:()=>le,getIndustryConstituents:()=>me,getIndustryKline:()=>ge,getIndustryList:()=>Dt,getIndustryMinuteKline:()=>he,getIndustrySpot:()=>de,getMinuteKline:()=>ue,getUSHistoryKline:()=>fe});async function le(t,e,r={}){let{period:s="daily",adjust:n="hfq",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`${Y(e)}.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:o,end:i}),p=`${G}?${d.toString()}`,h=(await t.get(p,{responseType:"json"}))?.data?.klines;return!Array.isArray(h)||h.length===0?[]:h.map(y=>{let[C,S,b,M,A,L,_,k,x,O,B]=y.split(",");return{date:C,code:a,open:u(S),close:u(b),high:u(M),low:u(A),volume:u(L),amount:u(_),amplitude:u(k),changePercent:u(x),change:u(O),turnoverRate:u(B)}})}async function ue(t,e,r={}){let{period:s="1",adjust:n="hfq",startDate:o="1979-09-01 09:32:00",endDate:i="2222-01-01 09:32:00"}=r;q(s),I(n);let a=e.replace(/^(sh|sz|bj)/,""),l=`${Y(e)}.${a}`;if(s==="1"){let c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",ut:"7eea3edcaed734bea9cbfc24409ed989",ndays:"5",iscr:"0",secid:l}),f=`${bt}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data?.trends;if(!Array.isArray(p)||p.length===0)return[];let m=o.replace("T"," ").slice(0,16),h=i.replace("T"," ").slice(0,16);return p.map(y=>{let[C,S,b,M,A,L,_,k]=y.split(",");return{time:C,open:u(S),close:u(b),high:u(M),low:u(A),volume:u(L),amount:u(_),avgPrice:u(k)}}).filter(y=>y.time>=m&&y.time<=h)}else{let c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:s,fqt:c[n],secid:l,beg:"0",end:"20500000"}),d=`${G}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;if(!Array.isArray(m)||m.length===0)return[];let h=o.replace("T"," ").slice(0,16),y=i.replace("T"," ").slice(0,16);return m.map(C=>{let[S,b,M,A,L,_,k,x,O,B,gt]=C.split(",");return{time:S,open:u(b),close:u(M),high:u(A),low:u(L),changePercent:u(O),change:u(B),volume:u(_),amount:u(k),amplitude:u(x),turnoverRate:u(gt)}}).filter(C=>C.time>=h&&C.time<=y)}}async function ce(t,e,r={}){let{period:s="daily",adjust:n="hfq",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=e.replace(/^hk/i,"").padStart(5,"0"),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=`116.${a}`,d=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:l[s],fqt:c[n],secid:f,beg:o,end:i,lmt:"1000000"}),p=`${wt}?${d.toString()}`,m=await t.get(p,{responseType:"json"}),h=m?.data?.klines,y=m?.data?.name||"";return!Array.isArray(h)||h.length===0?[]:h.map(C=>{let[S,b,M,A,L,_,k,x,O,B,gt]=C.split(",");return{date:S,code:a,name:y,open:u(b),close:u(M),high:u(A),low:u(L),volume:u(_),amount:u(k),amplitude:u(x),changePercent:u(O),change:u(B),turnoverRate:u(gt)}})}async function fe(t,e,r={}){let{period:s="daily",adjust:n="hfq",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a={daily:"101",weekly:"102",monthly:"103"},l={"":"0",qfq:"1",hfq:"2"},c=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",ut:"7eea3edcaed734bea9cbfc24409ed989",klt:a[s],fqt:l[n],secid:e,beg:o,end:i,lmt:"1000000"}),f=`${Tt}?${c.toString()}`,d=await t.get(f,{responseType:"json"}),p=d?.data?.klines,m=d?.data?.code||e.split(".")[1]||e,h=d?.data?.name||"";return!Array.isArray(p)||p.length===0?[]:p.map(y=>{let[C,S,b,M,A,L,_,k,x,O,B]=y.split(",");return{date:C,code:m,name:h,open:u(S),close:u(b),high:u(M),low:u(A),volume:u(L),amount:u(_),amplitude:u(k),changePercent:u(x),change:u(O),turnoverRate:u(B)}})}var vt=null;async function nt(t,e){if(e.startsWith("BK"))return e;if(!vt){let s=await Dt(t);vt=new Map(s.map(n=>[n.name,n.code]))}let r=vt.get(e);if(!r)throw new Error(`\u672A\u627E\u5230\u884C\u4E1A\u677F\u5757: ${e}`);return r}function w(t){if(t==null)return null;let e=String(t);return u(e)}async function pe(t,e,r,s,n=100,o){let i=[],a=1,l=0;do{let c=new URLSearchParams({...r,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>o(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function Dt(t){let s=await pe(t,Mt,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:"m:90 t:2 f:!50"},"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f26,f22,f33,f11,f62,f128,f136,f115,f152,f124,f107,f104,f105,f140,f141,f207,f208,f209,f222",100,(n,o)=>({rank:o,name:String(n.f14??""),code:String(n.f12??""),price:w(n.f2),change:w(n.f4),changePercent:w(n.f3),totalMarketCap:w(n.f20),turnoverRate:w(n.f8),riseCount:w(n.f104),fallCount:w(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:w(n.f136)}));return s.sort((n,o)=>(o.changePercent??0)-(n.changePercent??0)),s.forEach((n,o)=>{n.rank=o+1}),s}async function de(t,e){let r=await nt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${r}`}),n=`${Kt}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function me(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f3",fs:`b:${await nt(t,e)} f:!50`};return pe(t,At,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(o,i)=>({rank:i,code:String(o.f12??""),name:String(o.f14??""),price:w(o.f2),changePercent:w(o.f3),change:w(o.f4),volume:w(o.f5),amount:w(o.f6),amplitude:w(o.f7),high:w(o.f15),low:w(o.f16),open:w(o.f17),prevClose:w(o.f18),turnoverRate:w(o.f8),pe:w(o.f9),pb:w(o.f23)}))}async function ge(t,e,r={}){let{period:s="daily",adjust:n="",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=await nt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:o,end:i,smplmt:"10000",lmt:"1000000"}),d=`${J}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,C,S,b,M,A,L,_,k,x,O]=h.split(",");return{date:y,open:u(C),close:u(S),high:u(b),low:u(M),changePercent:u(k),change:u(x),volume:u(A),amount:u(L),amplitude:u(_),turnoverRate:u(O)}})}async function he(t,e,r={}){let{period:s="5"}=r;q(s);let n=await nt(t,e);if(s==="1"){let o=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${Pt}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(C),price:u(S)}})}else{let o=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${J}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S,b,M,A]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(M),volume:u(y),amount:u(C),amplitude:u(S),turnoverRate:u(A)}})}}var Nt=null;function T(t){if(t==null)return null;let e=String(t);return u(e)}async function rt(t,e){if(e.startsWith("BK"))return e;if(!Nt){let s=await Qt(t);Nt=new Map(s.map(n=>[n.name,n.code]))}let r=Nt.get(e);if(!r)throw new Error(`\u672A\u627E\u5230\u6982\u5FF5\u677F\u5757: ${e}`);return r}async function ye(t,e,r,s,n=100,o){let i=[],a=1,l=0;do{let c=new URLSearchParams({...r,pn:String(a),pz:String(n),fields:s}),f=`${e}?${c.toString()}`,p=(await t.get(f,{responseType:"json"}))?.data;if(!p||!Array.isArray(p.diff))break;a===1&&(l=p.total??0);let m=p.diff.map((h,y)=>o(h,i.length+y+1));i.push(...m),a++}while(i.length<l);return i}async function Qt(t){let s=await ye(t,Lt,{po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:"m:90 t:3 f:!50"},"f2,f3,f4,f8,f12,f14,f15,f16,f17,f18,f20,f21,f24,f25,f22,f33,f11,f62,f128,f124,f107,f104,f105,f136",100,(n,o)=>({rank:o,name:String(n.f14??""),code:String(n.f12??""),price:T(n.f2),change:T(n.f4),changePercent:T(n.f3),totalMarketCap:T(n.f20),turnoverRate:T(n.f8),riseCount:T(n.f104),fallCount:T(n.f105),leadingStock:n.f128?String(n.f128):null,leadingStockChangePercent:T(n.f136)}));return s.sort((n,o)=>(o.changePercent??0)-(n.changePercent??0)),s.forEach((n,o)=>{n.rank=o+1}),s}async function Ce(t,e){let r=await rt(t,e),s=new URLSearchParams({fields:"f43,f44,f45,f46,f47,f48,f170,f171,f168,f169",mpi:"1000",invt:"2",fltt:"1",secid:`90.${r}`}),n=`${_t}?${s.toString()}`,i=(await t.get(n,{responseType:"json"}))?.data;return i?[{key:"f43",name:"\u6700\u65B0",divide:!0},{key:"f44",name:"\u6700\u9AD8",divide:!0},{key:"f45",name:"\u6700\u4F4E",divide:!0},{key:"f46",name:"\u5F00\u76D8",divide:!0},{key:"f47",name:"\u6210\u4EA4\u91CF",divide:!1},{key:"f48",name:"\u6210\u4EA4\u989D",divide:!1},{key:"f170",name:"\u6DA8\u8DCC\u5E45",divide:!0},{key:"f171",name:"\u632F\u5E45",divide:!0},{key:"f168",name:"\u6362\u624B\u7387",divide:!0},{key:"f169",name:"\u6DA8\u8DCC\u989D",divide:!0}].map(({key:l,name:c,divide:f})=>{let d=i[l],p=null;return typeof d=="number"&&!isNaN(d)&&(p=f?d/100:d),{item:c,value:p}}):[]}async function Re(t,e){let s={po:"1",np:"1",ut:"bd1d9ddb04089700cf9c27f6f7426281",fltt:"2",invt:"2",fid:"f12",fs:`b:${await rt(t,e)} f:!50`};return ye(t,kt,s,"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,f45",100,(o,i)=>({rank:i,code:String(o.f12??""),name:String(o.f14??""),price:T(o.f2),changePercent:T(o.f3),change:T(o.f4),volume:T(o.f5),amount:T(o.f6),amplitude:T(o.f7),high:T(o.f15),low:T(o.f16),open:T(o.f17),prevClose:T(o.f18),turnoverRate:T(o.f8),pe:T(o.f9),pb:T(o.f23)}))}async function Se(t,e,r={}){let{period:s="daily",adjust:n="",startDate:o="19700101",endDate:i="20500101"}=r;U(s),I(n);let a=await rt(t,e),l={daily:"101",weekly:"102",monthly:"103"},c={"":"0",qfq:"1",hfq:"2"},f=new URLSearchParams({secid:`90.${a}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:l[s],fqt:c[n],beg:o,end:i,smplmt:"10000",lmt:"1000000"}),d=`${Z}?${f.toString()}`,m=(await t.get(d,{responseType:"json"}))?.data?.klines;return!Array.isArray(m)||m.length===0?[]:m.map(h=>{let[y,C,S,b,M,A,L,_,k,x,O]=h.split(",");return{date:y,open:u(C),close:u(S),high:u(b),low:u(M),changePercent:u(k),change:u(x),volume:u(A),amount:u(L),amplitude:u(_),turnoverRate:u(O)}})}async function be(t,e,r={}){let{period:s="5"}=r;q(s);let n=await rt(t,e);if(s==="1"){let o=new URLSearchParams({fields1:"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13",fields2:"f51,f52,f53,f54,f55,f56,f57,f58",iscr:"0",ndays:"1",secid:`90.${n}`}),i=`${It}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.trends;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),volume:u(y),amount:u(C),price:u(S)}})}else{let o=new URLSearchParams({secid:`90.${n}`,fields1:"f1,f2,f3,f4,f5,f6",fields2:"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",klt:s,fqt:"1",beg:"0",end:"20500101",smplmt:"10000",lmt:"1000000"}),i=`${Z}?${o.toString()}`,l=(await t.get(i,{responseType:"json"}))?.data?.klines;return!Array.isArray(l)||l.length===0?[]:l.map(c=>{let[f,d,p,m,h,y,C,S,b,M,A]=c.split(",");return{time:f,open:u(d),close:u(p),high:u(m),low:u(h),changePercent:u(b),change:u(M),volume:u(y),amount:u(C),amplitude:u(S),turnoverRate:u(A)}})}}function W(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function j(t,e){let r=[];for(let s=0;s<t.length;s++){if(s<e-1){r.push(null);continue}let n=0,o=0;for(let i=s-e+1;i<=s;i++)t[i]!==null&&(n+=t[i],o++);r.push(o===e?W(n/e):null)}return r}function H(t,e){let r=[],s=2/(e+1),n=null,o=!1;for(let i=0;i<t.length;i++){if(i<e-1){r.push(null);continue}if(!o){let l=0,c=0;for(let f=i-e+1;f<=i;f++)t[f]!==null&&(l+=t[f],c++);c===e&&(n=l/e,o=!0),r.push(n!==null?W(n):null);continue}let a=t[i];a===null?r.push(n!==null?W(n):null):(n=s*a+(1-s)*n,r.push(W(n)))}return r}function $t(t,e){let r=[],s=Array.from({length:e},(o,i)=>i+1),n=s.reduce((o,i)=>o+i,0);for(let o=0;o<t.length;o++){if(o<e-1){r.push(null);continue}let i=0,a=!0;for(let l=0;l<e;l++){let c=t[o-e+1+l];if(c===null){a=!1;break}i+=c*s[l]}r.push(a?W(i/n):null)}return r}function ot(t,e={}){let{periods:r=[5,10,20,30,60,120,250],type:s="sma"}=e,n=s==="ema"?H:s==="wma"?$t:j,o={};for(let i of r)o[`ma${i}`]=n(t,i);return t.map((i,a)=>{let l={};for(let c of r)l[`ma${c}`]=o[`ma${c}`][a];return l})}function we(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function st(t,e={}){let{short:r=12,long:s=26,signal:n=9}=e,o=H(t,r),i=H(t,s),a=t.map((c,f)=>o[f]===null||i[f]===null?null:o[f]-i[f]),l=H(a,n);return t.map((c,f)=>({dif:a[f]!==null?we(a[f]):null,dea:l[f],macd:a[f]!==null&&l[f]!==null?we((a[f]-l[f])*2):null}))}function Ft(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function Pe(t,e,r){let s=[];for(let n=0;n<t.length;n++){if(n<e-1||r[n]===null){s.push(null);continue}let o=0,i=0;for(let a=n-e+1;a<=n;a++)t[a]!==null&&r[n]!==null&&(o+=Math.pow(t[a]-r[n],2),i++);s.push(i===e?Math.sqrt(o/e):null)}return s}function it(t,e={}){let{period:r=20,stdDev:s=2}=e,n=j(t,r),o=Pe(t,r,n);return t.map((i,a)=>{if(n[a]===null||o[a]===null)return{mid:null,upper:null,lower:null,bandwidth:null};let l=n[a]+s*o[a],c=n[a]-s*o[a],f=n[a]!==0?Ft((l-c)/n[a]*100):null;return{mid:n[a],upper:Ft(l),lower:Ft(c),bandwidth:f}})}function Wt(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function at(t,e={}){let{period:r=9,kPeriod:s=3,dPeriod:n=3}=e,o=[],i=50,a=50;for(let l=0;l<t.length;l++){if(l<r-1){o.push({k:null,d:null,j:null});continue}let c=-1/0,f=1/0,d=!0;for(let y=l-r+1;y<=l;y++){if(t[y].high===null||t[y].low===null){d=!1;break}c=Math.max(c,t[y].high),f=Math.min(f,t[y].low)}let p=t[l].close;if(!d||p===null||c===f){o.push({k:null,d:null,j:null});continue}let m=(p-f)/(c-f)*100;i=(s-1)/s*i+1/s*m,a=(n-1)/n*a+1/n*i;let h=3*i-2*a;o.push({k:Wt(i),d:Wt(a),j:Wt(h)})}return o}function Le(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function lt(t,e={}){let{periods:r=[6,12,24]}=e,s=[null];for(let o=1;o<t.length;o++)t[o]===null||t[o-1]===null?s.push(null):s.push(t[o]-t[o-1]);let n={};for(let o of r){let i=[],a=0,l=0;for(let c=0;c<t.length;c++){if(c<o){i.push(null),s[c]!==null&&(s[c]>0?a+=s[c]:l+=Math.abs(s[c]));continue}if(c===o)a=a/o,l=l/o;else{let f=s[c]??0,d=f>0?f:0,p=f<0?Math.abs(f):0;a=(a*(o-1)+d)/o,l=(l*(o-1)+p)/o}if(l===0)i.push(100);else if(a===0)i.push(0);else{let f=a/l;i.push(Le(100-100/(1+f)))}}n[`rsi${o}`]=i}return t.map((o,i)=>{let a={};for(let l of r)a[`rsi${l}`]=n[`rsi${l}`][i];return a})}function _e(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function ut(t,e={}){let{periods:r=[6,10]}=e,s={};for(let n of r){let o=[];for(let i=0;i<t.length;i++){if(i<n-1){o.push(null);continue}let a=-1/0,l=1/0,c=!0;for(let p=i-n+1;p<=i;p++){if(t[p].high===null||t[p].low===null){c=!1;break}a=Math.max(a,t[p].high),l=Math.min(l,t[p].low)}let f=t[i].close;if(!c||f===null||a===l){o.push(null);continue}let d=(a-f)/(a-l)*100;o.push(_e(d))}s[`wr${n}`]=o}return t.map((n,o)=>{let i={};for(let a of r)i[`wr${a}`]=s[`wr${a}`][o];return i})}function ke(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function ct(t,e={}){let{periods:r=[6,12,24]}=e,s={};for(let n of r){let o=j(t,n),i=[];for(let a=0;a<t.length;a++)if(t[a]===null||o[a]===null||o[a]===0)i.push(null);else{let l=(t[a]-o[a])/o[a]*100;i.push(ke(l))}s[`bias${n}`]=i}return t.map((n,o)=>{let i={};for(let a of r)i[`bias${a}`]=s[`bias${a}`][o];return i})}function Ie(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function ft(t,e={}){let{period:r=14}=e,s=[],n=t.map(o=>o.high===null||o.low===null||o.close===null?null:(o.high+o.low+o.close)/3);for(let o=0;o<t.length;o++){if(o<r-1){s.push({cci:null});continue}let i=0,a=0;for(let d=o-r+1;d<=o;d++)n[d]!==null&&(i+=n[d],a++);if(a!==r||n[o]===null){s.push({cci:null});continue}let l=i/r,c=0;for(let d=o-r+1;d<=o;d++)c+=Math.abs(n[d]-l);let f=c/r;if(f===0)s.push({cci:0});else{let d=(n[o]-l)/(.015*f);s.push({cci:Ie(d)})}}return s}function zt(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function pt(t,e={}){let{period:r=14}=e,s=[],n=[];for(let i=0;i<t.length;i++){let{high:a,low:l,close:c}=t[i];if(a===null||l===null||c===null){n.push(null);continue}if(i===0)n.push(a-l);else{let f=t[i-1].close;if(f===null)n.push(a-l);else{let d=a-l,p=Math.abs(a-f),m=Math.abs(l-f);n.push(Math.max(d,p,m))}}}let o=null;for(let i=0;i<t.length;i++){if(i<r-1){s.push({tr:n[i]!==null?zt(n[i]):null,atr:null});continue}if(i===r-1){let a=0,l=0;for(let c=0;c<r;c++)n[c]!==null&&(a+=n[c],l++);l===r&&(o=a/r)}else o!==null&&n[i]!==null&&(o=(o*(r-1)+n[i])/r);s.push({tr:n[i]!==null?zt(n[i]):null,atr:o!==null?zt(o):null})}return s}function dt(t,e={}){if(t.length===0)return[];let r=t.map(m=>m.close),s=t.map(m=>({open:m.open,high:m.high,low:m.low,close:m.close,volume:m.volume})),n=e.ma?ot(r,typeof e.ma=="object"?e.ma:{}):null,o=e.macd?st(r,typeof e.macd=="object"?e.macd:{}):null,i=e.boll?it(r,typeof e.boll=="object"?e.boll:{}):null,a=e.kdj?at(s,typeof e.kdj=="object"?e.kdj:{}):null,l=e.rsi?lt(r,typeof e.rsi=="object"?e.rsi:{}):null,c=e.wr?ut(s,typeof e.wr=="object"?e.wr:{}):null,f=e.bias?ct(r,typeof e.bias=="object"?e.bias:{}):null,d=e.cci?ft(s,typeof e.cci=="object"?e.cci:{}):null,p=e.atr?pt(s,typeof e.atr=="object"?e.atr:{}):null;return t.map((m,h)=>({...m,...n&&{ma:n[h]},...o&&{macd:o[h]},...i&&{boll:i[h]},...a&&{kdj:a[h]},...l&&{rsi:l[h]},...c&&{wr:c[h]},...f&&{bias:f[h]},...d&&{cci:d[h]},...p&&{atr:p[h]}}))}var mt=class{constructor(e={}){this.client=new F(e)}getFullQuotes(e){return K.getFullQuotes(this.client,e)}getSimpleQuotes(e){return K.getSimpleQuotes(this.client,e)}getHKQuotes(e){return K.getHKQuotes(this.client,e)}getUSQuotes(e){return K.getUSQuotes(this.client,e)}getFundQuotes(e){return K.getFundQuotes(this.client,e)}getFundFlow(e){return K.getFundFlow(this.client,e)}getPanelLargeOrder(e){return K.getPanelLargeOrder(this.client,e)}getTodayTimeline(e){return K.getTodayTimeline(this.client,e)}getIndustryList(){return P.getIndustryList(this.client)}getIndustrySpot(e){return P.getIndustrySpot(this.client,e)}getIndustryConstituents(e){return P.getIndustryConstituents(this.client,e)}getIndustryKline(e,r){return P.getIndustryKline(this.client,e,r)}getIndustryMinuteKline(e,r){return P.getIndustryMinuteKline(this.client,e,r)}getConceptList(){return P.getConceptList(this.client)}getConceptSpot(e){return P.getConceptSpot(this.client,e)}getConceptConstituents(e){return P.getConceptConstituents(this.client,e)}getConceptKline(e,r){return P.getConceptKline(this.client,e,r)}getConceptMinuteKline(e,r){return P.getConceptMinuteKline(this.client,e,r)}getHistoryKline(e,r){return P.getHistoryKline(this.client,e,r)}getMinuteKline(e,r){return P.getMinuteKline(this.client,e,r)}getHKHistoryKline(e,r){return P.getHKHistoryKline(this.client,e,r)}getUSHistoryKline(e,r){return P.getUSHistoryKline(this.client,e,r)}getAShareCodeList(e=!0){return K.getAShareCodeList(this.client,e)}getUSCodeList(e=!0){return K.getUSCodeList(this.client,e)}getHKCodeList(){return K.getHKCodeList(this.client)}async getAllAShareQuotes(e={}){let r=await this.getAShareCodeList();return this.getAllQuotesByCodes(r,e)}async getAllHKShareQuotes(e={}){let r=await this.getHKCodeList();return K.getAllHKQuotesByCodes(this.client,r,e)}async getAllUSShareQuotes(e={}){let r=await this.getUSCodeList(!1);return K.getAllUSQuotesByCodes(this.client,r,e)}getAllQuotesByCodes(e,r={}){return K.getAllQuotesByCodes(this.client,e,r)}async batchRaw(e){return this.client.getTencentQuote(e)}getTradingCalendar(){return K.getTradingCalendar(this.client)}detectMarket(e){return/^\d{3}\.[A-Z]+$/i.test(e)?"US":/^\d{5}$/.test(e)?"HK":"A"}safeMax(e,r=0){return!e||e.length===0?r:Math.max(...e)}calcRequiredLookback(e){let r=0,s=!1;if(e.ma){let o=typeof e.ma=="object"?e.ma:{},i=o.periods??[5,10,20,30,60,120,250],a=o.type??"sma";r=Math.max(r,this.safeMax(i,20)),a==="ema"&&(s=!0)}if(e.macd){let o=typeof e.macd=="object"?e.macd:{},i=o.long??26,a=o.signal??9;r=Math.max(r,i*3+a),s=!0}if(e.boll){let o=typeof e.boll=="object"&&e.boll.period?e.boll.period:20;r=Math.max(r,o)}if(e.kdj){let o=typeof e.kdj=="object"&&e.kdj.period?e.kdj.period:9;r=Math.max(r,o)}if(e.rsi){let o=typeof e.rsi=="object"&&e.rsi.periods?e.rsi.periods:[6,12,24];r=Math.max(r,this.safeMax(o,14)+1)}if(e.wr){let o=typeof e.wr=="object"&&e.wr.periods?e.wr.periods:[6,10];r=Math.max(r,this.safeMax(o,10))}if(e.bias){let o=typeof e.bias=="object"&&e.bias.periods?e.bias.periods:[6,12,24];r=Math.max(r,this.safeMax(o,12))}if(e.cci){let o=typeof e.cci=="object"&&e.cci.period?e.cci.period:14;r=Math.max(r,o)}if(e.atr){let o=typeof e.atr=="object"&&e.atr.period?e.atr.period:14;r=Math.max(r,o)}return Math.ceil(r*(s?1.5:1.2))}calcActualStartDate(e,r,s=1.5){let n=Math.ceil(r*s),o=new Date(parseInt(e.slice(0,4)),parseInt(e.slice(4,6))-1,parseInt(e.slice(6,8)));o.setDate(o.getDate()-n);let i=o.getFullYear(),a=String(o.getMonth()+1).padStart(2,"0"),l=String(o.getDate()).padStart(2,"0");return`${i}${a}${l}`}dateToTimestamp(e){let r=e.includes("-")?e:`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`;return new Date(r).getTime()}async getKlineWithIndicators(e,r={}){let{startDate:s,endDate:n,indicators:o={}}=r,i=r.market??this.detectMarket(e),a=this.calcRequiredLookback(o),c={A:1.5,HK:1.46,US:1.45}[i],f=s?this.calcActualStartDate(s,a,c):void 0,d={period:r.period,adjust:r.adjust,startDate:f,endDate:r.endDate},p;switch(i){case"HK":p=await this.getHKHistoryKline(e,d);break;case"US":p=await this.getUSHistoryKline(e,d);break;default:p=await this.getHistoryKline(e,d)}if(s&&p.length<a)switch(i){case"HK":p=await this.getHKHistoryKline(e,{...d,startDate:void 0});break;case"US":p=await this.getUSHistoryKline(e,{...d,startDate:void 0});break;default:p=await this.getHistoryKline(e,{...d,startDate:void 0})}let m=dt(p,o);if(s){let h=this.dateToTimestamp(s),y=n?this.dateToTimestamp(n):1/0;return m.filter(C=>{let S=this.dateToTimestamp(C.date);return S>=h&&S<=y})}return m}},xe=mt;export{mt as StockSDK,dt as addIndicators,D as asyncPool,pt as calcATR,ct as calcBIAS,it as calcBOLL,ft as calcCCI,H as calcEMA,at as calcKDJ,ot as calcMA,st as calcMACD,lt as calcRSI,j as calcSMA,$t as calcWMA,ut as calcWR,v as chunkArray,z as decodeGBK,xe as default,V as parseResponse,g as safeNumber,R as safeNumberOrNull};
|