3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台进行策略回测时,遇到 “错误码:2 错误信息:可用资源不足,请稍后在创建” 的报错,通常是因为服务器当前计算资源(CPU或内存)已被占满,或者您的策略本身消耗了过多的系统资源。以下是详细的原因分析与解决方案:
g.xxx 列表中不断 append 数据而不清理),导致资源耗尽。最直接的解决方法是稍后再试。建议避开交易日的高峰时段,选择在夜间或周末提交耗时较长、计算量大的回测任务。
如果只是为了验证策略逻辑是否正确,不需要一次性跑完几年的全市场数据:
set_universe() 中仅放入几只代表性股票进行测试,而不是全市场(如 get_Ashares())几千只股票。不合理地使用 get_history 或 get_price 是导致资源不足的常见原因。
handle_data 中每次都获取过去几千天的分钟级数据。count=5,不要取 count=100。错误示例(极易导致资源不足):
def handle_data(context, data):
# 每次都获取全市场所有股票过去1000天的日线数据,内存瞬间爆炸
all_stocks = get_Ashares()
hist = get_history(1000, '1d', 'close', security_list=all_stocks)
正确示例(按需获取):
def handle_data(context, data):
# 仅获取当前股票池中股票过去5天的数据
hist = get_history(5, '1d', 'close', security_list=g.security)
g 对象)的使用在 ptrade 中,g 对象会被持久化保存。如果向 g 中的字典或列表不断添加数据而不删除,内存会随着回测天数的增加而线性增长。
after_trading_end 或 before_trading_start 中清理过期不需要的缓存数据。__ 开头命名(如 g.__temp_data),这样框架在落地持久化信息时会跳过它,减轻 IO 和内存压力。get_fundamentals 建议在 before_trading_start 或通过 run_daily 定时调用,不要在分钟级或 tick 级的 handle_data 中频繁调用。遇到“可用资源不足”时,首先尝试等待几分钟后重试或缩短回测区间。如果问题依然频繁出现,请务必审查代码中的 get_history 调用频率和数据量,以及全局变量 g 的内存管理。如果确认代码已极度优化但仍无法运行,建议联系所属券商的 ptrade 技术支持,确认是否可以提升账户的资源配额。