You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2443 lines
84 KiB

/*
copyright (c) 2018 jones
http://www.apache.org/licenses/LICENSE-2.0
开源项目 https://github.com/jones2000/HQChart
jones_2000@163.com
各个品种分钟走势图坐标信息
*/
function GetLocalTime(i) //得到标准时区的时间的函数
{
if (typeof i !== 'number') return;
var d = new Date();
//得到1970年一月一日到现在的秒数
var len = d.getTime();
//本地时间与GMT时间的时间偏移差
var offset = d.getTimezoneOffset() * 60000;
//得到现在的格林尼治时间
var utcTime = len + offset;
return new Date(utcTime + 3600000 * i);
}
var MARKET_SUFFIX_NAME=
{
SH:'.SH',
SZ:'.SZ',
SHSZ_C_Index:'.CI', //自定义指数
SHO:'.SHO', //上海交易所 股票期权
HK:'.HK',
FHK: '.FHK', //港股期货
SHFE: '.SHF', //上期所 (Shanghai Futures Exchange)
SHFE2: '.SHFE', //上期所 (Shanghai Futures Exchange)
CFFEX: '.CFE', //中期所 (China Financial Futures Exchange)
DCE: '.DCE', //大连商品交易所(Dalian Commodity Exchange)
CZCE: '.CZC', //郑州期货交易所
USA: '.USA', //美股
FTSE: '.FTSE', //富时中国
BIT: '.BIT', //数字货币 如比特币
BIZ: '.BIZ', //数字货币
NYMEX: '.NYMEX', //纽约商品期货交易所(New York Mercantile Exchange)
COMEX: ".COMEX", //纽约商品期货交易所(New York Mercantile Exchange)
NYBOT: ".NYBOT", //美國紐約商品交易所
CBOT: ".CBOT", //芝商所
LME: ".LME", //伦敦金属交易所
ET: '.ET', //其他未知的品种
IsET: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.ET) > 0;
},
IsETShowAvPrice: function (upperSymbol) //是否显示均价
{
return false;
},
IsNYMEX: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.NYMEX) > 0;
},
IsCOMEX: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.COMEX) > 0;
},
IsNYBOT: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.NYBOT) > 0;
},
IsCBOT: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.CBOT) > 0;
},
IsLME: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.LME) > 0;
},
IsFTSE: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.FTSE) > 0;
},
IsFHK: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.FHK) > 0;
},
IsBIT: function (upperSymbol)
{
if (!upperSymbol) return false;
if (upperSymbol.indexOf(this.BIT) > 0) return true;
if (upperSymbol.indexOf(this.BIZ) > 0) return true;
return false;
},
IsUSA: function (upperSymbol) //是否是美股
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.USA) > 0;
},
IsSH: function (upperSymbol)
{
//需要精确匹配最后3位
var pos = upperSymbol.length-this.SH.length;
var find = upperSymbol.indexOf(this.SH);
return find == pos;
},
IsSZ: function (upperSymbol)
{
var pos = upperSymbol.length - this.SZ.length;
var find = upperSymbol.indexOf(this.SZ);
return find == pos;
},
//自定义指数
IsSHSZCustomIndex:function(upperSymbol)
{
var pos = upperSymbol.length - this.SHSZ_C_Index.length;
var find = upperSymbol.indexOf(this.SHSZ_C_Index);
return find == pos;
},
IsSHO: function (upperSymbol)
{
var pos = upperSymbol.length - this.SHO.length;
var find = upperSymbol.indexOf(this.SHO);
return find == pos;
},
IsHK: function (upperSymbol)
{
var pos = upperSymbol.length - this.HK.length;
var find = upperSymbol.indexOf(this.HK);
return find == pos;
},
IsSHFE: function (upperSymbol)
{
if (!upperSymbol) return false;
if (upperSymbol.indexOf(this.SHFE) > 0) return true;
if (upperSymbol.indexOf(this.SHFE2) > 0) return true;
return false;
},
IsCFFEX: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.CFFEX) > 0;
},
IsDCE: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.DCE) > 0;
},
IsCZCE: function (upperSymbol)
{
if (!upperSymbol) return false;
return upperSymbol.indexOf(this.CZCE) > 0;
},
IsChinaFutures: function (upperSymbol) //是否是国内期货
{
return this.IsCFFEX(upperSymbol) || this.IsCZCE(upperSymbol) || this.IsDCE(upperSymbol) || this.IsSHFE(upperSymbol);
},
IsFutures: function (upperSymbol) //是否是期货 包含国外的
{
return this.IsChinaFutures(upperSymbol) ||
this.IsNYMEX(upperSymbol) || this.IsCOMEX(upperSymbol) || this.IsNYBOT(upperSymbol) || this.IsCBOT(upperSymbol) ||
this.IsLME(upperSymbol);
},
IsSHSZ: function (upperSymbol) //是否是沪深的股票
{
return this.IsSZ(upperSymbol) || this.IsSH(upperSymbol) || this.IsSHSZCustomIndex(upperSymbol);
},
IsSHSZFund: function (upperSymbol) //是否是交易所基金
{
if (!upperSymbol) return false;
if (this.IsSH(upperSymbol)) //51XXXX.SH
{
if (upperSymbol.charAt(0) == '5' && upperSymbol.charAt(1) == '1') return true;
}
else if (this.IsSZ(upperSymbol)) //15XXXX.sz, 16XXXX.sz, 17XXXX.sz, 18XXXX.sz
{
if (upperSymbol.charAt(0) == '1' &&
(upperSymbol.charAt(1) == '5' || upperSymbol.charAt(1) == '6' || upperSymbol.charAt(1) == '7' || upperSymbol.charAt(1) == '8')) return true;
}
return false;
},
IsSHSZIndex: function (symbol) //是否是沪深指数代码
{
if (!symbol) return false;
var upperSymbol = symbol.toUpperCase();
if (this.IsSH(upperSymbol))
{
var temp = upperSymbol.replace('.SH', '');
if (upperSymbol.charAt(0) == '0' && parseInt(temp) <= 3000) return true;
}
else if (this.IsSZ(upperSymbol))
{
if (upperSymbol.charAt(0) == '3' && upperSymbol.charAt(1) == '9') return true;
}
else if (this.IsSHSZCustomIndex(upperSymbol)) //自定义指数
{
return true;
}
return false;
},
IsSHSZStockA: function (symbol) //是否是沪深A股
{
if (!symbol) return false;
var upperSymbol = symbol.toUpperCase();
if (this.IsSH(upperSymbol))
{
var temp = upperSymbol.replace('.SH', '');
if (upperSymbol.charAt(0) == '6') return true;
}
else if (this.IsSZ(upperSymbol))
{
if (upperSymbol.charAt(0) == '0')
{
if (upperSymbol.charAt(1) == '0' && upperSymbol.charAt(2) == '2') return true; //002 中小板
if (upperSymbol.charAt(1) != '7' && upperSymbol.charAt(1) != '8') return true;
}
}
return false;
},
IsSHStockSTAR: function (symbol) // 是否是科创板 Sci-Tech innovAtion boaRd (STAR Market)
{
if (!symbol) return false;
var upperSymbol = symbol.toUpperCase();
if (!this.IsSH(upperSymbol)) return false;
if (upperSymbol.charAt(0) == '6' && upperSymbol.charAt(1) == '8' && upperSymbol.charAt(2) == '8')
return true;
return false;
},
GetMarketStatus: function (symbol) //获取市场状态 0=闭市 1=盘前 2=盘中 3=盘后
{
if (!symbol) return 0;
var upperSymbol = symbol.toUpperCase();
var nowDate = new Date();
var day = nowDate.getDay();
var time = nowDate.getHours() * 100 + nowDate.getMinutes();
if (this.IsUSA(upperSymbol))
{
var usaDate = GetLocalTime(-4);
var day = usaDate.getDay();
var time = usaDate.getHours() * 100 + usaDate.getMinutes();
if (day == 6 || day == 0) return 0; //周末
//9:30 - 16:00 考虑夏令时间时间增加1小时 9:30 - 17:00
if (time > 1730) return 3;
if (time < 930) return 1;
return 2;
}
else if (this.IsBIT(upperSymbol)) //数字货币24小时
{
return 2;
}
else if (this.IsFTSE(upperSymbol)) //富时中国 9:00-16:30 17:00-04:45
{
if (day == 6 || day == 0) return 0; //周末
if (time >= 830 && time <= 2359) return 2;
if (time >= 0 && time <= 500) return 2;
return 0;
}
else if (this.IsFHK(upperSymbol)) //港股指数期货 9:15-12:00 13:00-16:30 17:15-01:00
{
if (day == 6 || day == 0) return 0; //周末
if (time >= 900 && time <= 2359) return 2;
if (time >= 0 && time <= 120) return 2;
return 0;
}
else if (this.IsET(upperSymbol))
{
return this.GetETMarketStatus(symbol);
}
else if (this.IsHK(upperSymbol)) //港股
{
if (day == 6 || day == 0) return 0; //周末
if (time > 1630) return 3;
if (time < 925) return 1;
return 2;
}
else if (this.IsNYMEX(upperSymbol))
{
return this.GetNYMEXMarketStatus(upperSymbol);
}
else if (this.IsCOMEX(upperSymbol))
{
return this.GetCOMEXMarketStatus(upperSymbol);
}
else if (this.IsNYBOT(upperSymbol))
{
return this.GetNYBOTMarketStatus(upperSymbol);
}
else if (this.IsCBOT(upperSymbol))
{
return this.GetCBOTMarketStatus(upperSymbol);
}
else if (this.IsChinaFutures(upperSymbol)) //国内期货
{
if(day == 6 || day== 0) return 0; //周末
//21:00-2:30
if(time>=2100) return 2;
if (time<=240) return 2;
//8:55-11:30, 13:00-15:00
if(time>=830 && time<=1510) return 2;
return 1;
}
else //9:30 - 15:40
{
if (day == 6 || day == 0) return 0; //周末
if (time > 1540) return 3;
if (time < 925) return 1;
return 2;
}
},
GetDefaultDecimal:function(symbol)
{
return 2;
},
GetFHKDecimal: function (symbol) //港股指数期货 小数位数
{
return 0;
},
GetFTSEDecimal: function (symbol) //富时中国A50期货 小数位数
{
return 0;
},
GetBITDecimal: function (symbol)
{
return 2;
},
GetETDecimal: function (symbol)
{
return 2;
},
GetSHODecimal: function (symbol)
{
return 4;
},
GetNYMEXDecimal: function (symbol) //纽约期货交易所
{
return g_NYMEXTimeData.GetDecimal(symbol);
},
GetCOMEXDecimal:function(symbol)
{
return g_COMEXTimeData.GetDecimal(symbol);
},
GetNYBOTDecimal:function(symbol)
{
return g_NYBOTTimeData.GetDecimal(symbol);
},
GetCBOTDecimal:function(symbol)
{
return g_CBOTTimeData.GetDecimal(symbol);
},
GetLMEDecimal:function(symbol)
{
return g_LMETimeData.GetDecimal(symbol);
},
GetETMarketStatus: function (symbol)
{
// 0=闭市 1=盘前 2=盘中 3=盘后
return 2;
},
GetCOMEXMarketStatus:function(symbol)
{
return g_COMEXTimeData.GetMarketStatus(symbol);
},
GetNYBOTMarketStatus:function(symbol)
{
return g_NYBOTTimeData.GetMarketStatus(symbol);
},
GetCBOTMarketStatus:function(symbol)
{
return g_CBOTTimeData.GetMarketStatus(symbol);
},
GetNYMEXMarketStatus: function (symbol)
{
return g_NYMEXTimeData.GetMarketStatus(symbol);
},
GetLimitPriceRange:function(symbol, name) //涨停范围
{
if (!this.IsSHSZStockA(symbol)) return null;
if (this.IsSHStockSTAR(symbol)) return {Max:0.2 , Min:-0.2}; //科创板 [20%- -20%]
if (!name) return null;
if (name.indexOf('ST')>=0) return { Max:0.05, Min:-0.05 }; //ST 股票 [5% - -5%]
return {Max:0.1 , Min:-0.1}; //[10% - -10%]
},
}
//走势图分钟数据对应的时间
function MinuteTimeStringData()
{
this.SHSZ = null; //上海深证交易所时间
this.HK = null; //香港交易所时间
this.Futures=new Map(); //期货交易时间 key=时间名称 Value=数据
this.USA = null; //美股交易时间
this.FTSE = null; //富时中国
this.FHK = null; //港股指数期货
this.BIT=null; //数字货币
this.Initialize = function () //初始化 默认只初始化沪深的 其他市场动态生成
{
//this.SHSZ = this.CreateSHSZData();
//this.HK = this.CreateHKData();
}
this.GetET = function (upperSymbol) //当天所有的分钟
{
throw { Name: 'MinuteTimeStringData::GetET', Error: 'not implement' };
}
this.GetSHSZ=function() //动态创建
{
if (!this.SHSZ) this.SHSZ=this.CreateSHSZData();
return this.SHSZ;
}
this.GetSHO = function ()
{
if (!this.SHO) this.SHO = this.CreateSHOData();
return this.SHO;
}
this.GetHK=function()
{
if (!this.HK) this.HK = this.CreateHKData();
return this.HK;
}
this.GetFutures=function(splitData)
{
if (!this.Futures.has(splitData.Name))
{
var data = this.CreateTimeData(splitData.Data);
this.Futures.set(splitData.Name,data);
}
return this.Futures.get(splitData.Name);
}
this.GetUSA=function()
{
if (!this.USA) this.USA=this.CreateUSAData();
return this.USA;
}
this.GetFTSE = function ()
{
if (!this.FTSE) this.FTSE = this.CreateFTSEData();
return this.FTSE;
}
this.GetFHK = function ()
{
if (!this.FHK) this.FHK = this.CreateFHKData();
return this.FHK;
}
this.GetBIT=function(upperSymbol)
{
if (!this.BIT) this.BIT=this.CreateBITData();
return this.BIT;
}
this.CreateSHSZData = function ()
{
const TIME_SPLIT =
[
{ Start: 925, End: 925 },
{ Start: 930, End: 1130 },
{ Start: 1300, End: 1500 }
];
return this.CreateTimeData(TIME_SPLIT);
}
this.CreateSHOData = function ()
{
const TIME_SPLIT =
[
{ Start: 930, End: 1129 },
{ Start: 1300, End: 1500 }
];
return this.CreateTimeData(TIME_SPLIT);
}
this.CreateHKData = function ()
{
const TIME_SPLIT =
[
{ Start: 930, End: 1200 },
{ Start: 1300, End: 1600 }
];
return this.CreateTimeData(TIME_SPLIT);
}
this.CreateUSAData=function()
{
//美国夏令时
const TIME_SUMMER_SPLIT =
[
{ Start: 2130, End: 2359 },
{ Start: 0, End: 400 }
];
//非夏令时
const TIME_SPLIT =
[
{ Start: 2230, End: 2359 },
{ Start: 0, End: 500 }
];
//使用美国本地时间
const TIME_LOCAL_SPLIT =
[
{ Start: 930, End: 1600 } //美国东部时间9:30到16:00
];
return this.CreateTimeData(TIME_LOCAL_SPLIT);
}
this.CreateFTSEData = function ()
{
const TIME_SPLIT =
[
{ Start: 1700, End: 2359 },
{ Start: 0, End: 445 },
{ Start: 900, End: 1630 }
];
return this.CreateTimeData(TIME_SPLIT);
}
this.CreateFHKData = function ()
{
//港股指数期货 9:15-12:00 13:00-16:30 17:15-01:00
const TIME_SPLIT =
[
{ Start: 1715, End: 2359 },
{ Start: 0, End: 100 },
{ Start: 915, End: 1200 },
{ Start: 1300, End: 1630 },
];
return this.CreateTimeData(TIME_SPLIT);
}
this.CreateBITData=function()
{
//数字货币 7:00 - 6:59
const TIME_SPLIT=
[
{ Start:600, End:2359 },
{ Start:0, End:559 },
];
return this.CreateTimeData(TIME_SPLIT);
}
this.CreateTimeData = function (timeSplit)
{
var data = [];
for (var i in timeSplit)
{
var item = timeSplit[i];
for (var j = item.Start; j <= item.End; ++j)
{
if (j % 100 >= 60) continue; //大于60分钟的数据去掉
data.push(j);
}
}
return data;
}
this.GetTimeData = function (symbol)
{
if (!symbol) return this.SHSZ;
var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol) || MARKET_SUFFIX_NAME.IsSHSZIndex(upperSymbol)) return this.GetSHSZ();
if (MARKET_SUFFIX_NAME.IsHK(upperSymbol)) return this.GetHK();
if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol))
{
var splitData = g_FuturesTimeData.GetSplitData(upperSymbol);
if (!splitData) return null;
return this.GetFutures(splitData);
}
if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol)) return this.GetFTSE();
if (MARKET_SUFFIX_NAME.IsFHK(upperSymbol)) return this.GetFHK();
if (MARKET_SUFFIX_NAME.IsET(upperSymbol)) return this.GetET(upperSymbol);
if (MARKET_SUFFIX_NAME.IsBIT(upperSymbol)) return this.GetBIT(upperSymbol);
if (MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol)) //纽约期货交易所
{
var splitData = g_NYMEXTimeData.GetSplitData(upperSymbol);
if (!splitData) return null;
return this.GetFutures(splitData);
}
if (MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol)) //纽约期货交易所
{
var splitData = g_COMEXTimeData.GetSplitData(upperSymbol);
if (!splitData) return null;
return this.GetFutures(splitData);
}
if (MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol)) //纽约期货交易所
{
var splitData = g_NYBOTTimeData.GetSplitData(upperSymbol);
if (!splitData) return null;
return this.GetFutures(splitData);
}
if (MARKET_SUFFIX_NAME.IsCBOT(upperSymbol)) //芝商所
{
var splitData = g_CBOTTimeData.GetSplitData(upperSymbol);
if (!splitData) return null;
return this.GetFutures(splitData);
}
if (MARKET_SUFFIX_NAME.IsLME(upperSymbol)) //伦敦LME
{
var splitData = g_LMETimeData.GetSplitData(upperSymbol);
if (!splitData) return null;
return this.GetFutures(splitData);
}
}
}
//走势图刻度分钟线
function MinuteCoordinateData()
{
//沪深走势图时间刻度
const SHZE_MINUTE_X_COORDINATE =
{
Full: //完整模式
[
[0, 0, "rgb(200,200,200)", "09:30"],
[31, 0, "RGB(200,200,200)", "10:00"],
[61, 0, "RGB(200,200,200)", "10:30"],
[91, 0, "RGB(200,200,200)", "11:00"],
[122, 1, "RGB(200,200,200)", "13:00"],
[152, 0, "RGB(200,200,200)", "13:30"],
[182, 0, "RGB(200,200,200)", "14:00"],
[212, 0, "RGB(200,200,200)", "14:30"],
[242, 1, "RGB(200,200,200)", "15:00"], // 15:00
],
Simple: //简洁模式
[
[0, 0, "rgb(200,200,200)", "09:30"],
[61, 0, "RGB(200,200,200)", "10:30"],
[122, 1, "RGB(200,200,200)", "13:00"],
[182, 0, "RGB(200,200,200)", "14:00"],
[242, 1, "RGB(200,200,200)", "15:00"]
],
Min: //最小模式
[
[0, 0, "rgb(200,200,200)", "09:30"],
[122, 1, "RGB(200,200,200)", "13:00"],
[242, 1, "RGB(200,200,200)", "15:00"]
],
Count: 243,
MiddleCount: 122,
GetData: function (width)
{
if (width < 200) return this.Min;
else if (width < 400) return this.Simple;
return this.Full;
}
};
//上海股票期权时间刻度
const SHO_MINUTE_X_COORDINATE =
{
Full: //完整模式
[
[0, 0, "rgb(200,200,200)", "09:30"],
[30, 0, "RGB(200,200,200)", "10:00"],
[60, 0, "RGB(200,200,200)", "10:30"],
[90, 0, "RGB(200,200,200)", "11:00"],
[120, 1, "RGB(200,200,200)", "13:00"],
[150, 0, "RGB(200,200,200)", "13:30"],
[180, 0, "RGB(200,200,200)", "14:00"],
[210, 0, "RGB(200,200,200)", "14:30"],
[240, 1, "RGB(200,200,200)", "15:00"], // 15:00
],
Simple: //简洁模式
[
[0, 0, "rgb(200,200,200)", "09:30"],
[60, 0, "RGB(200,200,200)", "10:30"],
[120, 1, "RGB(200,200,200)", "13:00"],
[180, 0, "RGB(200,200,200)", "14:00"],
[240, 1, "RGB(200,200,200)", "15:00"]
],
Min: //最小模式
[
[0, 0, "rgb(200,200,200)", "09:30"],
[120, 1, "RGB(200,200,200)", "13:00"],
[240, 1, "RGB(200,200,200)", "15:00"]
],
Count: 241,
MiddleCount: 120,
GetData: function (width) {
if (width < 200) return this.Min;
else if (width < 400) return this.Simple;
return this.Full;
}
};
//港股走势图时间刻度
const HK_MINUTE_X_COORDINATE =
{
Full: //完整模式
[
[0, 1, "RGB(200,200,200)", "09:30"],
[30, 0, "RGB(200,200,200)", "10:00"],
[60, 1, "RGB(200,200,200)", "10:30"],
[90, 0, "RGB(200,200,200)", "11:00"],
[120, 1, "RGB(200,200,200)", "11:30"],
[151, 0, "RGB(200,200,200)", "13:00"],
[181, 1, "RGB(200,200,200)", "13:30"],
[211, 0, "RGB(200,200,200)", "14:00"],
[241, 1, "RGB(200,200,200)", "14:30"],
[271, 0, "RGB(200,200,200)", "15:00"],
[301, 1, "RGB(200,200,200)", "15:30"],
[331, 1, "RGB(200,200,200)", "16:00"]
],
Simple: //简洁模式
[
[0, 1, "RGB(200,200,200)", "09:30"],
[60, 1, "RGB(200,200,200)", "10:30"],
[120, 1, "RGB(200,200,200)", "11:30"],
[211, 0, "RGB(200,200,200)", "14:00"],
[271, 0, "RGB(200,200,200)", "15:00"],
[331, 1, "RGB(200,200,200)", "16:00"]
],
Min: //最小模式
[
[0, 1, "RGB(200,200,200)", "09:30"],
[151, 0, "RGB(200,200,200)", "13:00"],
[331, 1, "RGB(200,200,200)", "16:00"]
],
Count: 332,
MiddleCount: 151,
GetData: function (width)
{
if (width < 200) return this.Min;
else if (width < 450) return this.Simple;
return this.Full;
}
};
//富时中国
const FTSE_MINUTE_X_COORDINATE =
{
Full: //完整模式
[
[0, 1, "RGB(200,200,200)", "17:00"],
//[60, 0, "RGB(200,200,200)", "18:00"],
[120, 1, "RGB(200,200,200)", "19:00"],
//[180, 0, "RGB(200,200,200)", "20:00"],
[240, 1, "RGB(200,200,200)", "21:00"],
//[300, 0, "RGB(200,200,200)", "22:00"],
[360, 1, "RGB(200,200,200)", "23:00"],
//[420, 0, "RGB(200,200,200)", "00:00"],
[480, 1, "RGB(200,200,200)", "01:00"],
//[540, 0, "RGB(200,200,200)", "02:00"],
[600, 1, "RGB(200,200,200)", "03:00"],
//[660, 1, "RGB(200,200,200)", "04:00"],
[706, 1, "RGB(200,200,200)", "09:00"],
//[766, 1, "RGB(200,200,200)", "10:00"],
[826, 1, "RGB(200,200,200)", "11:00"],
//[886, 1, "RGB(200,200,200)", "12:00"],
[946, 1, "RGB(200,200,200)", "13:00"],
//[1006, 1, "RGB(200,200,200)", "14:00"],
[1066, 1, "RGB(200,200,200)", "15:00"],
[1156, 1, "RGB(200,200,200)", "16:30"],
],
Simple: //简洁模式
[
[0, 1, "RGB(200,200,200)", "17:00"],
//[60, 0, "RGB(200,200,200)", "18:00"],
//[120, 1, "RGB(200,200,200)", "19:00"],
//[180, 0, "RGB(200,200,200)", "20:00"],
[240, 1, "RGB(200,200,200)", "21:00"],
//[300, 0, "RGB(200,200,200)", "22:00"],
//[360, 1, "RGB(200,200,200)", "23:30"],
//[420, 0, "RGB(200,200,200)", "00:00"],
[480, 1, "RGB(200,200,200)", "01:00"],
//[540, 0, "RGB(200,200,200)", "02:00"],
//[600, 1, "RGB(200,200,200)", "03:00"],
//[660, 1, "RGB(200,200,200)", "04:00"],
[706, 1, "RGB(200,200,200)", "09:00"],
//[766, 1, "RGB(200,200,200)", "10:00"],
//[826, 1, "RGB(200,200,200)", "11:00"],
//[886, 1, "RGB(200,200,200)", "12:00"],
[946, 1, "RGB(200,200,200)", "13:00"],
//[1006, 1, "RGB(200,200,200)", "14:00"],
//[1066, 1, "RGB(200,200,200)", "15:00"],
[1156, 1, "RGB(200,200,200)", "16:30"],
],
Min: //最小模式
[
[0, 1, "RGB(200,200,200)", "17:00"],
[706, 1, "RGB(200,200,200)", "09:00"],
[1156, 1, "RGB(200,200,200)", "16:30"],
],
Count: 1157,
MiddleCount: 707,
GetData: function (width) {
if (width < 200) return this.Min;
else if (width < 450) return this.Simple;
return this.Full;
}
};
//港股指数期货
const FHK_MINUTE_X_COORDINATE =
{
Full: //完整模式
[
[0, 1, "RGB(200,200,200)", "17:15"],
//[45, 0, "RGB(200,200,200)", "18:00"],
[105, 1, "RGB(200,200,200)", "19:00"],
//[165, 0, "RGB(200,200,200)", "20:00"],
[225, 1, "RGB(200,200,200)", "21:00"],
//[285, 0, "RGB(200,200,200)", "22:00"],
[345, 1, "RGB(200,200,200)", "23:00"],
//[405, 0, "RGB(200,200,200)", "00:00"],
[466, 0, "RGB(200,200,200)", "09:15"],
//[511, 1, "RGB(200,200,200)", "10:00"],
[571, 1, "RGB(200,200,200)", "11:00"],
//[632, 1, "RGB(200,200,200)", "13:00"],
[692, 1, "RGB(200,200,200)", "14:00"],
//[752, 1, "RGB(200,200,200)", "15:00"],
[843, 1, "RGB(200,200,200)", "16:30"],
],
Simple: //简洁模式
[
[0, 1, "RGB(200,200,200)", "17:15"],
//[45, 0, "RGB(200,200,200)", "18:00"],
//[105, 1, "RGB(200,200,200)", "19:00"],
//[165, 0, "RGB(200,200,200)", "20:00"],
[225, 1, "RGB(200,200,200)", "21:00"],
//[285, 0, "RGB(200,200,200)", "22:00"],
//[345, 1, "RGB(200,200,200)", "23:00"],
//[405, 0, "RGB(200,200,200)", "00:00"],
[466, 0, "RGB(200,200,200)", "09:15"],
//[511, 1, "RGB(200,200,200)", "10:00"],
//[571, 1, "RGB(200,200,200)", "11:00"],
[632, 1, "RGB(200,200,200)", "13:00"],
//[692, 1, "RGB(200,200,200)", "14:00"],
//[752, 1, "RGB(200,200,200)", "15:00"],
[843, 1, "RGB(200,200,200)", "16:30"],
],
Min: //最小模式
[
[0, 1, "RGB(200,200,200)", "17:15"],
[466, 0, "RGB(200,200,200)", "09:15"],
[843, 1, "RGB(200,200,200)", "16:30"],
],
Count: 843,
MiddleCount: 466,
GetData: function (width) {
if (width < 200) return this.Min;
else if (width < 450) return this.Simple;
return this.Full;
}
};
this.GetCoordinateData = function (symbol, width)
{
var data = null;
if (!symbol)
{
data = SHZE_MINUTE_X_COORDINATE; //默认沪深股票
}
else
{
var upperSymbol = symbol.toLocaleUpperCase(); //转成大写
if (MARKET_SUFFIX_NAME.IsSH(upperSymbol) || MARKET_SUFFIX_NAME.IsSZ(upperSymbol))
data = this.GetSHSZData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol))
data = this.GetSHOData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsHK(upperSymbol))
data = HK_MINUTE_X_COORDINATE;
else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol) || MARKET_SUFFIX_NAME.IsCZCE(upperSymbol) || MARKET_SUFFIX_NAME.IsDCE(upperSymbol) || MARKET_SUFFIX_NAME.IsSHFE(upperSymbol))
return this.GetChinatFuturesData(upperSymbol,width);
else if (MARKET_SUFFIX_NAME.IsUSA(upperSymbol))
data = this.GetUSAData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol, width))
data = this.GetFTSEData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsFHK(upperSymbol, width))
data = this.GetFHKData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsET(upperSymbol))
data = this.GetETData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol, width))
return data = this.GetNYMEXData(upperSymbol, width);
else if (MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol,width))
return data=this.GetCOMEXData(upperSymbol,width);
else if (MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol,width))
return data=this.GetNYBOTData(upperSymbol,width);
else if (MARKET_SUFFIX_NAME.IsCBOT(upperSymbol,width))
return data=this.GetCBOTData(upperSymbol,width);
else if (MARKET_SUFFIX_NAME.IsLME(upperSymbol,width))
return data=this.GetLMEData(upperSymbol,width);
else if ((MARKET_SUFFIX_NAME.IsBIT(upperSymbol,width)))
data=this.GetBITData(upperSymbol,width);
}
//console.log('[MiuteCoordinateData]', width);
var result = { Count: data.Count, MiddleCount: data.MiddleCount, Data: data.GetData(width) };
return result;
}
this.GetSHSZData = function (upperSymbol, width)
{
var result = SHZE_MINUTE_X_COORDINATE;
return result;
}
this.GetFuturesData = function (upperSymbol,width,timeData)
{
var splitData = timeData.GetSplitData(upperSymbol);
if (!splitData) return null;
var stringData = g_MinuteTimeStringData.GetFutures(splitData);
if (!stringData) return null;
var result = { Count: stringData.length };
var coordinate=null;
var minWidth=200, simpleWidth=480;
/*
if (splitData.Name =='21:00-1:00,9:00-10:15,10:30-11:30,13:30-15:00')
{
minWidth=250;
simpleWidth=500;
}
*/
if (width < minWidth) coordinate = splitData.Coordinate.Min;
else if (width < simpleWidth) coordinate = splitData.Coordinate.Simple;
else coordinate = splitData.Coordinate.Full;
var data=[];
for(var i=0;i<stringData.length;++i)
{
var value = stringData[i];
for(var j=0;j<coordinate.length;++j)
{
var coordinateItem = coordinate[j];
if (value == coordinateItem.Value)
{
var item = [i, 0, 'RGB(200,200,200)', coordinateItem.Text];
data.push(item);
break;
}
}
}
result.Data = data;
return result;
}
this.GetChinatFuturesData=function(upperSymbol,width)
{
return this.GetFuturesData(upperSymbol,width, g_FuturesTimeData);
}
this.GetNYMEXData=function(upperSymbol,width)
{
return this.GetFuturesData(upperSymbol,width, g_NYMEXTimeData);
}
this.GetCOMEXData=function(upperSymbol,width)
{
return this.GetFuturesData(upperSymbol,width, g_COMEXTimeData);
}
this.GetNYBOTData=function(upperSymbol,width)
{
return this.GetFuturesData(upperSymbol,width, g_NYBOTTimeData);
}
this.GetCBOTData=function(upperSymbol,width)
{
return this.GetFuturesData(upperSymbol,width, g_CBOTTimeData);
}
this.GetLMEData=function(upperSymbol,width)
{
return this.GetFuturesData(upperSymbol,width, g_LMETimeData);
}
this.GetFTSEData = function (upperSymbol, width)
{
var result = FTSE_MINUTE_X_COORDINATE;
return result;
}
this.GetFHKData = function (upperSymbol, width)
{
var result = FHK_MINUTE_X_COORDINATE;
return result
}
this.GetETData = function (upperSymbol, width)
{
throw { Name: 'MinuteCoordinateData::GetETData', Error: 'not implement' };
}
this.GetBITData=function(upperSymbol,width)
{
throw { Name: 'MinuteCoordinateData::GetBITData', Error: 'not implement' };
}
this.GetUSAData = function (upperSymbol, width)
{
var result = USA_MINUTE_X_COORDINATE;
return result;
}
this.GetSHOData = function (upperSymbol, width)
{
var result = SHO_MINUTE_X_COORDINATE;
return result;
}
}
//期货不同品种 交易时间数据
function FuturesTimeData()
{
this.TIME_SPLIT=
[
{
Name:'9:00-10:15,10:30-11:30,13:30-15:00',
Data:
[
//9:00-10:15,10:30-11:30,13:30-15:00
{ Start: 900, End: 1015 },
{ Start: 1031, End: 1130 },
{ Start: 1331, End: 1500 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 900, Text: '9:00' },
{ Value: 930, Text: '9:30' },
{ Value: 1000, Text: '10:00' },
{ Value: 1031, Text: '10:30' },
{ Value: 1100, Text: '11:00' },
{ Value: 1331, Text: '13:30' },
{ Value: 1400, Text: '14:00' },
{ Value: 1430, Text: '14:30' },
{ Value: 1500, Text: '15:00' },
],
Simple: //简洁模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1000, Text: '10:00' },
{ Value: 1331, Text: '13:30' },
{ Value: 1430, Text: '14:30' },
{ Value: 1500, Text: '15:00' },
],
Min: //最小模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1331, Text: '13:30' },
{ Value: 1500, Text: '15:00' },
]
}
},
{
Name:'9:15-11:30,13:00-15:15',
Data:
[
{ Start: 915, End: 1130 },
{ Start: 1301, End: 1515 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 930, Text: '9:30' },
{ Value: 1000, Text: '10:00' },
{ Value: 1030, Text: '10:30' },
{ Value: 1100, Text: '11:00' },
{ Value: 1301, Text: '13:00' },
{ Value: 1330, Text: '13:30' },
{ Value: 1400, Text: '14:00' },
{ Value: 1430, Text: '14:30' },
{ Value: 1515, Text: '15:15' },
],
Simple: //简洁模式
[
{ Value: 930, Text: '9:30' },
{ Value: 1030, Text: '10:30' },
{ Value: 1301, Text: '13:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1515, Text: '15:15' },
],
Min: //最小模式
[
{ Value: 930, Text: '9:30' },
{ Value: 1301, Text: '13:00' },
{ Value: 1515, Text: '15:15' },
]
}
},
{
Name:'9:30-11:30,13:00-15:00',
Data:
[
{ Start: 930, End: 1130 },
{ Start: 1301, End: 1500 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 930, Text: '9:30' },
{ Value: 1000, Text: '10:00' },
{ Value: 1030, Text: '10:30' },
{ Value: 1100, Text: '11:00' },
{ Value: 1301, Text: '13:00' },
{ Value: 1330, Text: '13:30' },
{ Value: 1400, Text: '14:00' },
{ Value: 1430, Text: '14:30' },
{ Value: 1500, Text: '15:00' },
],
Simple: //简洁模式
[
{ Value: 930, Text: '9:30' },
{ Value: 1030, Text: '10:30' },
{ Value: 1301, Text: '13:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1500, Text: '15:00' },
],
Min: //最小模式
[
{ Value: 930, Text: '9:30' },
{ Value: 1301, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
]
}
},
{
Name:'21:00-23:30,9:00-10:15,10:30-11:30,13:30-15:00',
Data:
[
{ Start: 2100, End: 2330 },
{ Start: 901, End: 1015 },
{ Start: 1031, End: 1130 },
{ Start: 1331, End: 1500 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1031, Text: '10:30' },
{ Value: 1331, Text: '13:30' },
{ Value: 1430, Text: '14:30' },
{ Value: 1500, Text: '15:00' },
],
Simple: //简洁模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1331, Text: '13:30' },
{ Value: 1500, Text: '15:00' },
],
Min: //最小模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1500, Text: '15:00' },
]
}
},
{
Name:'21:00-1:00,9:00-10:15,10:30-11:30,13:30-15:00',
Data:
[
{ Start: 2100, End: 2359 },
{ Start: 0, End: 100 },
{ Start: 901, End: 1015 },
{ Start: 1031, End: 1130 },
{ Start: 1301, End: 1500 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1030, Text: '10:30' },
{ Value: 1331, Text: '13:30' },
{ Value: 1500, Text: '15:00' },
],
Simple: //简洁模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1031, Text: '10:30' },
{ Value: 1500, Text: '15:00' },
],
Min: //最小模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1500, Text: '15:00' },
]
}
},
{
Name:'21:00-2:30,9:00-10:15,10:30-11:30,13:30-15:00',
Data:
[
{ Start: 2100, End: 2359 },
{ Start: 0, End: 230 },
{ Start: 901, End: 1015 },
{ Start: 1031, End: 1130 },
{ Start: 1331, End: 1500 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 100, Text: '1:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1031, Text: '10:30' },
{ Value: 1331, Text: '13:30' },
{ Value: 1500, Text: '15:00' },
],
Simple: //简洁模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1500, Text: '15:00' },
],
Min: //最小模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 901, Text: '9:00' },
{ Value: 1500, Text: '15:00' },
]
}
},
{
Name: '21:00-23:00,9:00-10:15,10:30-11:30,13:30-15:00',
Data:
[
{ Start: 2100, End: 2300 },
{ Start: 901, End: 1015 },
{ Start: 1031, End: 1130 },
{ Start: 1331, End: 1500 }
],
Coordinate:
{
Full://完整模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1031, Text: '10:30' },
{ Value: 1331, Text: '13:30' },
{ Value: 1430, Text: '14:30' },
{ Value: 1500, Text: '15:00' },
],
Simple: //简洁模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1331, Text: '13:30' },
{ Value: 1500, Text: '15:00' },
],
Min: //最小模式
[
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1500, Text: '15:00' },
]
}
}
];
this.MAP_TWOWORDS = new Map([
//大连商品交易所
[MARKET_SUFFIX_NAME.DCE + '-JD', {Time:0,Decimal:0,Name:"鸡蛋"}],
[MARKET_SUFFIX_NAME.DCE + '-FB', {Time:0,Decimal:2,Name:"纤板"}],
[MARKET_SUFFIX_NAME.DCE + '-BB', {Time:0,Decimal:2,Name:"胶板"}],
[MARKET_SUFFIX_NAME.DCE + '-PP', {Time:6,Decimal:0,Name:"丙烯"}],
[MARKET_SUFFIX_NAME.DCE + '-JM', {Time:6,Decimal:1,Name:'焦煤'}],
[MARKET_SUFFIX_NAME.DCE + '-EG', {Time:6,Decimal:0,Name:'乙二醇'}],
[MARKET_SUFFIX_NAME.DCE + '-EB', {Time:6,Decimal:0,Name:'苯乙烯'}],
[MARKET_SUFFIX_NAME.DCE + '-CS', {Time:6,Decimal:0,Name:'淀粉'}],
[MARKET_SUFFIX_NAME.DCE + '-PG', {Time:6,Decimal:0,Name:'液化气'}],
[MARKET_SUFFIX_NAME.DCE + '-RR', {Time:6,Decimal:0,Name:'梗米'}],
//上期所
[MARKET_SUFFIX_NAME.SHFE + '-CU', { Time: 4, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-AL', { Time: 4, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-NI', { Time: 4, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-SN', { Time: 4, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-ZN', { Time: 4, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-PB', { Time: 4, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-RU', { Time: 6, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-FU', { Time: 6, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-RB', { Time: 6, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-BU', { Time: 6, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-HC', { Time: 6, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-WR', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-AG', { Time: 5, Decimal: 0 }],
[MARKET_SUFFIX_NAME.SHFE + '-AU', { Time: 5, Decimal: 2 }],
[MARKET_SUFFIX_NAME.SHFE + '-SP', { Time: 5, Decimal: 2 }],
[MARKET_SUFFIX_NAME.SHFE + '-SS', { Time: 5, Decimal: 2 }],
//上期能源
[MARKET_SUFFIX_NAME.SHFE + '-NR', {Time:6,Decimal:1,Name:'20号胶'}],
[MARKET_SUFFIX_NAME.SHFE + '-SC', {Time:6,Decimal:1,Name:'中质含硫原油'}],
[MARKET_SUFFIX_NAME.SHFE + '-LU', {Time:6,Decimal:0,Name:'低硫燃料油'}],
[MARKET_SUFFIX_NAME.SHFE + '-BC', {Time:6,Decimal:0,Name:'国际铜'}],
//郑州期货交易所
[MARKET_SUFFIX_NAME.CZCE + '-CF', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-SR', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-MA', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-ZC', { Time: 3, Decimal: 1 }],
[MARKET_SUFFIX_NAME.CZCE + '-TA', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-RM', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-OI', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-ME', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-FG', { Time: 3, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-WS', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-WT', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-GN', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-RO', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-RS', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-ER', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-RI', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-WH', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-AP', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-PM', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-QM', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-TC', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-JR', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-LR', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-SF', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-SM', { Time: 0, Decimal: 0 }],
[MARKET_SUFFIX_NAME.CZCE + '-PK', { Time: 0, Decimal: 0, Name:"花生" }],
[MARKET_SUFFIX_NAME.CZCE + '-CJ', { Time: 0, Decimal: 0, Name:"红枣"}],
[MARKET_SUFFIX_NAME.CZCE + '-CY', { Time: 0, Decimal: 0, Name:"棉纱" }],
[MARKET_SUFFIX_NAME.CZCE + '-UR', { Time: 0, Decimal: 0, Name:"尿素" }],
[MARKET_SUFFIX_NAME.CZCE + '-PF', { Time: 0, Decimal: 0, Name:"短纤" }],
[MARKET_SUFFIX_NAME.CZCE + '-SA', { Time: 0, Decimal: 0, Name:"纯碱" }],
//中期所
[MARKET_SUFFIX_NAME.CFFEX + '-TF', {Time:1,Decimal:3,Name:"二债"}],
[MARKET_SUFFIX_NAME.CFFEX + '-TS', {Time:1,Decimal:3,Name:"五债"}],
[MARKET_SUFFIX_NAME.CFFEX + '-IH', {Time:2,Decimal:1,Name:'上证股指期货'}],
[MARKET_SUFFIX_NAME.CFFEX + '-IC', {Time:2,Decimal:1,Name:'中证股指期货'}],
[MARKET_SUFFIX_NAME.CFFEX + '-IF', {Time:2,Decimal:1,Name:'沪深股指期货'}],
]);
this.MAP_ONEWORD = new Map([
//大连商品交易所
[MARKET_SUFFIX_NAME.DCE + '-C', {Time:6,Decimal:0,Name:"玉米"}],
[MARKET_SUFFIX_NAME.DCE + '-L', {Time:6,Decimal:0,Name:"乙烯"}],
[MARKET_SUFFIX_NAME.DCE + '-V', {Time:6,Decimal:0,Name:"PVC"}],
[MARKET_SUFFIX_NAME.DCE + '-A', {Time:6,Decimal:0,Name:"豆一"}],
[MARKET_SUFFIX_NAME.DCE + '-B', {Time:6,Decimal:0,Name:"豆二"}],
[MARKET_SUFFIX_NAME.DCE + '-M', {Time:6,Decimal:0,Name:"豆粕"}],
[MARKET_SUFFIX_NAME.DCE + '-Y', {Time:6,Decimal:0,Name:"豆油"}],
[MARKET_SUFFIX_NAME.DCE + '-P', {Time:6,Decimal:0,Name:"棕榈"}],
[MARKET_SUFFIX_NAME.DCE + '-J', {Time:6,Decimal:1,Name:'焦炭'}],
[MARKET_SUFFIX_NAME.DCE + '-I', {Time:6,Decimal:1,Name:"铁矿"}],
//中期所
[MARKET_SUFFIX_NAME.CFFEX + '-T', { Time: 1, Decimal: 3, Name:"十债"}],
]);
this.GetData = function (upperSymbol)
{
var oneWord = upperSymbol.charAt(0);
var twoWords = upperSymbol.substr(0, 2);
var oneWordName = null, twoWordsName = null;
if (MARKET_SUFFIX_NAME.IsDCE(upperSymbol)) //大连商品交易所
{
oneWordName = MARKET_SUFFIX_NAME.DCE + '-' + oneWord;
twoWordsName = MARKET_SUFFIX_NAME.DCE + '-' + twoWords;
}
else if (MARKET_SUFFIX_NAME.IsSHFE(upperSymbol)) //上期所
{
oneWordName = MARKET_SUFFIX_NAME.SHFE + '-' + oneWord;
twoWordsName = MARKET_SUFFIX_NAME.SHFE + '-' + twoWords;
}
else if (MARKET_SUFFIX_NAME.IsCFFEX(upperSymbol)) //中期所
{
oneWordName = MARKET_SUFFIX_NAME.CFFEX + '-' + oneWord;
twoWordsName = MARKET_SUFFIX_NAME.CFFEX + '-' + twoWords;
}
else if (MARKET_SUFFIX_NAME.IsCZCE(upperSymbol)) //郑州期货交易所
{
oneWordName = MARKET_SUFFIX_NAME.CZCE + '-' + oneWord;
twoWordsName = MARKET_SUFFIX_NAME.CZCE + '-' + twoWords;
}
if (this.MAP_TWOWORDS.has(twoWordsName))
{
return this.MAP_TWOWORDS.get(twoWordsName);
}
if (this.MAP_ONEWORD.has(oneWordName))
{
return this.MAP_ONEWORD.get(oneWordName);
}
return null;
}
this.GetSplitData = function (upperSymbol)
{
var data = this.GetData(upperSymbol);
if (!data) return null;
return this.TIME_SPLIT[data.Time];
}
this.GetDecimal = function (upperSymbol) //期货价格小数位数
{
var data = this.GetData(upperSymbol);
if (!data) return 2;
return data.Decimal;
}
//添加新品种
this.AddNewFutures=function(obj) //{ Suffix:后缀, Symbol:品种代码, Time:交易时间段, Decimal:小数位数, Name:名字 }
{
if (!obj) return;
var key=obj.Suffix+'-'+obj.Symbol;
var item={ Time:obj.Time, Decimal:obj.Decimal, Name:obj.Name };
if (obj.Symbol.length==1)
{
this.MAP_ONEWORD.set(key, item);
}
else if (obj.Symbol.length==2)
{
this.MAP_TWOWORDS.set(key, item);
}
}
}
//纽约商品期货交易所 交易时间数据
function NYMEXTimeData()
{
this.MarketSuffix=".NYMEX";
this.TimeType=0; // 0=标准时间 1=夏令时间
//美国标准时间
this.TIME_SPLIT =
[
{
Name: '6:00-5:00',
Data:
[
//6:00 - 5:00
{ Start: 600, End: 2359 },
{ Start: 0, End: 500 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 600, Text: '6:00' },
{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' },
{ Value: 400, Text: '4:00' },
],
Simple: //简洁模式
[
{ Value: 600, Text: '6:00' },
//{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
//{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
//{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
//{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
//{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
//{ Value: 400, Text: '4:00' },
],
Min: //最小模式
[
{ Value: 600, Text: '6:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 500, Text: '5:00' }
]
}
}
]
//美国夏时令
this.TIME_SPLIT2=
[
{
Name:'7:00-6:00',
Data:
[
//6:00 - 5:00
{ Start: 700, End: 2359 },
{ Start: 0, End: 600 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 700, Text: '7:00' },
{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1, Text: '1:00' },
{ Value: 300, Text: '3:00' },
{ Value: 500, Text: '5:00' }
],
Simple: //简洁模式
[
{ Value: 700, Text: '7:00' },
//{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
//{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
//{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
//{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
//{ Value: 1, Text: '1:00' },
{ Value: 300, Text: '3:00' }
//{ Value: 500, Text: '5:00' }
],
Min: //最小模式
[
{ Value: 700, Text: '7:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 500, Text: '5:00' }
]
}
}
]
this.FUTURES_LIST=
[
{ Symbol:"CL", Decimal:2, Time:0 }, //原油
{ Symbol:"NG", Decimal:3, Time:0 }, //天然气
{ Symbol:"RB", Decimal:4, Time:0 }, //汽油
{ Symbol:"PL", Decimal:1, Time:0 }, //铂金
{ Symbol:"PA", Decimal:2, Time:0 }, //钯金
{ Symbol:"HR", Decimal:0, Time:0 }, //热轧钢卷
{ Symbol:"QM", Decimal:3, Time:0 }, //迷你原油
{ Symbol:"HO", Decimal:4, Time:0 }, //燃油
]
this.GetFuturesInfo=function(upperSymbol)
{
if (upperSymbol.indexOf(this.MarketSuffix)<=0) return null;
for(var i in this.FUTURES_LIST)
{
var item=this.FUTURES_LIST[i];
if (upperSymbol.indexOf(item.Symbol)==0)
{
return item;
}
}
return null;
}
this.GetSplitData = function (upperSymbol)
{
//夏令和标准时间切换
var timeSplit=this.TimeType==0 ? this.TIME_SPLIT : this.TIME_SPLIT2;
var find=this.GetFuturesInfo(upperSymbol);
if (find) return timeSplit[find.Time];
return timeSplit[0];
}
this.GetDecimal = function (upperSymbol)
{
var find=this.GetFuturesInfo(upperSymbol);
if (find) return find.Decimal;
return 3;
}
this.GetMarketStatus = function (upperSymbol) // 0=闭市 1=盘前 2=盘中 3=盘后
{
var usaDate=GetLocalTime(-4); //需要转成美国时间的 周6 周日
var nowDate= new Date();
var day = usaDate.getDay();
var time = nowDate.getHours() * 100 + nowDate.getMinutes();
if(day == 6 || day== 0) return 0; //周末
if(time>430 && time<730) return 1;
return 2;
}
}
function COMEXTimeData()
{
this.newMethod=NYMEXTimeData; //派生
this.newMethod();
delete this.newMethod;
this.FUTURES_LIST=
[
{ Symbol:"GC", Decimal:1, Time:0 }, //COMEX黄金
{ Symbol:"QO", Decimal:2, Time:0 }, //迷你黄金
{ Symbol:"MG", Decimal:1, Time:0 }, //微型黄金
{ Symbol:"QI", Decimal:4, Time:0 }, //迷你白银
{ Symbol:"SI", Decimal:3, Time:0 }, //COMEX白银
{ Symbol:"QI", Decimal:4, Time:0 }, //迷你白银
{ Symbol:"HG", Decimal:4, Time:0 } //COMEX铜
]
this.MarketSuffix=".COMEX";
}
function NYBOTTimeData()
{
this.newMethod=NYMEXTimeData; //派生
this.newMethod();
delete this.newMethod;
//美国标准时间
this.TIME_SPLIT=
[
{
Name:'9:00-2:20',
Data:
[
//9:00-2:20
{ Start: 900, End: 2359 },
{ Start: 0, End: 220 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 100, Text: '1:00' }
],
Simple: //简洁模式
[
{ Value: 900, Text: '9:00' },
//{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
//{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
//{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
//{ Value: 2300, Text: '23:00' },
{ Value: 100, Text: '1:00' }
],
Min: //最小模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 100, Text: '1:00' }
]
}
},
{
Name:'15:30-1:00',
Data:
[
//9:00-2:20
{ Start: 1530, End: 2359 },
{ Start: 0, End: 100 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 1600, Text: '16:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 0, Text: '0:00' },
{ Value: 100, Text: '1:00' }
],
Simple: //简洁模式
[
{ Value: 1600, Text: '16:00' },
//{ Value: 1600, Text: '17:00' },
{ Value: 1800, Text: '18:00' },
//{ Value: 1900, Text: '19:00' },
{ Value: 2000, Text: '20:00' },
//{ Value: 2100, Text: '21:00' },
{ Value: 2200, Text: '22:00' },
//{ Value: 2300, Text: '23:00' },
{ Value: 0, Text: '0:00' },
//{ Value: 100, Text: '1:00' }
],
Min: //最小模式
[
{ Value: 1600, Text: '16:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 100, Text: '1:00' }
]
}
}
]
//美国夏时令
this.TIME_SPLIT2=
[
{
Name:'10:00-3:20',
Data:
[
//9:00-2:20
{ Start: 1000, End: 2359 },
{ Start: 0, End: 320 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
],
Simple: //简洁模式
[
{ Value: 1000, Text: '10:00' },
//{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
//{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
//{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
//{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
],
Min: //最小模式
[
{ Value: 1000, Text: '10:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 200, Text: '2:00' }
]
}
},
{
Name:'16:30-2:00',
Data:
[
{ Start: 1630, End: 2359 },
{ Start: 0, End: 200 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 1700, Text: '17:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 0, Text: '0:00' },
{ Value: 100, Text: '1:00' },
{ Value: 200, Text: '2:00' }
],
Simple: //简洁模式
[
{ Value: 1700, Text: '17:00' },
//{ Value: 1800, Text: '18:00' },
{ Value: 1900, Text: '19:00' },
//{ Value: 2000, Text: '20:00' },
{ Value: 2100, Text: '21:00' },
//{ Value: 2200, Text: '22:00' },
{ Value: 2300, Text: '23:00' },
//{ Value: 0, Text: '0:00' },
{ Value: 100, Text: '1:00' }
//{ Value: 200, Text: '2:00' }
],
Min: //最小模式
[
{ Value: 1700, Text: '17:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 200, Text: '2:00' }
]
}
}
]
this.FUTURES_LIST=
[
{ Symbol:"SB", Decimal:2, Time:1 }, //11号白糖
{ Symbol:"CT", Decimal:2, Time:0 }, //棉花
//{ Symbol:"KC", Decimal:2, Time:0 }, //咖啡
//{ Symbol:"DX", Decimal:2, Time:0 }, //美元指数
//{ Symbol:"CC", Decimal:2, Time:0 } //可可
]
this.MarketSuffix=".NYBOT";
this.GetMarketStatus=function(upperSymbol) // 0=闭市 1=盘前 2=盘中 3=盘后
{
var usaDate=GetLocalTime(-4); //需要转成美国时间的 周6 周日
var day = usaDate.getDay();
var time = usaDate.getHours() * 100 + usaDate.getMinutes();
if(day == 6 || day== 0) return 0; //周末
var find=this.GetFuturesInfo(upperSymbol);
if (!find) return 2;
if (find.Symbol=="SB") //Sugar No. 11 Futures 03:30 - 13:00
{
if (time>300 && time<1400) return 2;
}
else if (find.Symbol=="CT") //美棉 21:00-14:20
{
if( (time>=0 && time<=1500 ) || (time>=2000 && time<=2359) ) return 2;
return 1;
}
return 0;
}
}
//芝商所
function CBOTTimeData()
{
this.newMethod=NYMEXTimeData; //派生
this.newMethod();
delete this.newMethod;
//夏令时间
this.TIME_SPLIT=
[
{
Name:'8:00-2:20',
Data:
[
//6:00 - 5:00
{ Start: 800, End: 2359 },
{ Start: 0, End: 220 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
],
Simple: //简洁模式
[
{ Value: 800, Text: '8:00' },
//{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
//{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
//{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
//{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' }
//{ Value: 200, Text: '2:00' }
],
Min: //最小模式
[
{ Value: 800, Text: '8:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 200, Text: '2:00' }
]
}
},
{
Name:'8:00-2:45',
Data:
[
//6:00 - 5:00
{ Start: 800, End: 2359 },
{ Start: 0, End: 245 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
],
Simple: //简洁模式
[
{ Value: 800, Text: '8:00' },
//{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
//{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
//{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
//{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' }
//{ Value: 200, Text: '2:00' }
],
Min: //最小模式
[
{ Value: 800, Text: '8:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 200, Text: '2:00' }
]
}
},
{
Name:'6:00-5:00',
Data:
[
//6:00 - 5:00
{ Start: 600, End: 2359 },
{ Start: 0, End: 500 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 600, Text: '6:00' },
{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' },
{ Value: 400, Text: '4:00' },
],
Simple: //简洁模式
[
{ Value: 600, Text: '6:00' },
//{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
//{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
//{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
//{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
//{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
//{ Value: 400, Text: '4:00' },
],
Min: //最小模式
[
{ Value: 600, Text: '6:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 500, Text: '5:00' }
]
}
}
]
//标准时间
this.TIME_SPLIT2=
[
{
Name:'9:00-3:20',
Data:
[
{ Start: 900, End: 2359 },
{ Start: 0, End: 320 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1, Text: '1:00' },
{ Value: 300, Text: '3:00' }
],
Simple: //简洁模式
[
{ Value: 900, Text: '9:00' },
//{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
//{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
//{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
//{ Value: 2300, Text: '23:00' },
{ Value: 1, Text: '1:00' }
//{ Value: 300, Text: '3:00' }
],
Min: //最小模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 300, Text: '3:00' }
]
}
},
{
Name:'9:00-3:45',
Data:
[
{ Start: 900, End: 2359 },
{ Start: 0, End: 345 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1, Text: '1:00' },
{ Value: 300, Text: '3:00' }
],
Simple: //简洁模式
[
{ Value: 900, Text: '9:00' },
//{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
//{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
//{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
//{ Value: 2300, Text: '23:00' },
{ Value: 1, Text: '1:00' }
//{ Value: 300, Text: '3:00' }
],
Min: //最小模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 300, Text: '3:00' }
]
}
},
{
Name:'7:00-6:00',
Data:
[
{ Start: 700, End: 2359 },
{ Start: 0, End: 600 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 700, Text: '7:00' },
{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 1, Text: '1:00' },
{ Value: 300, Text: '3:00' },
{ Value: 500, Text: '5:00' }
],
Simple: //简洁模式
[
{ Value: 700, Text: '7:00' },
//{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
//{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
//{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
//{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
//{ Value: 1, Text: '1:00' },
{ Value: 300, Text: '3:00' }
//{ Value: 500, Text: '5:00' }
],
Min: //最小模式
[
{ Value: 700, Text: '7:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 500, Text: '5:00' }
]
}
}
]
this.FUTURES_LIST=
[
{ Symbol:"ZC", Decimal:2, Time:0 }, //玉米
{ Symbol:"XC", Decimal:2, Time:1 }, //迷你玉米
{ Symbol:"ZS", Decimal:2, Time:0 }, //大豆
{ Symbol:"XK", Decimal:2, Time:1 }, //迷你大豆
{ Symbol:"ZL", Decimal:2, Time:0 }, //豆油
{ Symbol:"ZR", Decimal:2, Time:0 }, //稻谷
{ Symbol:"ZO", Decimal:2, Time:0 }, //燕麦
{ Symbol:"ZW", Decimal:2, Time:0 }, //小麦
{ Symbol:"XW", Decimal:2, Time:1 }, //迷你小麦
{ Symbol:"ZM", Decimal:1, Time:0 }, //豆粕
{ Symbol:"EH", Decimal:3, Time:2 }, //乙醇
{ Symbol:"YM", Decimal:0, Time:2 }, //小型道指
{ Symbol:"ES", Decimal:2, Time:2 }, //小型标普
{ Symbol:"NQ", Decimal:2, Time:2 }, //小型纳指
{ Symbol:"TY", Decimal:4, Time:2 }, //10年美国债
{ Symbol:"TU", Decimal:4, Time:2 }, //2年美国债
{ Symbol:"FV", Decimal:4, Time:2 }, //5年美国债
{ Symbol:"US", Decimal:4, Time:2 }, //30年美国债
{ Symbol:"UL", Decimal:4, Time:2 }, //超国债
]
this.MarketSuffix=".CBOT";
}
function LMETimeData()
{
this.newMethod=NYMEXTimeData; //派生
this.newMethod();
delete this.newMethod;
//标准时间
this.TIME_SPLIT=
[
{
Name:'LME 9:00-3:00',
Data:
[
{ Start: 900, End: 2359 },
{ Start: 0, End: 300 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
{ Value: 2300, Text: '23:00' },
{ Value: 100, Text: '1:00' },
{ Value: 300, Text: '3:00' }
],
Simple: //简洁模式
[
{ Value: 900, Text: '9:00' },
//{ Value: 1100, Text: '11:00' },
{ Value: 1300, Text: '13:00' },
//{ Value: 1500, Text: '15:00' },
{ Value: 1700, Text: '17:00' },
//{ Value: 1900, Text: '19:00' },
{ Value: 2100, Text: '21:00' },
//{ Value: 2300, Text: '23:00' },
{ Value: 100, Text: '1:00' }
// { Value: 300, Text: '3:00' }
],
Min: //最小模式
[
{ Value: 900, Text: '9:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 300, Text: '3:00' }
]
}
}
]
//夏令
this.TIME_SPLIT=
[
{
Name:'LME 8:00-2:00',
Data:
[
{ Start: 800, End: 2359 },
{ Start: 0, End: 200 },
],
Coordinate:
{
Full://完整模式
[
{ Value: 800, Text: '8:00' },
{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' },
{ Value: 200, Text: '2:00' }
],
Simple: //简洁模式
[
{ Value: 800, Text: '8:00' },
//{ Value: 1000, Text: '10:00' },
{ Value: 1200, Text: '12:00' },
//{ Value: 1400, Text: '14:00' },
{ Value: 1600, Text: '16:00' },
//{ Value: 1800, Text: '18:00' },
{ Value: 2000, Text: '20:00' },
//{ Value: 2200, Text: '22:00' },
{ Value: 0, Text: '0:00' }
//{ Value: 200, Text: '2:00' }
],
Min: //最小模式
[
{ Value: 800, Text: '8:00' },
{ Value: 1800, Text: '18:00' },
{ Value: 200, Text: '2:00' }
]
}
}
]
this.FUTURES_LIST=
[
{ Symbol:"SND", Decimal:0, Time:0 }, //综合锡03
{ Symbol:"AHD", Decimal:2, Time:0 }, //综合铝03
{ Symbol:"PBD", Decimal:2, Time:0 }, //综合铅03
{ Symbol:"ZSD", Decimal:2, Time:0 }, //综合锌03
{ Symbol:"CAD", Decimal:2, Time:0 }, //综合铜03
{ Symbol:"NID", Decimal:0, Time:0 }, //综合镍03
]
this.MarketSuffix=".LME";
}
var g_MinuteTimeStringData = new MinuteTimeStringData();
var g_MinuteCoordinateData = new MinuteCoordinateData();
var g_FuturesTimeData = new FuturesTimeData();
var g_NYMEXTimeData = new NYMEXTimeData();
var g_COMEXTimeData=new COMEXTimeData();
var g_NYBOTTimeData=new NYBOTTimeData();
var g_CBOTTimeData=new CBOTTimeData();
var g_LMETimeData=new LMETimeData();
function GetfloatPrecision(symbol) //获取小数位数
{
var defaultfloatPrecision = 2; //默认2位
if (!symbol) return defaultfloatPrecision;
var upperSymbol = symbol.toUpperCase();
//全部由外部控制
if (typeof(MARKET_SUFFIX_NAME.GetCustomDecimal)=='function') return MARKET_SUFFIX_NAME.GetCustomDecimal(upperSymbol);
if (MARKET_SUFFIX_NAME.IsSHSZFund(upperSymbol)) defaultfloatPrecision = 3; //基金3位小数
else if (MARKET_SUFFIX_NAME.IsSHO(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetSHODecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsChinaFutures(upperSymbol)) defaultfloatPrecision = g_FuturesTimeData.GetDecimal(upperSymbol); //期货小数位数读配置
else if (MARKET_SUFFIX_NAME.IsFHK(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetFHKDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsFTSE(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetFTSEDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsBIT(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetBITDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsET(upperSymbol)) defaultfloatPrecision = MARKET_SUFFIX_NAME.GetETDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsNYMEX(upperSymbol)) defaultfloatPrecision=g_NYMEXTimeData.GetDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsCOMEX(upperSymbol)) defaultfloatPrecision=g_COMEXTimeData.GetDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsNYBOT(upperSymbol)) defaultfloatPrecision=g_NYBOTTimeData.GetDecimal(upperSymbol);
else if (MARKET_SUFFIX_NAME.IsCBOT(upperSymbol)) defaultfloatPrecision=g_CBOTTimeData.GetDecimal(upperSymbol);
else defaultfloatPrecision=MARKET_SUFFIX_NAME.GetDefaultDecimal(upperSymbol);
return defaultfloatPrecision;
}
//导出统一使用JSCommon命名空间名
module.exports =
{
JSCommonCoordinateData:
{
MinuteCoordinateData: g_MinuteCoordinateData,
MinuteTimeStringData: g_MinuteTimeStringData,
MARKET_SUFFIX_NAME: MARKET_SUFFIX_NAME,
GetfloatPrecision: GetfloatPrecision
},
JSCommonCoordinateData_MARKET_SUFFIX_NAME: MARKET_SUFFIX_NAME,
JSCommonCoordinateData_Global_FuturesTimeData: g_FuturesTimeData,
JSCommonCoordinateData_Global_NYMEXTimeData: g_NYMEXTimeData,
JSCommonCoordinateData_Global_COMEXTimeData: g_COMEXTimeData,
JSCommonCoordinateData_Global_NYBOTTimeData: g_NYBOTTimeData,
JSCommonCoordinateData_Global_LMETimeData: g_LMETimeData,
JSCommonCoordinateData_Global_CBOTTimeData: g_CBOTTimeData,
};