提交 53a05ff5 编写于 作者: J jones

ver 3639

上级 c73fe95c
......@@ -3463,6 +3463,11 @@ HistoryData.Copy=function(data)
newData.Amount=data.Amount;
newData.Time=data.Time;
newData.Stop=data.Stop;
newData.Up=data.Up;
newData.Down=data.Down;
newData.Unchanged=data.Unchanged;
return newData;
}
......@@ -3973,6 +3978,13 @@ function ChartData()
result[i].Close=overlayData[j].Close;
result[i].Vol=overlayData[j].Vol;
result[i].Amount=overlayData[j].Amount;
//涨跌家数数据
result[i].Stop=overlayData[j].Stop;
result[i].Up=overlayData[j].Up;
result[i].Down=overlayData[j].Down;
result[i].Unchanged=overlayData[j].Unchanged;
++j;
++i;
}
......@@ -13068,7 +13080,6 @@ MinuteChartContainer.JsonDataToMinuteData=function(data)
var aryMinuteData=new Array();
var preClose=data.stock[0].yclose; //前一个数据价格
var preAvPrice=data.stock[0].yclose; //前一个均价
var isFund=IsFundSymbol(data.stock[0].symbol);
for(var i in data.stock[0].minute)
{
var jsData=data.stock[0].minute[i];
......@@ -13095,8 +13106,12 @@ MinuteChartContainer.JsonDataToMinuteData=function(data)
item.Risefall=jsData.risefall;
item.AvPrice=jsData.avprice;
if (!item.Close && isFund) item.Close=preClose;
if (!item.AvPrice && isFund) item.AvPrice=preAvPrice;
if (!item.Close) //当前没有价格 使用上一个价格填充
{
item.Close=preClose;
item.Open=item.High=item.Low=item.Close;
}
if (!item.AvPrice) item.AvPrice=preAvPrice;
//价格是0的 都用空
if (item.Open<=0) item.Open=null;
......@@ -13121,10 +13136,12 @@ MinuteChartContainer.JsonDataToMinuteDataArray=function(data)
var dayData=data.data[i];
var date=dayData.date;
var yClose=dayData.yclose; //前收盘 计算涨幅
var preClose=yClose; //前一个数据价格
//var preAvPrice=data.stock[0].yclose; //前一个均价
for(var j in dayData.minute)
{
var jsData=dayData.minute[j];
if (jsData[2]) preClose=jsData[2]; //保存上一个收盘数据
var item=new MinuteData();
item.Close=jsData[2];
item.Open=jsData[1];
......@@ -13133,6 +13150,13 @@ MinuteChartContainer.JsonDataToMinuteDataArray=function(data)
item.Vol=jsData[5]/100; //原始单位股
item.Amount=jsData[6];
item.DateTime=date.toString()+" "+jsData[0].toString();
if (!item.Close) //当前没有价格 使用上一个价格填充
{
item.Close=preClose;
item.Open=item.High=item.Low=item.Close;
}
if (item.Close && yClose) item.Increase = (item.Close - yClose)/yClose*100;
else item.Increase=null;
if (j==0) //第1个数据 写死9:25
......
......@@ -3463,6 +3463,11 @@ HistoryData.Copy=function(data)
newData.Amount=data.Amount;
newData.Time=data.Time;
newData.Stop=data.Stop;
newData.Up=data.Up;
newData.Down=data.Down;
newData.Unchanged=data.Unchanged;
return newData;
}
......@@ -3973,6 +3978,13 @@ function ChartData()
result[i].Close=overlayData[j].Close;
result[i].Vol=overlayData[j].Vol;
result[i].Amount=overlayData[j].Amount;
//涨跌家数数据
result[i].Stop=overlayData[j].Stop;
result[i].Up=overlayData[j].Up;
result[i].Down=overlayData[j].Down;
result[i].Unchanged=overlayData[j].Unchanged;
++j;
++i;
}
......@@ -13068,7 +13080,6 @@ MinuteChartContainer.JsonDataToMinuteData=function(data)
var aryMinuteData=new Array();
var preClose=data.stock[0].yclose; //前一个数据价格
var preAvPrice=data.stock[0].yclose; //前一个均价
var isFund=IsFundSymbol(data.stock[0].symbol);
for(var i in data.stock[0].minute)
{
var jsData=data.stock[0].minute[i];
......@@ -13095,8 +13106,12 @@ MinuteChartContainer.JsonDataToMinuteData=function(data)
item.Risefall=jsData.risefall;
item.AvPrice=jsData.avprice;
if (!item.Close && isFund) item.Close=preClose;
if (!item.AvPrice && isFund) item.AvPrice=preAvPrice;
if (!item.Close) //当前没有价格 使用上一个价格填充
{
item.Close=preClose;
item.Open=item.High=item.Low=item.Close;
}
if (!item.AvPrice) item.AvPrice=preAvPrice;
//价格是0的 都用空
if (item.Open<=0) item.Open=null;
......@@ -13121,10 +13136,12 @@ MinuteChartContainer.JsonDataToMinuteDataArray=function(data)
var dayData=data.data[i];
var date=dayData.date;
var yClose=dayData.yclose; //前收盘 计算涨幅
var preClose=yClose; //前一个数据价格
//var preAvPrice=data.stock[0].yclose; //前一个均价
for(var j in dayData.minute)
{
var jsData=dayData.minute[j];
if (jsData[2]) preClose=jsData[2]; //保存上一个收盘数据
var item=new MinuteData();
item.Close=jsData[2];
item.Open=jsData[1];
......@@ -13133,6 +13150,13 @@ MinuteChartContainer.JsonDataToMinuteDataArray=function(data)
item.Vol=jsData[5]/100; //原始单位股
item.Amount=jsData[6];
item.DateTime=date.toString()+" "+jsData[0].toString();
if (!item.Close) //当前没有价格 使用上一个价格填充
{
item.Close=preClose;
item.Open=item.High=item.Low=item.Close;
}
if (item.Close && yClose) item.Increase = (item.Close - yClose)/yClose*100;
else item.Increase=null;
if (j==0) //第1个数据 写死9:25
......
......@@ -711,7 +711,7 @@ function Node()
this.VerifySymbolVariable=function(varName)
{
let setIndexName=new Set(['INDEXA','INDEXC','INDEXH','INDEXL',"INDEXO","INDEXV"]);
let setIndexName = new Set(['INDEXA', 'INDEXC', 'INDEXH', 'INDEXL', "INDEXO", "INDEXV", 'INDEXDEC', 'INDEXADV']);
if (setIndexName.has(varName))
{
this.IsNeedIndexData=true;
......@@ -5322,7 +5322,7 @@ function JSSymbolData(ast,option,jsExecute)
url: self.KLineApiUrl,
data:
{
"field": [ "name", "symbol","yclose","open","price","high","low","vol"],
"field": ["name", "symbol", "yclose", "open", "price", "high", "low", "vol", 'up', 'down', 'stop', 'unchanged'],
"symbol": '000001.sh',
"start": -1,
"count": self.MaxReqeustDataCount+500 //多请求2年的数据 确保股票剔除停牌日期以后可以对上
......@@ -5423,6 +5423,10 @@ function JSSymbolData(ast,option,jsExecute)
return this.IndexData.GetOpen();
case 'INDEXV':
return this.IndexData.GetVol();
case 'INDEXADV':
return this.IndexData.GetUp();
case 'INDEXDEC':
return this.IndexData.GetDown();
}
}
......@@ -6179,6 +6183,7 @@ function JSSymbolData(ast,option,jsExecute)
var list = data.data;
var aryDayData=new Array();
var date = 0, yclose = 1, open = 2, high = 3, low = 4, close = 5, vol = 6, amount = 7;
var up = 8, down = 9, stop = 10, unchanged = 11;
for (var i = 0; i < list.length; ++i)
{
var item = new JSCommonData.HistoryData();
......@@ -6194,6 +6199,12 @@ function JSSymbolData(ast,option,jsExecute)
if (isNaN(item.Open) || item.Open<=0) continue; //停牌的数据剔除
//上涨 下跌家数
if (list[i].length > up) item.Up = list[i][up];
if (list[i].length > down) item.Down = list[i][down];
if (list[i].length > stop) item.Stop = list[i][stop];
if (list[i].length > unchanged) item.Unchanged = list[i][unchanged];
aryDayData.push(item);
}
......@@ -6562,6 +6573,8 @@ function JSExecute(ast,option)
//大盘数据
['INDEXA',null],['INDEXC',null],['INDEXH',null],['INDEXL',null],['INDEXO',null],['INDEXV',null],
['INDEXADV', null], ['INDEXDEC', null],
//到最后交易日的周期数
['CURRBARSCOUNT',null],
......@@ -6668,6 +6681,8 @@ function JSExecute(ast,option)
case 'INDEXO':
case 'INDEXV':
case 'INDEXL':
case 'INDEXADV':
case 'INDEXDEC':
return this.SymbolData.GetIndexCacheData(name);
case 'CURRBARSCOUNT':
......
......@@ -16,6 +16,12 @@ function HistoryData()
this.Vol;
this.Amount;
this.Time;
//指数才有的数据
this.Stop; //停牌家数
this.Up; //上涨
this.Down; //下跌
this.Unchanged; //平盘
}
//数据复制
......@@ -32,6 +38,12 @@ HistoryData.Copy=function(data)
newData.Amount=data.Amount;
newData.Time=data.Time;
//指数才有的数据
newData.Stop = data.Stop;
newData.Up = data.Up;
newData.Down = data.Down;
newData.Unchanged = data.Unchanged;
return newData;
}
......@@ -227,6 +239,26 @@ function ChartData()
return result;
}
this.GetUp = function () //上涨家数
{
var result = [];
for (var i in this.Data) {
result[i] = this.Data[i].Up;
}
return result;
}
this.GetDown = function () //下跌家数
{
var result = [];
for (var i in this.Data) {
result[i] = this.Data[i].Down;
}
return result;
}
this.GetYear=function()
{
var result=new Array();
......@@ -495,6 +527,13 @@ function ChartData()
result[i].Close=overlayData[j].Close;
result[i].Vol=overlayData[j].Vol;
result[i].Amount=overlayData[j].Amount;
//涨跌家数数据
result[i].Stop = overlayData[j].Stop;
result[i].Up = overlayData[j].Up;
result[i].Down = overlayData[j].Down;
result[i].Unchanged = overlayData[j].Unchanged;
++j;
++i;
}
......
......@@ -1882,7 +1882,8 @@ JSIndexScript.prototype.TEST = function ()
Name: 'TEST', Description: '测试脚本', IsMainIndex: false,
Args: [{ Name: 'N', Value: 10 }],
Script: //脚本
'VAR2:SARTURN(10,2,20);'
'VARUP:INDEXADV;\n\
VARDOWN:INDEXDEC;'
};
return data;
......
......@@ -6262,11 +6262,11 @@ function IFrameSplitOperator()
var item=aryInfo[i];
var message=item.Message[0];
if (!message) isAllZero[0]=false;
else if (message!=0 && message.search(/[.][0]+/g)<=0) isAllZero[0] = false;
else if (!this.IsDecimalZeroEnd(message)) isAllZero[0] = false;
var message = item.Message[1];
if (!message) isAllZero[1]=false;
else if (message!=0 && message.search(/[.][0]+/g)<=0) isAllZero[1] = false;
else if (!this.IsDecimalZeroEnd(message)) isAllZero[1] = false;
}
if (isAllZero[0] == false && isAllZero[1]==false) return;
......@@ -6286,6 +6286,23 @@ function IFrameSplitOperator()
}
}
}
this.IsDecimalZeroEnd=function(text) //是否是0结尾的小数
{
if (!text) return false;
if (text=='0') return true;
var pos = text.search(/[.]/);
if (pos<0) return false;
for(var i=pos+1;i<text.length;++i)
{
var char = text.charAt(i);
if (char>='1' && char<='9') return false;
}
return true;
}
}
//字符串格式化 千分位分割
......@@ -11166,7 +11183,6 @@ MinuteChartContainer.JsonDataToMinuteData = function (data)
{
var preClose = data.stock[0].yclose; //前一个数据价格
var preAvPrice = data.stock[0].yclose; //前一个均价
var isFund = IsFundSymbol(data.stock[0].symbol);
var aryMinuteData = new Array();
for (var i in data.stock[0].minute)
{
......@@ -11186,8 +11202,12 @@ MinuteChartContainer.JsonDataToMinuteData = function (data)
item.Risefall = jsData.risefall;
item.AvPrice = jsData.avprice;
if (!item.Close && isFund) item.Close = preClose;
if (!item.AvPrice && isFund) item.AvPrice = preAvPrice;
if (!item.Close) //当前没有价格 使用上一个价格填充
{
item.Close = preClose;
item.Open = item.High = item.Low = item.Close;
}
if (!item.AvPrice) item.AvPrice = preAvPrice;
if (i == 0) //第1个数据 写死9:25
{
......@@ -11227,11 +11247,13 @@ MinuteChartContainer.JsonDataToMinuteDataArray = function (data)
var minuteData = [];
var dayData = data.data[i];
var date = dayData.date;
var yClose=dayData.yclose; //前收盘 计算涨幅
var yClose=dayData.yclose; //前收盘 计算涨幅
var preClose = yClose; //前一个数据价格
//var preAvPrice=data.stock[0].yclose; //前一个均价
for (var j in dayData.minute)
{
var jsData = dayData.minute[j];
if (jsData[2]) preClose = jsData[2]; //保存上一个收盘数据
var item = new MinuteData();
item.Close = jsData[2];
item.Open = jsData[1];
......@@ -11239,6 +11261,13 @@ MinuteChartContainer.JsonDataToMinuteDataArray = function (data)
item.Low = jsData[4];
item.Vol = jsData[5] / 100; //原始单位股
item.Amount = jsData[6];
if (!item.Close) //当前没有价格 使用上一个价格填充
{
item.Close = preClose;
item.Open = item.High = item.Low = item.Close;
}
if (item.Close && yClose) item.Increase = (item.Close - yClose)/yClose*100;
else item.Increase=null;
item.DateTime = date.toString() + " " + jsData[0].toString();
......@@ -12854,7 +12883,7 @@ function ScriptIndex(name, script, args, option) {
if (indexParam.length > 0) hqChart.TitlePaint[titleIndex].Title = this.Name + '(' + indexParam + ')';
if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('ScriptIndex', this.OutVar,
{ WindowIndex: windowIndex, Name: this.Name, Arguments: this.Arguments }); //通知上层回调
{ WindowIndex: windowIndex, Name: this.Name, Arguments: this.Arguments, HistoryData:hisData }); //通知上层回调
return true;
}
......@@ -13042,7 +13071,7 @@ function MarketLongShortIndex()
if (i > 0) hqChart.TitlePaint[titleIndex].Data[i].DataType = "StraightLine";
}
if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('MarketLongShortIndex', paint, {WindowIndex:windowIndex} ); //通知上层回调
if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('MarketLongShortIndex', paint, { WindowIndex: windowIndex, HistoryData: hisData} ); //通知上层回调
return true;
}
......@@ -13163,7 +13192,7 @@ function MarketTimingIndex()
hqChart.TitlePaint[titleIndex].Data[i].FloatPrecision = 0;
}
if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('MarketTimingIndex', paint, { WindowIndex: windowIndex }); //通知上层回调
if (hqChart.UpdateUICallback) hqChart.UpdateUICallback('MarketTimingIndex', paint, { WindowIndex: windowIndex, HistoryData: hisData }); //通知上层回调
return true;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册