金字塔决策交易系统
标题:
python下单函数执行时间过长
[打印本页]
作者:
100019876
时间:
2023-1-31 19:23
标题:
python下单函数执行时间过长
buy_open函数隔了2分钟才得到返回值order id,但是看Pleaseorder.txt里只用了1s就成交成功了。相当于卡了2分钟,但是2分钟前这个单就完成提交到成交了。这是为什么
作者:
技术008
时间:
2023-2-1 09:21
您好,您的问题正在查看中,请稍后
您是怎么观察到这个order_id隔了2分钟的呢,另外该现象是否普遍存在有规律必现吗
作者:
100019876
时间:
2023-2-1 09:27
我在下单的前后一行打了log,发现后面的log打不出来。现在的表现是卡住了,隔了两分钟也没有返回,按停止策略会显示策略繁忙需要强制退出。稳定复现。
强制退出时可以看到backtrace吗?可能会是不同品种连续下单的原因吗,repeat设成1了
作者:
技术008
时间:
2023-2-1 09:48
您好,相关代码是否方便发我们这边
qq上给您留言了,您看下
作者:
100019876
时间:
2023-2-1 14:22
有什么发现吗
作者:
技术006
时间:
2023-2-1 18:52
问题还在定位处理中,请耐心等待。
作者:
100019876
时间:
2023-2-1 21:21
技术006 发表于 2023-2-1 18:52
问题还在定位处理中,请耐心等待。
可以复现吗
作者:
100019876
时间:
2023-2-1 22:41
另一个观察,一般是下单后cpu利用率升高并且居高不下。应该是你们的下单函数里有bug,未能正确退出或者死循环了
补充内容 (2023-2-2 09:28):
强制停止后,cpu使用率依然没有降下来,以前跑正常情况不需要这么高的cpu
作者:
技术006
时间:
2023-2-2 10:19
本帖最后由 技术006 于 2023-2-2 10:28 编辑
单独使用金字塔自己的api下单函数测试是没有问题的。怀疑是第三方库和金字塔之间产生的影响造成的阻塞。建议尝试对策略进行调整处理:
1.不要在策略了中创建线程等逻辑操作。都在主线程中完成。
2. 日志输出建议直接采用提供的api函数直接输出,不要做任何封装处理。
作者:
技术007
时间:
2023-2-2 10:40
系统自带的代码里,日志输出示例供您参考
def init(context):
# 在context中保存全局变量
context.s1 = "ZQZC05" #动力煤
print(context.s1+"策略启动") #调试打印输出
def order_status(context,order):
if (order.status=="tradeing" and order.order_book_id==context.s1):
print(str(order.order_id)+'全部成交') #调试打印输出
作者:
100019876
时间:
2023-2-3 15:38
目前的解决方法:每次下单完time.sleep(1)。
不知道为什么能work
作者:
技术009
时间:
2023-2-6 09:07
这个问题未必是金字塔下单函数返回的问题。
从已知的代码来看,你写日志的代码部分甚至有包含 网络请求的操作,而网络请求是可能有请求超时 ,请求被拒等情况的。 简单说有可能是你写日志部分本身出了问题。你换成金字塔自带的写日志的函数,对比下就可以确定是否是你这个写日志的代码有问题了。
作者:
100019876
时间:
2023-2-6 09:43
我试过的,不是那部分的问题
作者:
技术009
时间:
2023-2-6 16:30
log_handler 全部直接替换成系统自带的 log_debug_info 也不行?全替换下来做个排除法。
然后我是比较怀疑 WebhookClient 执行send方法时候 的响应是需要时间的,走网络的响应的速度必然比程序运行速度慢。 你可以给 WebhookClient 传递关于异常重试处理的参数。
可以参考这个里面:
https://slack.dev/python-slack-sdk/webhook/index.html
最后面的一个范例。
欢迎光临 金字塔决策交易系统 (https://www.weistock.com/bbs/)
Powered by Discuz! X3.4