测试平台信息:
操作系统:Windows
Python 3.10
CPU:i9 12900k
- 批量一次性计算 50000 跟K线数据用时
- 循环每根K线进行追加更新计算(模拟回测)
代码如下:
from chanlun import cl
from chanlun.exchange.exchange_db import ExchangeDB
import time
cl_config = {
'fx_bh': 'fx_bh_yes', 'fx_qj': 'fx_qj_k', 'bi_type': 'bi_type_old', 'bi_bzh': 'bi_bzh_yes',
'bi_qj': 'bi_qj_dd', 'bi_fx_cgd': 'bi_fx_cgd_no', 'xd_bzh': 'xd_bzh_yes', 'zsd_bzh': 'zsd_bzh_yes',
'xd_qj': 'xd_qj_dd', 'zsd_qj': 'zsd_qj_dd',
'zs_bi_type': 'zs_type_bz', 'zs_xd_type': 'zs_type_bz',
'zs_wzgx': 'zs_wzgx_zggdd', 'zs_qj': 'zs_qj_ck'
}
ex = ExchangeDB('a')
klines = ex.klines('SHSE.000001', '5m', args={'limit': 50000})
print('K线数量:', len(klines))
# 直接调用 process_klines 进行计算
s_time = time.time()
cd_1 = cl.CL('SHSE.000001', '5m', cl_config).process_klines(klines)
print('计算后的K线数量:', len(cd_1.get_klines()))
print('process_klines 一次批量计算 50000 用时:', time.time() - s_time)
# 每根K线进行逐次计算
s_time = time.time()
cd_2 = cl.CL('SHSE.000001', '5m', cl_config)
for i in range(1, len(klines) + 1):
cd_2.process_klines(klines[i - 1:i:])
print('计算后的K线数量:', len(cd_1.get_klines()))
print('process_klines 逐跟K线计算 50000 用时:', time.time() - s_time)
结果:
K线数量: 50000
计算后的K线数量: 50000
process_klines 一次批量计算 50000 用时: 37.42770791053772
计算后的K线数量: 50000
process_klines 逐跟K线计算 50000 用时: 59.82140636444092