我用的是异步,也是摸索出一个方式,
比如 在 线程A中运行
while True:
global close_all_signal
if close_all_signal==1:
api.close()
break
api.wait_update()
在线程B中的关闭函数中
def 关闭线程(api):
global close_all_signal
close_all_signal = 1 # 1 表示关闭 0表示运行
api.set_wait_timeout()
我发现这个方式可以正常关闭,用的GUI 界面。
NULL NULL 已回答的问题 2021年11月26日
1.
while True是死循环,如果红色框条件成立,在执行完944行,又会跳到932行。
直到收盘,才阻塞在933行,等待api行情数据的更新。
api.close()在此例中将永远不会执行。
2.
要达到截图中描述的效果,需要使用 if 真:break 跳出while循环,此时close才会生效。这样策略就关闭了。比如在944后加一行break
3.
在实盘中,api.close()根据需要添加,比如当天开/平仓后不需要再进行任何止损止盈加减仓等操作和监控。
没写api.close()的范例,大致就是因为没有跳出while循环,显得这句多余了
Shoe X 已回答的问题 2020年8月12日
我是文件A启动策略文件B,而且文件A和文件B中都写了api.close()