cedricporter / funcat Goto Github PK
View Code? Open in Web Editor NEWFuncat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。
Home Page: http://funcat.org
License: Apache License 2.0
Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。
Home Page: http://funcat.org
License: Apache License 2.0
这个我安装怎么talib安装不了。。。能告知下平台吗?win7 32 python3.5 虚拟机, 还有个让我安装visualc++14 请帮我看下,拜托了!新手
MA(C, 10)
Traceback (most recent call last):
File "C:/Users/zhangchun/Documents/hkiyuu项目/funcatTEXT.py", line 36, in
print(MA(C, 10)) # 打印60日均线
File "C:\Users\zhangchun\AppData\Local\Programs\Python\Python35\lib\site-packages\funcat\func.py", line 33, in init
raise FormulaException(e)
funcat.utils.FormulaException: only size-1 arrays can be converted to Python scalars
如果是 bug 反馈,烦请在 issue 中描述以下问题:
0.3.2
3.6
windows
data=DataFrame()
arr = [1,5,323,20,5,3,2]
data["a"]=arr
result=LLV(data["a"],3)
print(K, D, J)
Traceback (most recent call last):
File "C:\Users\Administrator.IntelliJIdea2017.2\config\plugins\python\helpers\pydev\pydevd.py", line 1596, in
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Users\Administrator.IntelliJIdea2017.2\config\plugins\python\helpers\pydev\pydevd.py", line 1023, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Users\Administrator.IntelliJIdea2017.2\config\plugins\python\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/javaweb_idea/bitcoin-arbitrage/test/mytest.py", line 38, in
result=LLV(data["a"],3)
File "D:\Anaconda3\lib\site-packages\funcat\utils.py", line 92, in wrapper
return func(*args, **kwargs)
File "D:\Anaconda3\lib\site-packages\funcat\func.py", line 194, in llv
series = s.series
File "D:\Anaconda3\lib\site-packages\pandas\core\generic.py", line 2970, in getattr
return object.getattribute(self, name)
AttributeError: 'Series' object has no attribute 'series'
serires 这玩意是谁的属性呢
您好,我想知道大概怎样的添加流程,想在代码库里提交自己写的指标,是否可以给出具体些的指示文档?
这是我写的一个测试代码片段,但是运行以后就会报错
from funcat.data.rqalpha_data_backend import RQAlphaDataBackend
from funcat import *
set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))
select(
lambda : C / C[1] - 1 >= 0.0995,
start_date=20170501,
end_date=20170629,
)
错误提示如下:
lambda : C / C[1] - 1 >= 0.0995,
Traceback (most recent call last):
File "3.py", line 9, in
end_date=20170629,
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/helper.py", line 17, in wrapper
return func(*args, **kwargs)
│ │ └ {'start_date': 20170501, 'end_date': 20170629}
│ └ (<function at 0x3b517d0>,)
└ <function select at 0x32fc1b8>
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/helper.py", line 40, in select
order_book_id_list = data_backend.get_order_book_id_list()
└ <funcat.data.rqalpha_data_backend.RQAlphaDataBackend object at 0x330ab10>
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/data/rqalpha_data_backend.py", line 67, in get_order_book_id_list
return sorted(self.data_proxy.all_instruments('CS').order_book_id.tolist())
└ <funcat.data.rqalpha_data_backend.RQAlphaDataBackend object at 0x330ab10>
AttributeError: 'list' object has no attribute 'order_book_id'
很不错的项目,有两个小疑问:
1、sar函数怎么支持?到处找不到如何实现的……
2、如果能使用本地数据选股,是不是可以提速?
通达信.day .lc1数据转换为csv并不复杂:http://blog.csdn.net/liuyukuan/article/details/53560278
EMA() takes at most 2 positional arguments (3 given)
如果是 bug 反馈,烦请在 issue 中描述以下问题:
funcat==0.3.2
3.6
windows
close_data = NumericSeries([1,2,3])
EMA (close_data,3)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\ProgramData\Anaconda3\lib\site-packages\funcat-0.3.2-py3.6.egg\funcat\func.py", line 31, in init
series = self.func(series, arg)
File "C:\Users\Administrator\AppData\Roaming\Python\Python36\site-packages\talib_init_.py", line 24, in wrapper
return func(*args, **kwargs)
File "_func.pxi", line 7053, in talib._ta_lib.EMA
TypeError: EMA() takes at most 2 positional arguments (3 given)
T('20170601')
S('000001.XSHG')
print BIAS(L1=5, L4=10, L5=20)
print(O, H, L, C)
请问可以计算一段时间的BIAS吗?例如从20170101--20170703的时间每天的BIAS
select(
lambda : C / C[1] - 1 >= 0.0995,
start_date=20170104,
end_date=20170104,
)
运行错误,
---------------------------
---------------------------
lambda : C / C[1] - 1 >= 0.0995,
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-19-88c2dd06ea5d> in <module>()
3 lambda : C / C[1] - 1 >= 0.0995,
4 start_date=20170104,
----> 5 end_date=20170105,
6 )
D:\WinPython-32bit-3.5.3.0Qt5\python-3.5.3\lib\site-packages\funcat\helper.py in wrapper(*args, **kwargs)
15 try:
16 old_settings = np.seterr(all='ignore')
---> 17 return func(*args, **kwargs)
18 finally:
19 np.seterr(**old_settings) # reset to default
D:\WinPython-32bit-3.5.3.0Qt5\python-3.5.3\lib\site-packages\funcat\helper.py in select(func, start_date, end_date, max_date, callback)
36 data_backend = ExecutionContext.get_data_backend()
37 order_book_id_list = data_backend.get_order_book_id_list()
---> 38 trading_dates = data_backend.get_trading_dates(start=data_backend.get_start_date(), end=max_date)
39 for idx, date in enumerate(reversed(trading_dates)):
40 if end_date and date > get_int_date(end_date):
D:\WinPython-32bit-3.5.3.0Qt5\python-3.5.3\lib\site-packages\funcat\data\tushare_backend.py in get_trading_dates(self, start, end)
81 start = get_str_date_from_int(start)
82 end = get_str_date_from_int(end)
---> 83 df = self.ts.get_k_data("000001", index=True, start=start, end=end)
84 trading_dates = [get_int_date(date) for date in df.date.tolist()]
85 return trading_dates
D:\WinPython-32bit-3.5.3.0Qt5\python-3.5.3\lib\site-packages\tushare\stock\trading.py in get_k_data(code, start, end, ktype, autype, index, retry_count, pause)
673 symbol, code,
674 index, ktype,
--> 675 retry_count, pause),
676 ignore_index=True)
677 if ktype not in ct.K_MIN_LABELS:
D:\WinPython-32bit-3.5.3.0Qt5\python-3.5.3\lib\site-packages\tushare\stock\trading.py in _get_k_data(url, dataflag, symbol, code, index, ktype, retry_count, pause)
705 js = json.loads(lines[0])
706 dataflag = dataflag if dataflag in list(js['data'][symbol].keys()) else ct.TT_K_TYPE[ktype.upper()]
--> 707 if len(js['data'][symbol][dataflag][0]) == 6:
708 df = pd.DataFrame(js['data'][symbol][dataflag],
709 columns = ct.KLINE_TT_COLS_MINS)
IndexError: list index out of range
有月线或者周线的技术指标计算吗?
select(
lambda : (COUNT(CLOSE>0,0)>80) & ((HHV(CLOSE,80)-LLV(CLOSE,80))/LLV(CLOSE,80) <= 0.08),
start_date=20170630,
end_date=20170630,
callback=callback,
)
lambda : (COUNT(CLOSE>0,0)>80) & ((HHV(CLOSE,80)-LLV(CLOSE,80))/LLV(CLOSE,80) <= 0.08),
File "/usr/lib/python2.7/site-packages/funcat-0.3.0-py2.7.egg/funcat/helper.py", line 40, in select
order_book_id_list = data_backend.get_order_book_id_list()
└ <funcat.data.rqalpha_data_backend.RQAlphaDataBackend object at 0x32a11d0>
File "/usr/lib/python2.7/site-packages/funcat-0.3.0-py2.7.egg/funcat/data/rqalpha_data_backend.py", line 68, in get_order_book_id_list
if isinstance(insts, pd.DataFrame):
NameError: global name 'pd' is not defined
如果是 bug 反馈,烦请在 issue 中描述以下问题:
0.3.2
3.6.2
Windows
C:\Users\Administrator>python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bi
t (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
from funcat import *
from funcat.data.tushare_backend import TushareDataBackend
set_data_backend(TushareDataBackend())
T("20180518")
S("000001.XSHG")
print(O, H, L, C)
3151.08 3193.45 3144.78 3193.3
MA(C, 60)
C:\Users\Administrator>python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bi
t (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
from funcat import *
from funcat.data.tushare_backend import TushareDataBackend
set_data_backend(TushareDataBackend())
T("20180518")
S("000001.XSHG")
print(O, H, L, C)
3151.08 3193.45 3144.78 3193.3
MA(C, 60)
Traceback (most recent call last):
File "D:\ProgramData\Anaconda3\lib\site-packages\talib_init_.py", line 20,
in wrapper
for arg in chain(args, kwargs.values())
StopIteration
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\ProgramData\Anaconda3\lib\site-packages\funcat\func.py", line 31, in
init
series = self.func(series, arg)
File "D:\ProgramData\Anaconda3\lib\site-packages\talib_init_.py", line 24,
in wrapper
return func(*args, **kwargs)
File "_func.pxi", line 7863, in talib._ta_lib.MA
TypeError: only size-1 arrays can be converted to Python scalars
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
File "D:\ProgramData\Anaconda3\lib\site-packages\funcat\func.py", line 33, in
init
raise FormulaException(e)
funcat.utils.FormulaException: only size-1 arrays can be converted to Python sca
lars
如果是 bug 反馈,烦请在 issue 中描述以下问题:
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting funcat
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a2/6c/494161c9d14fbd7f9dacc2f5d047d75502ae42f581f5e32f249ebe54e2fb/funcat-0.3.2.tar.gz (26 kB)
ERROR: Command errored out with exit status 1:
command: 'c:\users\baiyl3\pycharmprojects\funcat\venv\scripts\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\baiyl3\AppData
\Local\Temp\pip-install-6p411ns4\funcat\setup.py'"'"'; file='"'"'C:\Users\baiyl3\AppData\Local\Temp\pip-install-6p411ns4\funcat\setup.py'"'"';f=get
attr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_inf
o --egg-base 'C:\Users\baiyl3\AppData\Local\Temp\pip-pip-egg-info-sv39g7hb'
cwd: C:\Users\baiyl3\AppData\Local\Temp\pip-install-6p411ns4\funcat
Complete output (5 lines):
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\baiyl3\AppData\Local\Temp\pip-install-6p411ns4\funcat\setup.py", line 11, in
from pip.req import parse_requirements
ModuleNotFoundError: No module named 'pip.req'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
如果是 bug 反馈,烦请在 issue 中描述以下问题:
谢谢了!
在写策略中需要在分钟回测中,使用导不同周期的K线,参与计算,funcat有实现这样的功能吗?
比如通达信上,(日最高价:H;周最高价:H#WEEK)
例如0轴上方第二次金叉
refuncat:版本0.3.3
python:版本3.7.4
Mac:
相关代码:
`backend = "tushare"
if backend == "rqalpha":
set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))
elif backend == "tushare":
set_data_backend(TushareDataBackend())
set_start_date("2019-10-09")
S("002668.XSHG") # 设置当前关注股票
T("2019-10-10") # 设置当前观察日期
M1, M2 = 14, 6
OPEN = 10.0
HIGH = 10.5
LOW = 9.7
CLOSE = 10.2
TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1)
HD = HIGH - REF(HIGH, 1)
LD = REF(LOW, 1) - LOW
DMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1)
DMM = SUM(IF((LD > 0) & (LD > HD), LD, 0), M1)
DI1 = DMP * 100 / TR
DI2 = DMM * 100 / TR
ADX = MA(ABS(DI2 - DI1) / (DI1 + DI2) * 100, M2)
ADXR = (ADX + REF(ADX, M2)) / 2
print(str(DI1),str(DI2), str(ADX), str(ADXR))`
错误日志:
Traceback (most recent call last): File "/Users/apple/PycharmProjects/h_Python/example/strategy/stock_formula.py", line 23, in <module> TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1) File "/Users/apple/PycharmProjects/h_Python/venv/lib/python3.7/site-packages/funcat/func.py", line 190, in Ref return s1[n] TypeError: 'float' object is not subscriptable
https://github.com/cedricporter/funcat/blob/master/notebooks/funcat-tutorial.ipynb
中的代码运行到计算均线就出错误了。
如果是 bug 反馈,烦请在 issue 中描述以下问题:
0.3.2
Python 3.6.5 |Anaconda
linux mint 18.3 amd64
$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
from matplotlib import rcParams
import matplotlib.pyplot as plt
import numpy as np
np.seterr(all='ignore')
{'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
rcParams['figure.figsize'] = (14, 6)
from funcat import *
from funcat.data.tushare_backend import TushareDataBackend
from funcat.data.rqalpha_data_backend import RQAlphaDataBackend
backend = "rqalpha"
set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))
set_start_date("2015-01-01")
S("000001.XSHG") # 设置当前关注股票
T("2016-06-01") # 设置当前观察日期
print(O, H, L, C, V) # 打印 Open High Low Close
2917.15 2929.08 2909.51 2913.51 18838642100.0
C / C[1] - 1 # 当天涨幅
-0.0010663027751299792
MA(C, 60) # 打印60日均线
Traceback (most recent call last):
File "/opt/anaconda3/lib/python3.6/site-packages/talib/init.py", line 20, in wrapper
for arg in chain(args, kwargs.values())
StopIteration
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/anaconda3/lib/python3.6/site-packages/funcat/func.py", line 31, in init
series = self.func(series, arg)
File "/opt/anaconda3/lib/python3.6/site-packages/talib/init.py", line 24, in wrapper
return func(*args, **kwargs)
File "talib/_func.pxi", line 7863, in talib._ta_lib.MA
TypeError: only size-1 arrays can be converted to Python scalars
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
File "/opt/anaconda3/lib/python3.6/site-packages/funcat/func.py", line 33, in init
raise FormulaException(e)
funcat.utils.FormulaException: only size-1 arrays can be converted to Python scalars
funcat: 0.3.1, python: 3.5.3, 系统:macOS。
from funcat import *
from funcat.data.tushare_backend import TushareDataBackend
set_data_backend(TushareDataBackend())
set_start_date("2017-01-01")
S("600315") # 设置当前关注股票
T("2017-06-30") # 设置当前观察日期
print(VR())
IndexError: boolean index did not match indexed array along dimension 0; dimension is 119 but corresponding boolean dimension is 118
主要是用了REF(CLOSE, 1)后,series数量减1, 跟CLOSE比较后出错,望解决REF减1问题。
0.3.2
3.8
Windows
set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))
self.data_proxy = DataProxy(BaseDataSource(os.path.expanduser(bundle_path)))
TypeError: init() missing 1 required positional argument: 'custom_future_info'
帮帮忙,怎么判断均线聚合状态,刚刚发散的那个时间段
找了半天也没有相关的代码啊
可以试一下 pandas.DataFrame.rolling
funcat 0.2.7,python2.7 ,centos
测试代码如下:
from funcat.data.tushare_backend import TushareDataBackend
set_data_backend(TushareDataBackend())
T("20170704")
S("600030.XSHG")
print(O, H, L, C)
今天的时间就是20170704,正在盘中交易时间,取盘中交易数据,用的tushare的backend,可是仍旧会报错。
(Traceback (most recent call last):
File "3.py", line 30, in
print(O, H, L, C)
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/time_series.py", line 205, in repr
return str(self.value)
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/utils.py", line 26, in wrapper
return func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/time_series.py", line 79, in value
raise FormulaException("DATA UNAVAILABLE")
funcat.utils.FormulaException: DATA UNAVAILABLE
目前不支持盘中取数据吗?
通达信 大智慧的数据包未来可以支持么?方便本地回测的
refuncat:版本0.3.3
python:版本3.7.4
Mac:
相关代码:
`backend = "tushare"
if backend == "rqalpha":
set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))
elif backend == "tushare":
set_data_backend(TushareDataBackend())
set_start_date("2019-01-01")
no_str = "600009.SH"
df = ts.pro_bar(ts_code=no_str, asset='E', freq='D', start_date='20190101', end_date='20191201', ma=[5, 10, 20, 60], factors=['tor', 'vr'])
M1, M2 = 14, 6
OPEN = df['open']
HIGH = df['high']
LOW = df['low']
CLOSE = df['close']
OPEN = np.array(OPEN)
HIGH = np.array(HIGH)
LOW = np.array(LOW)
CLOSE = np.array(CLOSE)
TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1)
HD = HIGH - REF(HIGH, 1)
LD = REF(LOW, 1) - LOW
DMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1)
DMM = SUM(IF((LD > 0) & (LD > HD), LD, 0), M1)
DI1 = DMP * 100 / TR
DI2 = DMM * 100 / TR
ADX = MA(ABS(DI2 - DI1) / (DI1 + DI2) * 100, M2)
ADXR = (ADX + REF(ADX, M2)) / 2
print(str(DI1),str(DI2), str(ADX), str(ADXR))`
异常日志:
Traceback (most recent call last): File "/Users/apple/PycharmProjects/h_Python/example/strategy/stock_formula.py", line 42, in <module> DMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1) File "/Users/apple/PycharmProjects/h_Python/venv/lib/python3.7/site-packages/funcat/utils.py", line 92, in wrapper return func(*args, **kwargs) File "/Users/apple/PycharmProjects/h_Python/venv/lib/python3.7/site-packages/funcat/func.py", line 268, in iif cond_series, series1, series2 = fit_series(condition.series, series1, series2) AttributeError: 'numpy.ndarray' object has no attribute 'series'
IF 与 HHV , LLV 这3个方法都会用series,
日志中也提示series出错,这个是什么参数?是我传的数据有问题吗
改动底层NumericSeries支持作为参数传入函数,如REF(C, BARSLAST(C>0))
增加更多函数如BARSLAST等
截断部分函数返回NaN数据
等等
安装失败?
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U funcat
from pip.req import parse_requirements
ImportError: No module named req
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/time_series.py", line 268, in __getitem__
return self.__class__(series=self.series[:len(self.series) - index], **self.extra_create_kwargs)
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/time_series.py", line 272, in series
self._ensure_series_update()
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/time_series.py", line 248, in _ensure_series_update
bars = get_bars(freq)
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/time_series.py", line 20, in get_bars
bars = data_backend.get_price(order_book_id, start=start_date, end=current_date, freq=freq)
File "/usr/lib/python2.7/site-packages/funcat-0.2.7-py2.7.egg/funcat/data/rqalpha_data_backend.py", line 57, in get_price
dt=datetime.datetime.combine(end, datetime.time(23, 59, 59)))
File "/usr/lib/python2.7/site-packages/rqalpha/data/data_proxy.py", line 150, in history_bars
adjust_type=adjust_type, adjust_orig=adjust_orig)
File "/usr/lib/python2.7/site-packages/rqalpha/data/base_data_source.py", line 173, in history_bars
fields, adjust_type, adjust_orig)
File "/usr/lib/python2.7/site-packages/rqalpha/data/adjust.py", line 51, in adjust_bars
start_date = bars['datetime'][0]
IndexError: index 0 is out of bounds for axis 0 with size 0
最新版
Python 3.6.2 x64
Windows
from funcat import *
print(C)
"F:\Program Files\Python\Python36\python.exe" D:/task/python/test/funcat.py
Traceback (most recent call last):
File "D:/task/python/test/funcat.py", line 1, in
from funcat import *
File "D:\task\python\test\funcat.py", line 3, in
print(C)
NameError: name 'C' is not defined
Process finished with exit code 1
SLOPE函数实现了这个功能了么
通达信的
LLVBARS
HHVBARS
PEAK
PEAKBARS
TROUGH
FILTER
BETWEEN
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.