问题:

  回测的时候遇到如下报错,请问这是怎么回事?

Error: 回测运行失败, 错误码:2 错误信息: 编译错误:用户策略377:42: invalid syntax
log.error(f”计算集合竞价参考价出错: {str(e)}”)

原因和解决方法:

  引起错误的语句使用了f-stringf-string是Python中的一种字符串格式化机制,英文全称是Formatted String Literals。f-string 提供了一种简洁、直观且高效的方式来在字符串中嵌入表达式。

  f-string是从Python3.6开始引入的,而Ptrade目前内置的Python版本是3.5.1,尚不支持这种用法,所以引起了invalid syntax报错。

  要解决这个错误,可以使用%占位符或者str.format()来替代。举例如下:

输出的样式 f-string %占位符 str.format() 输出的结果
输出字符串。
status = '收盘'
print(f'现在是{status}') print('现在是%s'%status) print('现在是{}'.format(status)) 现在是收盘
输出浮点数,保留两位小数。
price = 12.343
print(f'现在的价格是{price:.2f}') print('现在的价格是%.2f'%price) print('现在的价格是{:.2f}'.format(price)) 现在的价格是12.34
以百分数形式显示,保留两位小数。
rate = 0.0123
print(f'目前的涨幅是{rate:.2%}') print('目前的涨幅是%.2f%%' % (rate * 100)) print('目前的涨幅是{:.2%}'.format(rate)) 目前的涨幅是1.23%
注:在第三行的百分数表达中,%占位符的格式化说明符与f-string、str.format()的不同,并且额外使用了一个`%`进行转义。