HQChart使用教程62-品种小数位数设置
品种小数位数
不同的品种, 它的最小交易单位是不一样的, hqchart内置简单的做了对不通品种设置了默认的小数位置, 也支持通过外部接口修改默认小数位数。
品种小数位置类
数据保存在全局变量 MARKET_SUFFIX_NAME 中。
成员函数:
Get品种简称Decimal(symbol=品种代码)
通过参数symbol,返回对应的小数位数
var MARKET_SUFFIX_NAME
{
.......
GetDefaultDecimal:function(symbol) //默认小数位数
{
return 2;
},
//沪深股票期权
GetSHODecimal:function(symbol)
{
return 4;
},
GetFHKDecimal:function(symbol) //港股指数期货 小数位数
{
return 0;
},
GetFTSEDecimal:function(symbol) //富时中国A50期货 小数位数
{
return 0;
},
//数字货币
GetBITDecimal:function(symbol)
{
return 2;
},
//外汇
GetForeignExchangeDecimal:function(symbol)
{
return 4;
},
//自定义品种
GetETDecimal:function(symbol)
{
return 2;
},
}
通过重载上面的函数,就可以控制品种的小数位数。
hqchart内部使用GetfloatPrecision()来获取不同品种的小数位数。
GetCustomDecimal 默认是空的, 如果外部重载了这个函数, 所有的小数位数获取直接都通过它来获取了。
源码:
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.IsForeignExchange(upperSymbol)) defaultfloatPrecision=MARKET_SUFFIX_NAME.GetForeignExchangeDecimal(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;
}
例子
VUE
import HQChart from 'hqchart'
......
//设置数字货币小数位数都是0
HQChart.Chart.MARKET_SUFFIX_NAME.GetBITDecimal=(symbol)=> { return 0; }
js
//设置数字货币小数位数都是0
MARKET_SUFFIX_NAME.GetBITDecimal=(symbol)=> { return 0; }
uniapp
app
import {JSCommon} from '../../umychart.uniapp/umychart.wechat.3.0.js'
.....
JSCommon.MARKET_SUFFIX_NAME.GetBITDecimal=this.GetBITDecimal;
.......
//不同的品种返回不同的小数位数
GetBITDecimal(symbol)
{
var upperSymbol=symbol.toUpperCase();
if (upperSymbol=="BUSDUSDT.BIT") return 4;
else if(upperSymbol=="ADXBTC.BIT") return 8;
return 2;
},
h5
import HQChart from '../../umychart_uniapp_h5/umychart.uniapp.h5.js'
.....
HQChart.MARKET_SUFFIX_NAME.GetBITDecimal=this.GetBITDecimal;
......
//不同的品种返回不同的小数位数
GetBITDecimal(symbol)
{
var upperSymbol=symbol.toUpperCase();
if (upperSymbol=="BUSDUSDT.BIT") return 4;
else if(upperSymbol=="ADXBTC.BIT") return 8;
return 2;
},
特殊品种
- 国内期货 g_FuturesTimeData.GetDecimal(upperSymbol)
- 纽约交易所 NYMEX g_NYMEXTimeData.GetDecimal(upperSymbol)
- 纽约交易所 COMEX g_COMEXTimeData.GetDecimal(upperSymbol)
- 纽约交易所 NYBOT g_NYBOTTimeData.GetDecimal(upperSymbol)
- 芝商所 g_CBOTTimeData.GetDecimal(upperSymbol)
上面几个品种是通过这几个全局变量控制的。
交流QQ群: 950092318
如果还有问题可以加交流QQ群: 950092318
HQChart代码地址
地址:github.com/jones2000/HQChart
个人爱好摄影/模型