evaluate函数使用无效_第十七期 使用Python识别K线形态

点击蓝字

关注我们

728d92e2c4b06da868b0825616bc3d35.gif

记得小编初入股市,会尝试各种各样的投资方法,其中有一段时间特别痴迷技术分析,会花大量时间研究什么上升三角形、下降旗形,画起辅助线时比高考数学还认真。

本期就介绍如何使用python中的talib包方便的识别K线形态。

如果您相信技术分析,talib将是您的好工具。

如果您不相信技术分析,您也可以使用talib来证明技术分析是无效的。

a172dccc50c7b9adf2c570243f3f0b95.png 728d92e2c4b06da868b0825616bc3d35.gif 728d92e2c4b06da868b0825616bc3d35.gif

一、talib基本介绍及安装

与pandas、numpy一样,talib也是可以用python调入的包(可以理解为工具包),主要用来进行股市技术分析,包含了150多个指标,包括:ADX,MACD, RSI, Stochastic, Bollinger Bands, 等,可以用来进行K线形态识别,这个包是完全免费的。

安装:如果之前安装过anaconda或使用优矿进行研究,无需再单独安装,软件已经默认安装好。

如果没有安装过上述软件,需在命令行(运行cmd)输入:

pip install Ta-Lib

注:网上有帖子说这种安装方法可能会报错,因此小编建议提前安装好anaconda。

728d92e2c4b06da868b0825616bc3d35.gif 728d92e2c4b06da868b0825616bc3d35.gif

二、可研究的指标及形态:

按照类型可以分为以下几类:

3525dc156153ddae9b49914d3a145529.png

具体详细指标及形态含义可查询官方文档: http://mrjbq7.github.io/ta-lib/doc_index.html 懒得看英文的投资者可以直接查看翻译文档: https://github.com/HuaRongSAO/talib-document   728d92e2c4b06da868b0825616bc3d35.gif 728d92e2c4b06da868b0825616bc3d35.gif

三、案例演示

本期主要对早晨之星和射击之星两种K线形态识别进行展示: 1、K线形态介绍
  • 早晨之星:三日K线模式,股价处于下跌趋势,第一日阴线,第二日价格振幅较小,第三天阳线,预示底部反转。
  • 射击之星:一日K线模式,上影线至少为实体长度两倍,没有下影线,预示着股价下跌。
  2、数据准备 这两种形态的识别需要股票的价格信息: 开盘价、最高价、最低价、收盘价,可以通过优矿函数或其他工具轻易获取。 接着将数据调整成talib函数规定的形式:
  • 数据格式必须是浮点型,不能是整型,需要使用python自带的float函数调整,优矿调取的价格数据均为浮点型,无需再做调整

  • numpy的数组形式(array)。调整方法:使用numpy的array函数,具体代码请看文章结尾代码链接。

以中国平安2015年9月1日到2019年9月1日收盘价为例,数据调整为下面的格式:

1901038c57853422f4e10efd0ab804f9.png

3、一键识别 做好准备后,直接调用对应的函数: 早晨之星:
df['MorningStar']=talib.CDLMORNINGSTAR(Open,High,Low,Close,penetration=0)
射击之星:
df['ShootingStar']=talib.CDLSHOOTINGSTAR(Open,High, Low, Close)
4、结果查看: K线形态识别返回的结果有三种:
  • -100:出现卖出信号

  • 0:没有出现该形态

  • 100:出现买入信号

  早晨之星由于是买入信号,因此结果为100时说明出现此形态,我们调出近4年中国平安日行情出现过的所有早晨之星形态:

bc7afb755dd07525e8e1b1e9b68b5eeb.png

共计出现了5次,会给出具体的出现时间,借此,技术分析研究者可以通过信号出现后的股价表现判断该指标的有效性。   同理,射击之星是卖出信号,结果为-100是说明出现此形态

02921ea5a0f4ca2669a5fb7928028e4d.png

728d92e2c4b06da868b0825616bc3d35.gif 728d92e2c4b06da868b0825616bc3d35.gif

小编对于技术形态分析的浅见:

小编认为不能通过一次技术形态有效就判断该指标有效,也不能因为一次无效就判断指标无效,需要经过大规模的数据统计去计算这个指标有效的概率。 当然有效的标准需要仿照因子研究,先排除那些市场、规模、行业等方面的贝塔的影响,看剩下的阿尔法收益是否期望为正。 但是同样的问题又来了,历史有效的指标能否代表未来有效呢? 这又涉及了因子有效性的研究。 。 。 。 。 。   完整代码链接: (百度网盘链接) https://pan.baidu.com/s/1EaYpUeXGZm4LqWnJm6BlQw 2019年9月9日 写于: 北京外国语大学

b62af34e7c28c98cc4dd7d6f5e318710.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
evaluate函数的实现需要根据具体的应用场景而定,以下是一个简单的示例代码,用于计算一个表达式的值: ```python def evaluate(expression): """ 计算表达式的值 :param expression: 表达式字符串 :return: 计算结果 """ # 去除空格 expression = expression.replace(' ', '') # 定义操作数栈 operands = [] # 定义操作符栈 operators = [] # 定义优先级字典 priority = {'+': 1, '-': 1, '*': 2, '/': 2} # 遍历表达式 i = 0 while i < len(expression): # 如果当前字符是数字,提取整个数 if expression[i].isdigit(): j = i while j < len(expression) and expression[j].isdigit(): j += 1 operands.append(int(expression[i:j])) i = j # 如果当前字符是操作符,判断是否需要进行运算 elif expression[i] in priority: # 如果操作符栈为空,或者当前操作符优先级大于栈顶操作符优先级,直接入栈 if not operators or priority[expression[i]] > priority[operators[-1]]: operators.append(expression[i]) # 否则,弹出栈顶操作符和两个操作数进行运算,将结果入栈 else: operator = operators.pop() operand2 = operands.pop() operand1 = operands.pop() if operator == '+': result = operand1 + operand2 elif operator == '-': result = operand1 - operand2 elif operator == '*': result = operand1 * operand2 else: result = operand1 / operand2 operands.append(result) continue i += 1 else: i += 1 # 遍历完表达式后,对剩余的操作符和操作数进行运算,直到操作符栈为空 while operators: operator = operators.pop() operand2 = operands.pop() operand1 = operands.pop() if operator == '+': result = operand1 + operand2 elif operator == '-': result = operand1 - operand2 elif operator == '*': result = operand1 * operand2 else: result = operand1 / operand2 operands.append(result) # 返回最终结果 return operands[0] ``` 该函数使用了栈来存储操作符和操作数,根据操作符的优先级进行运算。需要注意的是,该函数只适用于简单的四则运算表达式,对于更复杂的表达式,需要进行相应修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值