金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 364|回复: 11

新手关于python条件成立,buyclose不执行的问题

[复制链接]

3

主题

8

帖子

8

积分

Rank: 2

等级: 标准版

注册:
2024-9-16
曾用名:
发表于 2024-9-25 16:05 | 显示全部楼层 |阅读模式
            if 最新价/5日线>=1  and  空头持仓市值==0 and  可用资金>10000:
                sell_open(s, "Market", 0,kcss ,repeat=0,serial_id = 1)#开仓
                context.sckc=1
            if  context.sckc==1 and kcss==持仓数量:   
                sell_open(s, "Limit",cjjg,kcss,serial_id = 2)
                buy_close (s,"Limit",cjjg1,kcss,serial_id = 1)
                context.sckc=0
                context.scgd=1
            if context.scgd==1 :               
                for i in range(8):
                    if 空头持仓市值==0 : #平仓单子成交     
                        cancel_order (id_last2.order_id)#撤销加仓委托
                        context.scgd=0
                        break
                    if 持仓数量==kcss : #加仓单子成交                             
                        cancel_order (id_last.order_id)#取消平仓委托
                        sell_open(s, "Limit", cjjg3,kcss ,serial_id = 3)#挂加仓单子                       
                    if 持仓数量==kcss*(i+2) :取消委托成功
                        context.scgd=0
                        buy_close (s,"Limit",  ,cjjg3,持仓数量 ,serial_id = 1)#挂平仓单子
   遇到两个问题:1,第一个开仓语句,如果repeat=1,条件成立反复执行开仓操作,但是context.sckc参数不及时更新,导致后面挂单操作无法执行
                         2,最后一个挂平仓语句,即使if后面条件成立,也不执行
   是语句还是什么原因,有没有好的解决方法呢,新手求帮解答,感谢                  

回复

使用道具 举报

34

主题

9195

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-9-25 16:09 | 显示全部楼层
repeat        int        是否允许重复下单,默认值为0,代表不允许重复下单。等于1代表开启重复下单。

buy_close (s,"Limit",  ,cjjg3,持仓数量 ,serial_id = 1)#挂平仓单子
参数不对,限价指令,后面跟的是下单价格、数量。你两个逗号了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

8

帖子

8

积分

Rank: 2

等级: 标准版

注册:
2024-9-16
曾用名:
 楼主| 发表于 2024-9-25 16:15 | 显示全部楼层
不好意思,多个,是编辑的时候错误了,实际运行没有的。请问这样编写的语句有问题吗?怎么解决因为数据更新不及时造成条件不成立的情况呢
回复

使用道具 举报

34

主题

9195

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-9-25 16:33 | 显示全部楼层
Leo36381 发表于 2024-9-25 16:15
不好意思,多个,是编辑的时候错误了,实际运行没有的。请问这样编写的语句有问题吗?怎么解决因为数据更新 ...

1. 如果buy_close没有多分号,那就看你有没有挂单动作了。 单独这句话看应该是没有问题的。
具体你可以下线成交位置上触发的日志。或者结合print进行调试。


2.什么叫做数据更新不及时?软件行情数据都是实时推动的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

8

帖子

8

积分

Rank: 2

等级: 标准版

注册:
2024-9-16
曾用名:
 楼主| 发表于 2024-9-25 16:52 | 显示全部楼层
我看了日志,前面的动作都执行了,就最后一个动作没有记录
我用print输出持仓数量==kcss*(i+2),条件是成立的
是不是因为之前的单子撤了,可用持仓没有及时更新,导致挂单操作进行不了呢
回复

使用道具 举报

34

主题

9195

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-9-25 17:06 | 显示全部楼层
本帖最后由 技术006 于 2024-9-25 20:41 编辑
Leo36381 发表于 2024-9-25 16:52
我看了日志,前面的动作都执行了,就最后一个动作没有记录
我用print输出持仓数量==kcss*(i+2),条件是成 ...

如果你调试的信息中条件是成立的,那么就一定会进入到判断体内。

你可以在判断体内增加输出条件。
1.直接输出buy_close这类下单函数的返回值。看它具体下单失败的原因。


另外这个位置触发的时间是什么时候?把对应的系统日志贴出来看戏
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

8

帖子

8

积分

Rank: 2

等级: 标准版

注册:
2024-9-16
曾用名:
 楼主| 发表于 2024-9-25 17:06 | 显示全部楼层
另外用委托列表的状态作为条件语句怎么不成立呢?比如:
if (id_list[-1].position_effect==open)
   print('已执行')
尽管条件成立,也没有print('已执行')
回复

使用道具 举报

34

主题

9195

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-9-25 17:12 | 显示全部楼层
Leo36381 发表于 2024-9-25 17:06
另外用委托列表的状态作为条件语句怎么不成立呢?比如:
if (id_list[-1].position_effect==open)
   pri ...

你先判断这个id是不是有效的下单id
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

8

帖子

8

积分

Rank: 2

等级: 标准版

