Coder Social home page Coder Social logo

cedricporter / funcat Goto Github PK

View Code? Open in Web Editor NEW
925.0 94.0 418.0 949 KB

Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。

Home Page: http://funcat.org

License: Apache License 2.0

Python 10.69% Jupyter Notebook 89.31%
quant python trade

funcat's Introduction

Funcat

PyPI PythonVersion License

Funcat 将同花顺、通达信、文华财经等的公式移植到了 Python 中。

同花顺、通达信、文华财经麦语言等公式的表达十分简洁,适合做技术分析。

苦于 Python 缺乏这种领域特定语言的表达能力,所以用 Python 基于 numpy 实现了一套。

安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U funcat

notebooks 教程

API

行情变量

  • 开盘价:OPEN O
  • 收盘价:CLOSE C
  • 最高价:HIGH H
  • 最低价:LOW L
  • 成交量:VOLUME V VOL

工具函数

  • n天前的数据:REF
REF(C, 10)  # 10天前的收盘价
  • 金叉判断:CROSS
CROSS(MA(C, 5), MA(C, 10))  # 5日均线上穿10日均线
  • 两个序列取最小值:MIN
MIN(O, C)  # K线实体的最低价
  • 两个序列取最大值:MAX
MAX(O, C)  # K线实体的最高价
  • n天都满足条件:EVERY
EVERY(C > MA(C, 5), 10)  # 最近10天收盘价都大于5日均线
  • n天内满足条件的天数:COUNT
COUNT(C > O, 10)  # 最近10天收阳线的天数
  • n天内最大值:HHV
HHV(MAX(O, C), 60)  # 最近60天K线实体的最高价
  • n天内最小值:LLV
LLV(MIN(O, C), 60)  # 最近60天K线实体的最低价
  • 求和n日数据 SUM
SUM(C, 10)  # 求和10天的收盘价
  • 求绝对值 ABS
ABS(C - O)
  • 条件 IF
IF(OPEN > CLOSE, OPEN, CLOSE)

条件「和」与「或」

因为语法的问题,我们需要使用 & 代替 and 「和」,用 | 代替 or 「或」。

# 收盘价在10日均线上 且 10日均线在20日均线上
(C > MA(C, 10)) & (MA(C, 10) > MA(C, 20))

# 收阳线 或 收盘价大于昨收
(C > O) | (C > REF(C, 1))

指标

  • 均线:MA
MA(C, 60)  # 60日均线

其他更多请见:指标库

还有更多的技术指标还在实现中,欢迎提交pr一起实现。

自定义公式示例

KDJ指标。随机指标(KDJ)由 George C.Lane 创制。它综合了动量观念、强弱指标及移动平均线的优点,用来度量股价脱离价格正常范围的变异程度。

N, M1, M2 = 9, 3, 3

RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100
K = EMA(RSV, (M1 * 2 - 1))
D = EMA(K, (M2 * 2 - 1))
J = K * 3 - D * 2

print(K, D, J)

DMI指标。动向指数又叫移动方向指数或趋向指数。是属于趋势判断的技术性指标,其基本原理是通过分析股票价格在上升及下跌过程中供需关系的均衡点,即供需关系受价格变动之影响而发生由均衡到失衡的循环过程,从而提供对趋势判断的依据。

对于 DMI 这个指标,你会发现 TALib 算出来的结果,和同花顺等软件的结果不一样,我对比了下实现方式,发现,是因为同花顺的公式和 TALib 的计算公式不一样,对于这种情况,我们把同花顺的公式搬过来,就可以算出和同花顺一样的结果。

M1, M2 = 14, 6

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(DI1, DI2, ADX, ADXR)

选股

from funcat import *


# 选出涨停股
select(
    lambda : C / C[1] - 1 >= 0.0995,
    start_date=20161231,
	end_date=20170104,
)

