金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1191|回复: 3

用字典效率会不会更高

[复制链接]

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
发表于 2021-12-6 09:54 | 显示全部楼层 |阅读模式
def handle_bar(context):#遍历周期
    for i in context.heyue:#遍历合约池
        close = history_bars(i, context.period + 1, 'self', 'close', True, True, True)
        if len(close) < context.period + 1 :
            continue
这是一个多品种交易策略片段,每根BAR,都要遍历合约池GET每个合约context.period + 1片段的数据,由于都是放在地址为CLOSE的内存里,这意味着之前的数据被新数据填充覆盖,而等到下根BAR时,又要重新GET全部的数据。
我如果改成这样:
def handle_bar(context):#遍历周期
    close = {}
    for i in context.heyue:#遍历合约池
        close [i] = history_bars(i, context.period + 1, 'self', 'close', True, True, True)
        if len(close[i].values()) < context.period + 1 :
            continue
我的问题是:由于每个品种合约的数据都有一个内存地址,所以函数history_bars在拿context.period + 1个数时,只需要拿最近的一根和丢掉最远的那一根,而不会全部重新再拿一便,从而提高了效率,是不是这样?

回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-12-6 10:01 | 显示全部楼层
你的意思是用一个字典作为零时变量存储,比直接用一个变量来的效率高??
这个不太清楚了,个人觉得没有提升把
你获取数据的context.period + 1,这个是一样的,区别只是用来存储变量的方式不一样
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-12-6 10:02 | 显示全部楼层
另外个人建议,没有必要这么去纠结效率
python本身不是一个非常效率高的语言,如果非常在意效率,那么与其考虑代码编写不如直接使用c++了

这也是做高频他们要么直接c++要么考虑c++加python融行,单纯去纠结变量使用效率方面,你就把python简化代码的特点给丢弃了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-12-6 10:14 | 显示全部楼层
嗯,测试一下好像没什么用。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 13:30 , Processed in 0.191198 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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