注册:
2024-9-16
曾用名:
 楼主| 发表于 2024-9-25 17:52 | 显示全部楼层
2024-09-25 14:55:03.208    【Python】sell_open 策略:<MySellshort> 出现信号 book_id:ZQSA01,volume=9, Type=1, Price=0.000000, Account=, serial_id=1
2024-09-25 14:55:03.220    【下单】SA01 价1470.000000 量9 买卖1 类型1 开平0 账户7698 Formula 1
2024-09-25 14:55:03.226    【下单】已提交,订单ID :420022456
2024-09-25 14:55:03.386    【指令】收到回报指令 ID = 420022456 品种:SA501 账户:7698
2024-09-25 14:55:03.387    【回报】7698 : SA01 - 已报单 9 价格:0 开 卖
2024-09-25 14:55:03.447    【指令】收到Order回报指令 ID = 420022456 Status = 3 品种:SA501 账户:7698
2024-09-25 14:55:04.001    【指令】收到成交回报指令 ORDERID = 420022456
2024-09-25 14:55:04.001    【回报】7698 : SA501 - 已成交 9 价格:1470 开 卖
2024-09-25 14:55:04.008    【回报】7698 : SA501 - 全部成交 9
2024-09-25 14:55:08.197    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:08.223    【Python】sell_open 策略:<MySellshort> 出现信号 book_id:ZQSA01,volume=9, Type=0, Price=1472.000000, Account=, serial_id=2
2024-09-25 14:55:08.230    【下单】SA01 价1472.000000 量9 买卖1 类型0 开平0 账户7698 Formula 1
2024-09-25 14:55:08.236    【下单】已提交,订单ID :420022457
2024-09-25 14:55:08.239    【Python】buy_close 策略:<MySellshort> 出现信号 book_id:ZQSA01,volume=9, Type=0, Price=1468.000000, Account=, serial_id=1
2024-09-25 14:55:08.250    【下单】SA01 价1468.000000 量9 买卖0 类型0 开平1 账户7698 Formula 1
2024-09-25 14:55:08.256    【下单】已提交,订单ID :420022458
2024-09-25 14:55:08.409    【指令】收到回报指令 ID = 420022457 品种:SA501 账户:7698
2024-09-25 14:55:08.411    【回报】7698 : SA01 - 已报单 9 价格:1472 开 卖
2024-09-25 14:55:08.471    【指令】收到Order回报指令 ID = 420022457 Status = 3 品种:SA501 账户:7698
2024-09-25 14:55:08.532    【指令】收到回报指令 ID = 420022458 品种:SA501 账户:7698
2024-09-25 14:55:08.532    【回报】7698 : SA01 - 已报单 9 价格:1468 平 买
2024-09-25 14:55:08.595    【指令】收到Order回报指令 ID = 420022458 Status = 3 品种:SA501 账户:7698
2024-09-25 14:55:13.195    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:18.192    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:23.193    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:28.199    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:33.195    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:38.185    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:42.463    【指令】收到成交回报指令 ORDERID = 420022457
2024-09-25 14:55:42.463    【回报】7698 : SA501 - 已成交 9 价格:1472 开 卖
2024-09-25 14:55:42.471    【回报】7698 : SA501 - 全部成交 9
2024-09-25 14:55:43.191    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:55:43.201    【Python】sell_open 策略:<MySellshort> 出现信号 book_id:ZQSA01,volume=9, Type=0, Price=1474.000000, Account=, serial_id=3
2024-09-25 14:55:43.210    【下单】SA01 执行撤单指令 OrderID:420022458 帐号:7698
2024-09-25 14:55:43.210    【下单】SA01 价1474.000000 量9 买卖1 类型0 开平0 账户7698 Formula 1
2024-09-25 14:55:43.223    【下单】已提交,订单ID :420022459
2024-09-25 14:55:43.277    【指令】收到撤单回报指令 ORDERID = 420022458
2024-09-25 14:55:43.283    【回报】7698 : SA01 纯碱2501 - 已撤单 量:9
2024-09-25 14:55:43.398    【指令】收到回报指令 ID = 420022459 品种:SA501 账户:7698
2024-09-25 14:55:43.398    【回报】7698 : SA01 - 已报单 9 价格:1474 开 卖
2024-09-25 14:55:43.459    【指令】收到Order回报指令 ID = 420022459 Status = 3 品种:SA501 账户:7698
2024-09-25 14:55:48.190    【Python】 策略:<MySellshort> 触发handle_bar
2024-09-25 14:58:18.000    【指令】收到成交回报指令 ORDERID = 420022459
2024-09-25 14:58:18.000    【回报】7698 : SA501 - 已成交 9 价格:1474 开 卖
2024-09-25 14:58:18.015    【回报】7698 : SA501 - 全部成交 9
回复

使用道具 举报

34

主题

9195

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-9-25 21:38 | 显示全部楼层
日志中如果没有buy_close 相关的任何记录。建议你打印输出其返回值。下单失败最常见的可能就是,重复触发下单被过滤掉。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 23:04 , Processed in 0.246408 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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