金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3312|回复: 10

python示例策略怎样测试多品种

[复制链接]

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
发表于 2021-11-25 09:06 | 显示全部楼层 |阅读模式
老师好!我拿PYTHON示例策略,比如均线交易系统,以RB00为基准合约,合约池合约若干,进行测试,测试结果显示,只有螺纹钢发生交易,合约池里面其它品种并没有交易。
问:1、是不是要在代码里遍历合约池的合约,才能交易多品种?软件并不会自动循环计算合约池里面的合约?
2、提示尽量不要跨市场跨品种测试,但恐怕跨品种测试不可避免,那么不同合约时间戳不一样的问题怎样解决呢?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-11-25 09:08 | 显示全部楼层
1、软件不会自动,你可以自己读取板块或者方合约池里,然后代码去遍历
2、这个没有办法,软件的handle_bar是根据基准合约来的,而且你实盘时候本身股票和期货就不一样,不要方一个策略去执行
分成多个策略也没有问题的呀
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-11-25 09:18 | 显示全部楼层
谢谢回复!再请教一下:
1、软件不会自动,你可以自己读取板块或者方合约池里,然后代码去遍历==这是不是意味着,其实只要读取我想要的合约数据就可以,不需要一定要放在合约池,照样可以进行测试?
2、多个策略进行组合测试不方便。我如果强行把不同时间戳期货合约放在一起遍历,后果是什么?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-11-25 09:24 | 显示全部楼层
1、对的,你看下股票那几个范例,就是读取板块,甚至你自己放一个列表都可以
python策略是灵活编写,不要拘泥
2、因为合约的handle_bar是根据基准合约来的,这个每一根执行一次。假设根据股票早上进行策略,那么晚上时候他就不会触发handle_bar了

这个不要去考虑太多后果,就不要放一起测试,而且你实盘时候股票和期货肯定也不是一个账户的, 放一起测试没有意义

3、如果都是期货,就把基准合约选交易时间最长的那个比如黄金,然后自己代码里去判断不同品种交易时间
一般来说python不建议去做期货单个的策略,这个你用pel简单方便多了,使用python除了给自己制造麻烦没有任何价值


python使用股票这种横截面统计才是
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-11-25 09:33 | 显示全部楼层
嗯嗯,因为对PYTHON不熟悉,所以先从时序策略开始学,感谢耐心解答!
回复

使用道具 举报

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-11-25 10:48 | 显示全部楼层
def init(context):
    # 在context中设置一些参数
    context.s1 = context.run_info.base_book_id
    context.s2 = 'sqru00' ###########
    #两条均线的周期长度
    context.long_period = 20
    context.short_period = 5
老师,我自己在均线示例策略里,增加了context.s2 = 'sqru00' ,然后下面的下单语句里面对context.s2交易,而不是对基准合约,进行回测,发现只有委托明细和资金曲线生成,没有交易明细和其它报告数据,这是为何?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-11-25 11:01 | 显示全部楼层
看委托明细提示什么,比如价格问题
那就可能是用了s1的价格去对s2交易
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-11-25 11:28 | 显示全部楼层
是资金不够

老师,我要观察脚本中的变量的历史变化,是不是必须启动回测(因为回测才会遍历BAR),而且结果是在弹出的信息窗口里,而不是脚本编辑器里,是这样调试的吗?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-11-25 11:29 | 显示全部楼层
是的必须回测
就好比自己写一个函数,他是不起作用的,回测或运行就是去调用这个函数才会执行
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

13

主题

64

帖子

74

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-11-25 11:36 | 显示全部楼层
def handle_bar(context):
    write_logging ('hello')
    print('hello')

    #获取交易品种价格,并产生对应的均线数据
    close = history_bars(context.s2, context.long_period+1, 'self', 'close',True)
    print(close)###################
按编译,编辑器并不会打印handle_bar里面的PRINT,必须按回测,才会在信息窗口里弹出打印结果,是这样的吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 03:37 , Processed in 0.178476 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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