'''
[20170104]
20170104 000017.XSHE 000017.XSHE[深中华A]
20170104 000026.XSHE 000026.XSHE[飞亚达A]
20170104 000045.XSHE 000045.XSHE[深纺织A]
20170104 000585.XSHE 000585.XSHE[东北电气]
20170104 000595.XSHE 000595.XSHE[宝塔实业]
20170104 000678.XSHE 000678.XSHE[襄阳轴承]
...
'''


# 选出最近30天K线实体最高价最低价差7%以内,最近100天K线实体最高价最低价差大于25%,
# 最近10天,收盘价大于60日均线的天数大于3天
select(
    lambda : ((HHV(MAX(C, O), 30) / LLV(MIN(C, O), 30) - 1 < 0.07)
              & (HHV(MAX(C, O), 100) / LLV(MIN(C, O), 100) - 1 > 0.25)
              & (COUNT(C > MA(C, 60), 10) > 3)
             ),
    start_date=20161220,
)

'''
[20170104]
20170104 600512.XSHG 600512.XSHG[腾达建设]
[20170103]
[20161230]
20161230 000513.XSHE 000513.XSHE[丽珠集团]
...
'''


# 选出最近3天每天的成交量小于20日成交量均线,最近3天最低价低于20日均线,最高价高于20日均线
# 自定义选股回调函数
def callback(date, order_book_id, symbol):
    print("Cool, 在", date, "选出", order_book_id, symbol)


select(
    lambda : (EVERY(V < MA(V, 20) / 2, 3) & EVERY(L < MA(C, 20), 3) & EVERY(H > MA(C, 20), 3)),
    start_date=20161231,
    callback=callback,
)

'''
[20170104]
Cool, 在 20170104 选出 002633.XSHE 002633.XSHE[申科股份]
Cool, 在 20170104 选出 600857.XSHG 600857.XSHG[宁波中百]
...
'''

单股票研究

from funcat import *
from funcat.data.tushare_backend import TushareDataBackend

set_data_backend(TushareDataBackend())

# 设置目前天数为2017年1月4日
T("20170104")
# 设置关注股票为上证指数
S("000001.XSHG")

# 打印 Open High Low Close
>>> print(O, H, L, C)
3133.79 3160.1 3130.11 3158.79

# 当天涨幅
>>> C / C[1] - 1
0.0072929156356

# 打印60日均线
>>> MA(C, 60)
3154.78333333

# 判断收盘价是否大于60日均线
>>> C > MA(C, 60)
True

# 30日最高价
>>> HHV(H, 30)
3301.21

# 最近30日,收盘价 Close 大于60日均线的天数
>>> COUNT(C > MA(C, 60), 30)
17

# 10日均线上穿
>>> CROSS(MA(C, 10), MA(C, 20))
False

DataBackend

默认实现了一个从 tushare 上面实时拉数据选股的 Backend。

还有一个 RQAlpha 的 Backend,使用它可以为我们提供本地的数据源,比从 tushare 拉数据速度更有优势。

pip install rqalpha    # 安装依赖库 RQAlpha
rqalpha update_bundle  # 更新数据

替换 DataBackend 为 RQAlpha 的 DataProxy,这样可以从 RQAlpha 的 bundle 中获取数据。

from funcat.data.rqalpha_data_backend import RQAlphaDataBackend
from funcat import *

set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))

为了更高的性能,您也可以自定义Backend使用本地数据。这样可以极大地提高运行速度。

funcat's People

Contributors

cedricporter avatar hereticsk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

funcat's Issues

运行中的问题

T('20170601')
S('000001.XSHG')
print BIAS(L1=5, L4=10, L5=20)
print(O, H, L, C)

请问可以计算一段时间的BIAS吗?例如从20170101--20170703的时间每天的BIAS

funcat盘中计算指标问题

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

目前不支持盘中取数据吗?

VR指标用不了

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问题。

master 分支最新代码不在 pip 仓库中,大神,可以更新一下吗?

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.

运行错误

  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

在windows 7 & python 3.6.2运行常规指标报错

提 ISSUE 须知

