hqchart
Version:
HQChart - H5, 微信小程序 沪深/港股/数字货币/期货/美股 K线图(kline),走势图,缩放,拖拽,十字光标,画图工具,截图,筹码图. 分析家语法,通达信语法,(麦语法),第3方数据对接
115 lines (93 loc) • 3.94 kB
JavaScript
///////////////////////////////////////////////////////////////////////////////////
// 工作线程计算指标示例
//
//
//////////////////////////////////////////////////////////////////////////////////
function HQChartScriptWorker()
{
this.Status=0; //0=空闲 1=运行
this.Create=function()
{
addEventListener('message', (obj)=>{ this.OnRecvMessage(obj); });
}
this.NetworkFilter=function(data, callback, indexInfo)
{
JSConsole.Complier.Log(`[HQChartScriptWorker::NetworkFilter] [${data.Name}][${data.Explain}] data=`, data);
//数据下载
}
this.ExecuteScript=function(indexData, message)
{
var scriptObj={ };
if (indexData.Script)
{
scriptObj.Name=indexData.Name;
scriptObj.ID=indexData.Index;
scriptObj.Script=indexData.Script;
}
else
{
if (!indexData.Index) return false;
var scriptData = new JSIndexScript();
var finder = scriptData.Get(indexData.Index);
if (!finder) return false;
scriptObj.ID=indexData.Index;
scriptObj.Name=finder.Name;
scriptObj.Script=finder.Script;
scriptObj.Args=finder.Args;
}
if (indexData.Args) scriptObj.Args=indexData.Args;
if (IFrameSplitOperator.IsBool(message.IsApiPeriod)) scriptObj.IsApiPeriod=message.IsApiPeriod;
var indexInfo={ Name:scriptObj.Name, ID:scriptObj.ID, Script:scriptObj.Script, Args:scriptObj.Args, Guid:message.Guid };
scriptObj.ErrorCallback=(error)=>{ this.OnExecuteError(error, indexInfo, message); };
scriptObj.FinishCallback=(data, jsExectute)=>{ this.OnExecuteFinish(data, indexInfo, jsExectute, message); };
scriptObj.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback, indexInfo, message); };
JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);
var indexConsole=new ScriptIndexConsole(scriptObj);
var hisData=null;
if (message && message.Data)
{
hisData=new ChartData();
hisData.Data=message.Data;
hisData.Right=message.Right;
hisData.Period=message.Period;
hisData.DataType=message.DataType; //0=日线 1=分钟
hisData.Symbol=message.symbol;
}
var stockObj=
{
HQDataType:HQ_DATA_TYPE.KLINE_ID,
Stock: { Symbol:message.Symbol },
Request: { MaxDataCount: 500, MaxMinuteDayCount:5 },
Period:message.Period , Right:message.Right,
Data:hisData
};
if (IFrameSplitOperator.IsNumber(message.HQDataType)) stockObj.HQDataType=message.HQDataType;
indexConsole.ExecuteScript(stockObj);
}
this.OnRecvMessage=function(message)
{
var data=message.data;
if (!data) return;
if (data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT)
{
if (!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex)) return;
for(var i=0;i<data.AryIndex.length;++i)
{
var item=data.AryIndex[i];
this.Status=1; //执行状态
this.ExecuteScript(item,data);
}
this.Status=0;
}
}
this.OnExecuteFinish=function(data, indexInfo, jsExectute, jobInfo)
{
var message={ Data:data, IndexInfo:indexInfo , ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT, JobInfo:jobInfo };
postMessage(message);
}
this.OnExecuteError=function(error, indexInfo, jobData)
{
var message={ IndexInfo:indexInfo, ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT, Error:error };
postMessage(message);
}
}