金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1282|回复: 14

如何能取到talib.MA(context.data['Close'], timeperiod=5)的最新一个数值?

[复制链接]

4105

主题

4175

帖子

4200

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-6-13 09:01 | 显示全部楼层 |阅读模式
请教:通过不断注释掉其余代码,锁定到是这行代码报错:
if len(context.data) >= 20:
        # 使用 TA-Lib 计算收盘价均线
        context.data['close_MA5'] = talib.MA(context.data['Close'], timeperiod=5).dropna()[-1]
        log_debug_info('D:\金字塔python策略\测试文件输出\pel_test_log.txt',"Data updated:"+str(talib.MA(context.data['Close'], timeperiod=5).dropna()[-1]))

然后添加公式,就是报错:


很奇怪,talib.MA()返回的返回的 Pandas Series,可以用[-1]来获取最后一个数值呀,为什么在金字塔的python中就是不行呢?
而且报错吧,那用报错的这段代码,却又能打印出值,如下:


代码才500多行,报错信息却是3千多行…………,而且报错描述简单的令人发指,就一个-1
 请教一下,如何能取到talib.MA(context.data['Close'], timeperiod=5)的最新一个数值?
截图202406130901134143.png
截图202406130901039518.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
发表于 2024-6-13 09:19 | 显示全部楼层
补充一下,这个问题是出现在python 引用的编辑器中
回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
发表于 2024-6-13 09:22 | 显示全部楼层
data是一个dataframe,希望行情每更新一次,都能把计算出来的指标值的最后一个值添加到dataframe的对应列的末尾,但是只要使用[-1],就报错
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-6-13 13:36 | 显示全部楼层
本帖最后由 技术009 于 2024-6-13 13:42 编辑

“很奇怪,talib.MA()返回的返回的 Pandas Series,可以用[-1]来获取最后一个数值呀” 没有索引情况下不支持直接这样取。
代码才500多行,报错信息却是3千多行…………,而且报错描述简单的令人发指,就一个-1”  因为错误发生在第三方库深处某个执行过程。而且这里报错其实很清晰,就是不支持这样操作。

你可以这样获取:
talib.MA(context.data['Close'], timeperiod=5).dropna().iloc[-1]

或者.dropna()[-2:-1]
或者iat 方法 或者tail 方法
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

34

主题

9212

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-6-13 13:48 | 显示全部楼层
报错位置是运行中出现的报错,3000多行的位置,说明是在第三方库中出现的执行异常。

你直接在python策略或者模块中执行代码看是否有更为具体的报错信息。或者提供可执行的代码出来。我们调试看下情况,。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
发表于 2024-6-13 13:59 | 显示全部楼层
技术009 发表于 2024-6-13 13:36
“很奇怪,talib.MA()返回的返回的 Pandas Series,可以用[-1]来获取最后一个数值呀” 没有索引情况下不支 ...

talib.MA(context.data['Close'], timeperiod=5).dropna().iloc[-1]
这个测试了,同样报错
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-6-13 14:30 | 显示全部楼层
你要判断长度符合后再取值。和PEL一样,算五周期均线,前面四个K都是无法产出值的。

你在引用里取值和计算,一般都是要先判断下K数量情况的。
截图202406131430283680.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
发表于 2024-6-13 17:00 | 显示全部楼层
那就很奇怪了,我这边也是有判断的
截图202406131659552132.png
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-6-13 17:10 | 显示全部楼层
不能直接用 [-1]  在没有索引的情况下
截图202406131709583614.png

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
发表于 2024-6-13 17:12 | 显示全部楼层
我的代码是这样,有什么问题吗
截图202406131710591455.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-28 13:44 , Processed in 0.212289 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表