如果是 bug 反馈,烦请在 issue 中描述以下问题:

1. funcat 的版本

0.3.2

2. Python 的版本

3.6.2

3. 是 Windows / Linux / MacOS or others?

Windows

4. 您出现问题对应的源码 / 或者能复现问题的简易代码

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)

5. 您出现的错误堆栈日志信息

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

ImportError: No module named req

安装失败?
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U funcat

from pip.req import parse_requirements
ImportError: No module named req

运行funcat报错

1. funcat 的版本

最新版

2. Python 的版本

Python 3.6.2 x64

3. 是 Windows / Linux / MacOS or others?

Windows

4. 您出现问题对应的源码 / 或者能复现问题的简易代码

from funcat import *
print(C)

5. 您出现的错误堆栈日志信息

"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

数据格式始终报错,烦请解决

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

funcat-tutorial 案例运行错误

选出涨停股

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

导入数据格式问题

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")

S("600009.SH") # 设置当前关注股票

T("2019-10-10") # 设置当前观察日期

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出错,这个是什么参数?是我传的数据有问题吗

更新最新的funcat到本地,安装以后运行测试程序报错

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

教程上的代码运行不起来

https://github.com/cedricporter/funcat/blob/master/notebooks/funcat-tutorial.ipynb
中的代码运行到计算均线就出错误了。

如果是 bug 反馈,烦请在 issue 中描述以下问题:

1. funcat 的版本

0.3.2

2. Python 的版本

Python 3.6.5 |Anaconda

3. 是 Windows / Linux / MacOS or others?

linux mint 18.3 amd64

4. 您出现问题对应的源码 / 或者能复现问题的简易代码

$ 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

5. 您出现的错误堆栈日志信息

不同周期的K线分析问题

在写策略中需要在分钟回测中,使用导不同周期的K线,参与计算,funcat有实现这样的功能吗?
比如通达信上,(日最高价:H;周最高价:H#WEEK)

运行错误

这是我写的一个测试代码片段,但是运行以后就会报错
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'

EMA() takes at most 2 positional arguments (3 given)

提 ISSUE 须知

EMA() takes at most 2 positional arguments (3 given)

如果是 bug 反馈,烦请在 issue 中描述以下问题:

1. funcat 的版本

funcat==0.3.2

2. Python 的版本

3.6

3. 是 Windows / Linux / MacOS or others?

windows

4. 您出现问题对应的源码 / 或者能复现问题的简易代码

close_data = NumericSeries([1,2,3])
EMA (close_data,3)

5. 您出现的错误堆栈日志信息

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)

关于安装的问题

这个我安装怎么talib安装不了。。。能告知下平台吗?win7 32 python3.5 虚拟机, 还有个让我安装visualc++14 请帮我看下,拜托了!新手

我想用来进行虚拟币(比特币),'Series' object has no attribute 'series'

提 ISSUE 须知

如果是 bug 反馈,烦请在 issue 中描述以下问题:

1. funcat 的版本

0.3.2

2. Python 的版本

3.6

3. 是 Windows / Linux / MacOS or others?

windows

4. 您出现问题对应的源码 / 或者能复现问题的简易代码

data=DataFrame()

arr = [1,5,323,20,5,3,2]
data["a"]=arr
result=LLV(data["a"],3)
print(K, D, J)

5. 您出现的错误堆栈日志信息

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 这玩意是谁的属性呢

替换 DataBackend 为 RQAlpha 的 DataProxy出错

1. funcat 的版本

0.3.2

2. Python 的版本

3.8

3. 是 Windows / Linux / MacOS or others?

Windows

4. 您出现问题对应的源码 / 或者能复现问题的简易代码

set_data_backend(RQAlphaDataBackend("~/.rqalpha/bundle"))

5. 您出现的错误堆栈日志信息

self.data_proxy = DataProxy(BaseDataSource(os.path.expanduser(bundle_path)))
TypeError: init() missing 1 required positional argument: 'custom_future_info'

数据格式转换问题

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.