VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 17
声望: 0

concurrent.futures.process.BrokenProcessPool: A process in the process pool was terminated abruptly while the future was running or pending.

好像是进程问题,如何解决

Member
avatar
加入于:
帖子: 5488
声望: 334

可以贴下优化时候的参数配置截图和完整保存截图

Member
avatar
加入于:
帖子: 20
声望: 0

description
您好,我也是bf optimization这个报错,请问怎么解决呢 谢谢!

Member
avatar
加入于:
帖子: 5488
声望: 334

子进程里的函数抛异常了,可以把njobs调成1看下底层输出的报错

Member
avatar
加入于:
帖子: 20
声望: 0

请问在哪里调njobs呢,我在backtesting还有engine里都没有看到和njobs相关的代码。我把max_workers设置成了1,依旧报出相同的错误。谢谢!

Member
avatar
加入于:
帖子: 5488
声望: 334

你max_worker设成1底层应该会把报错信息输出的

Member
avatar
加入于:
帖子: 20
声望: 0

您好, 我运行完回测,针对其中一个参数跑bf优化,但是跑出来的结果与我回测时的完全不一样(用的对应的那个参数),想知道为什么,以及有什么办法可以得到优化时每组的全部参数吗?谢谢!!我试了样例,没有出现这种情况。

Super Moderator
avatar
加入于:
帖子: 89
声望: 8

在VeighNa中进行策略参数优化时,如果优化结果与单独回测结果不一致,可能由以下几个原因导致:

  1. 数据范围不一致:确保优化和单独回测时使用的数据范围(起止时间、K线周期等)完全一致。

  2. 参数设置差异:检查优化时是否设置了其他参数的变化范围,这些参数可能影响了最终结果。

  3. 随机性因素:如果策略中包含随机性(如随机数生成),可能导致每次运行结果不同。

  4. 多进程优化问题:暴力穷举优化(BF优化)使用多进程并行计算,如果策略代码中存在全局变量或非线程安全的操作,可能导致结果不一致。

获取优化时每组的全部参数

在VeighNa中,可以通过以下方式获取优化时每组的全部参数:

  1. 暴力穷举优化:优化完成后,点击【优化结果】按钮,可以查看所有参数组合及其对应的目标函数值。

  2. 遗传算法优化:优化完成后,同样可以通过【优化结果】按钮查看所有参数组合及其对应的目标函数值。

  3. 自定义输出:在优化函数中,可以通过output参数自定义输出方式,将每组的参数和结果保存到文件或数据库中。

例如,使用暴力穷举优化时,可以通过以下代码将优化结果保存到CSV文件中:

import pandas as pd

# 运行优化
results = engine.run_bf_optimization(...)

# 将结果转换为DataFrame
data = {
    '参数': [str(result[0]) for result in results],
    '目标函数值': [result[1] for result in results]
}
df = pd.DataFrame(data)

# 保存到CSV文件
df.to_csv('optimization_results.csv', index=False)

建议

  • 检查策略代码:确保策略代码中没有全局变量或非线程安全的操作。
  • 固定随机种子:如果策略中包含随机性,可以固定随机种子以确保结果可复现。
  • 对比数据范围:仔细检查优化和单独回测时使用的数据范围是否一致。

如果问题仍然存在,建议逐步排查上述可能的原因,或提供更多细节以便进一步分析。

Member
avatar
加入于:
帖子: 20
声望: 0

我把max workers设置成1,bf优化还是有 process pool的进程报错,且没有任何底层的报错,请问如何报底层错来修改呢?谢谢!ga优化是一直没有响应

Member
avatar
加入于:
帖子: 5488
声望: 334

可以用示例策略试试看是否能复现错误

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】