版本 v1.0
可视化策略实现如下:
# 本代码由可视化策略环境自动生成 2021年12月27日 20:12
# 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
def m2_run_bigquant_run(input_1, input_2, input_3):
# 示例代码如下。在这里编写您的代码
# 计算行业行业收益
industry_df = DataSource("basic_info_index_CN_STOCK_A").read()
SW_industry_list = industry_df[industry_df.instrument.str.startswith('SW')].instrument.tolist()
SW_industry_df = DataSource("bar1d_index_CN_STOCK_A").read(SW_industry_list)
SW_industry_ret = SW_industry_df.groupby('instrument').apply(calcu_ret)
SW_industry_ret.reset_index(inplace=True, drop=True)
SW_industry_ret['date'] = SW_industry_ret['date'].apply(lambda x:x.strftime('%Y-%m-%d'))
daily_buy_industry_dict = {dt:seek_head_industry(SW_industry_ret.set_index('date').loc[dt]) for dt in list(set(SW_industry_ret.date))}
daily_stock = input_1.read()
daily_stock['industry_sw_level1_0'] = daily_stock['industry_sw_level1_0'].apply(lambda x:'SW'+str(x)+'.HIX')
daily_stock = daily_stock.groupby(['date', 'industry_sw_level1_0']).apply(seek_head_stock).reset_index()
buy_df = pd.DataFrame()
for k,v in daily_buy_industry_dict.items():
buy_df = buy_df.append(daily_stock[(daily_stock.date==k)&(daily_stock.industry_sw_level1_0.apply(lambda x: x in v))])
buy_df = buy_df.groupby('date').apply(lambda x:x[0].values.tolist()).reset_index()
buy_df[0] = buy_df[0].apply(lambda x:x[0]+x[1]+x[2])
data_1 = DataSource.write_df(buy_df)
return Outputs(data_1=data_1, data_2=None, data_3=None)
# 计算不同周期的动量
def calcu_ret(df):
df = df.sort_values('date')
for i in [42, 84, 126]: # 分别代表2月、4月、半年的动量
df['ret_%s'%i] = df['close']/df['close'].shift(i)-1
return df
# 计算出得分
def seek_head_industry(df):
for j in ['ret_42','ret_84','ret_126']:
df['%s'%j] = df['%s'%j].rank(ascending=True)
df['score'] = 0.4*df['ret_42']+0.3*df['ret_84']+0.3*df['ret_126'] # 得分的权重分别为0.4、0.3、0.3
result = df.sort_values('score', ascending=False)
return list(result.instrument)[:3] # 前3个行业
# 选出特定行业优质股票
def seek_head_stock(df):
result = df.sort_values(['myrank'], ascending=False)
return list(result.instrument[:10]) # 每个行业选10只股票
# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
def m2_post_run_bigquant_run(outputs):
return outputs
# 回测引擎:初始化函数,只执行一次
def m4_initialize_bigquant_run(context):
# 手续费设置
context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
context.mydata = context.options["data"].read()
# 回测引擎:每日数据处理函数,每天执行一次
def m4_handle_data_bigquant_run(context, data):
# 按月调仓
if context.trading_day_index % 20 != 0:
return
date = data.current_dt.strftime('%Y-%m-%d') # 日期
# 整理出当天要买入的股票
stock_to_buy = context.mydata[context.mydata.date==date][0].tolist()[0]
# 通过positions对象,使用列表生成式的方法获取目前持仓的股票列表
stock_hold_now = [equity.symbol for equity in context.portfolio.positions]
# 继续持有的股票:调仓时,如果买入的股票已经存在于目前的持仓里,那么应继续持有
no_need_to_sell = [i for i in stock_hold_now if i in stock_to_buy]
# 需要卖出的股票
stock_to_sell = [i for i in stock_hold_now if i not in no_need_to_sell]
# 卖出
for stock in stock_to_sell:
# 如果该股票停牌,则没法成交。因此需要用can_trade方法检查下该股票的状态
# 如果返回真值,则可以正常下单,否则会出错
# 因为stock是字符串格式,我们用symbol方法将其转化成平台可以接受的形式:Equity格式
if data.can_trade(context.symbol(stock)):
# order_target_percent是平台的一个下单接口,表明下单使得该股票的权重为0,
# 即卖出全部股票,可参考回测文档
context.order_target_percent(context.symbol(stock), 0)
# 如果当天没有买入的股票,就返回
if len(stock_to_buy) == 0:
return
# 等权重买入
weight = 1 / len(stock_to_buy)
# 买入
for stock in stock_to_buy:
if data.can_trade(context.symbol(stock)):
# 下单使得某只股票的持仓权重达到weight,因为weight大于0,因此是等权重买入
context.order_target_percent(context.symbol(stock), weight)
# 回测引擎:准备数据,只执行一次
def m4_prepare_bigquant_run(context):
pass
# 回测引擎:每个单位时间开始前调用一次,即每日开盘前调用一次。
def m4_before_trading_start_bigquant_run(context, data):
pass
m7 = M.input_features.v1(
features="""industry_sw_level1_0
myrank=rank_fs_roe_ttm_0+rank_fs_net_profit_qoq_0-rank_pb_lf_0"""
)
m5 = M.instruments.v2(
start_date='2020-01-01',
end_date='2021-11-26',
market='CN_STOCK_A',
instrument_list='',
max_count=0
)
m6 = M.general_feature_extractor.v7(
instruments=m5.data,
features=m7.data,
start_date='',
end_date='',
before_start_days=90
)
m8 = M.derived_feature_extractor.v3(
input_data=m6.data,
features=m7.data,
date_col='date',
instrument_col='instrument',
drop_na=False,
remove_extra_columns=False,
user_functions={}
)
m9 = M.dropnan.v2(
input_data=m8.data
)
m2 = M.cached.v3(
input_1=m9.data,
run=m2_run_bigquant_run,
post_run=m2_post_run_bigquant_run,
input_ports='',
params='{}',
output_ports='data_1'
)
m4 = M.trade.v4(
instruments=m5.data,
options_data=m2.data_1,
start_date='',
end_date='',
initialize=m4_initialize_bigquant_run,
handle_data=m4_handle_data_bigquant_run,
prepare=m4_prepare_bigquant_run,
before_trading_start=m4_before_trading_start_bigquant_run,
volume_limit=0.025,
order_price_field_buy='open',
order_price_field_sell='close',
capital_base=10000000,
auto_cancel_non_tradable_orders=True,
data_frequency='daily',
price_type='真实价格',
product_type='股票',
plot_charts=True,
backtest_only=False,
benchmark=''
)
[2021-11-30 13:42:14.024446] INFO: moduleinvoker: input_features.v1 开始运行..
[2021-11-30 13:42:14.037642] INFO: moduleinvoker: 命中缓存
[2021-11-30 13:42:14.039380] INFO: moduleinvoker: input_features.v1 运行完成[0.014948s].
[2021-11-30 13:42:14.046757] INFO: moduleinvoker: instruments.v2 开始运行..
[2021-11-30 13:42:14.057769] INFO: moduleinvoker: 命中缓存
[2021-11-30 13:42:14.060805] INFO: moduleinvoker: instruments.v2 运行完成[0.014006s].
[2021-11-30 13:42:14.110815] INFO: moduleinvoker: general_feature_extractor.v7 开始运行..
[2021-11-30 13:42:18.324014] INFO: 基础特征抽取: 年份 2019, 特征行数=225729
[2021-11-30 13:42:25.395626] INFO: 基础特征抽取: 年份 2020, 特征行数=945961
[2021-11-30 13:42:32.864688] INFO: 基础特征抽取: 年份 2021, 特征行数=945333
[2021-11-30 13:42:32.989642] INFO: 基础特征抽取: 总行数: 2117023
[2021-11-30 13:42:33.004893] INFO: moduleinvoker: general_feature_extractor.v7 运行完成[18.894082s].
[2021-11-30 13:42:33.015044] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2021-11-30 13:42:38.356020] INFO: derived_feature_extractor: 提取完成 myrank=rank_fs_roe_ttm_0+rank_fs_net_profit_qoq_0-rank_pb_lf_0, 0.009s
[2021-11-30 13:42:39.149727] INFO: derived_feature_extractor: /y_2019, 225729
[2021-11-30 13:42:41.373537] INFO: derived_feature_extractor: /y_2020, 945961
[2021-11-30 13:42:43.651388] INFO: derived_feature_extractor: /y_2021, 945333
[2021-11-30 13:42:44.072935] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[11.057895s].
[2021-11-30 13:42:44.083439] INFO: moduleinvoker: dropnan.v2 开始运行..
[2021-11-30 13:42:44.408455] INFO: dropnan: /y_2019, 211529/225729
[2021-11-30 13:42:45.099405] INFO: dropnan: /y_2020, 870515/945961
[2021-11-30 13:42:45.717062] INFO: dropnan: /y_2021, 807724/945333
[2021-11-30 13:42:45.950685] INFO: dropnan: 行数: 1889768/2117023
[2021-11-30 13:42:45.996823] INFO: moduleinvoker: dropnan.v2 运行完成[1.913363s].
[2021-11-30 13:42:46.018506] INFO: moduleinvoker: cached.v3 开始运行..
[2021-11-30 13:46:22.945341] INFO: moduleinvoker: cached.v3 运行完成[216.926836s].
[2021-11-30 13:46:23.021213] INFO: moduleinvoker: backtest.v8 开始运行..
[2021-11-30 13:46:23.027534] INFO: backtest: biglearning backtest:V8.5.2
[2021-11-30 13:46:23.028907] INFO: backtest: product_type:stock by specified
[2021-11-30 13:46:23.033440] INFO: backtest: 其它市场:{'SZA'}
[2021-11-30 13:46:23.140094] INFO: moduleinvoker: cached.v2 开始运行..
[2021-11-30 13:46:32.499919] INFO: backtest: 读取股票行情完成:3004584
[2021-11-30 13:46:38.201073] INFO: moduleinvoker: cached.v2 运行完成[15.061001s].
[2021-11-30 13:46:41.377726] INFO: algo: TradingAlgorithm V1.8.5
[2021-11-30 13:46:42.572538] INFO: algo: trading transform...
[2021-11-30 13:46:44.916385] INFO: algo: handle_splits get splits [dt:2020-04-24 00:00:00+00:00] [asset:Equity(4415 [002746.SZA]), ratio:0.9734218716621399]
[2021-11-30 13:46:44.918908] INFO: Position: position stock handle split[sid:4415, orig_amount:20400, new_amount:20956.0, orig_cost:15.150000715005062, new_cost:14.7473, ratio:0.9734218716621399, last_sale_price:14.649999618530273]
[2021-11-30 13:46:44.921071] INFO: Position: after split: PositionStock(asset:Equity(4415 [002746.SZA]), amount:20956.0, cost_basis:14.7473, last_sale_price:15.050000190734863)
[2021-11-30 13:46:44.922909] INFO: Position: returning cash: 14.6174
[2021-11-30 13:46:45.010193] INFO: algo: handle_splits get splits [dt:2020-04-29 00:00:00+00:00] [asset:Equity(4862 [002233.SZA]), ratio:0.9605262875556946]
[2021-11-30 13:46:45.012020] INFO: Position: position stock handle split[sid:4862, orig_amount:24600, new_amount:25610.0, orig_cost:12.579999514765104, new_cost:12.0834, ratio:0.9605262875556946, last_sale_price:13.140000343322754]
[2021-11-30 13:46:45.014516] INFO: Position: after split: PositionStock(asset:Equity(4862 [002233.SZA]), amount:25610.0, cost_basis:12.0834, last_sale_price:13.680000305175781)
[2021-11-30 13:46:45.017163] INFO: Position: returning cash: 12.6099
[2021-11-30 13:46:45.201526] INFO: algo: handle_splits get splits [dt:2020-05-08 00:00:00+00:00] [asset:Equity(2154 [300682.SZA]), ratio:0.6643429398536682]
[2021-11-30 13:46:45.205141] INFO: Position: position stock handle split[sid:2154, orig_amount:10500, new_amount:15805.0, orig_cost:29.88000590072296, new_cost:19.8506, ratio:0.6643429398536682, last_sale_price:19.059999465942383]
[2021-11-30 13:46:45.207976] INFO: Position: after split: PositionStock(asset:Equity(2154 [300682.SZA]), amount:15805.0, cost_basis:19.8506, last_sale_price:28.690000534057617)
[2021-11-30 13:46:45.210410] INFO: Position: returning cash: 1.7167
[2021-11-30 13:46:45.443142] INFO: algo: handle_splits get splits [dt:2020-05-21 00:00:00+00:00] [asset:Equity(4298 [002225.SZA]), ratio:0.9833730459213257]
[2021-11-30 13:46:45.454091] INFO: Position: position stock handle split[sid:4298, orig_amount:71900, new_amount:73115.0, orig_cost:4.500021444242768, new_cost:4.4252, ratio:0.9833730459213257, last_sale_price:4.139999866485596]
[2021-11-30 13:46:45.455980] INFO: Position: after split: PositionStock(asset:Equity(4298 [002225.SZA]), amount:73115.0, cost_basis:4.4252, last_sale_price:4.2099995613098145)
[2021-11-30 13:46:45.457686] INFO: Position: returning cash: 2.8617
[2021-11-30 13:46:45.515757] INFO: algo: handle_splits get splits [dt:2020-05-28 00:00:00+00:00] [asset:Equity(4101 [002216.SZA]), ratio:0.997463047504425]
[2021-11-30 13:46:45.517458] INFO: algo: handle_splits get splits [dt:2020-05-28 00:00:00+00:00] [asset:Equity(4178 [300791.SZA]), ratio:0.6634920835494995]
[2021-11-30 13:46:45.519564] INFO: Position: position stock handle split[sid:4101, orig_amount:14400, new_amount:14436.0, orig_cost:22.390006430548475, new_cost:22.3332, ratio:0.997463047504425, last_sale_price:23.59000015258789]
[2021-11-30 13:46:45.521231] INFO: Position: after split: PositionStock(asset:Equity(4101 [002216.SZA]), amount:14436.0, cost_basis:22.3332, last_sale_price:23.649999618530273)
[2021-11-30 13:46:45.522906] INFO: Position: returning cash: 14.7445
[2021-11-30 13:46:45.524368] INFO: Position: position stock handle split[sid:4178, orig_amount:5700, new_amount:8590.0, orig_cost:56.7900217531123, new_cost:37.6797, ratio:0.6634920835494995, last_sale_price:41.80000305175781]
[2021-11-30 13:46:45.554268] INFO: Position: after split: PositionStock(asset:Equity(4178 [300791.SZA]), amount:8590.0, cost_basis:37.6797, last_sale_price:63.0)
[2021-11-30 13:46:45.556365] INFO: Position: returning cash: 37.9891
[2021-11-30 13:46:45.588661] INFO: algo: handle_splits get splits [dt:2020-06-01 00:00:00+00:00] [asset:Equity(4121 [002020.SZA]), ratio:0.9699248671531677]
[2021-11-30 13:46:45.591017] INFO: algo: handle_splits get splits [dt:2020-06-01 00:00:00+00:00] [asset:Equity(5499 [603020.SHA]), ratio:0.9868420958518982]
[2021-11-30 13:46:45.593223] INFO: Position: position stock handle split[sid:4121, orig_amount:30800, new_amount:31755.0, orig_cost:10.500034918114135, new_cost:10.1842, ratio:0.9699248671531677, last_sale_price:10.320000648498535]
[2021-11-30 13:46:45.595301] INFO: Position: after split: PositionStock(asset:Equity(4121 [002020.SZA]), amount:31755.0, cost_basis:10.1842, last_sale_price:10.640000343322754)
[2021-11-30 13:46:45.597233] INFO: Position: returning cash: 0.3814
[2021-11-30 13:46:45.599257] INFO: Position: position stock handle split[sid:5499, orig_amount:32600, new_amount:33034.0, orig_cost:9.900010760151966, new_cost:9.7697, ratio:0.9868420958518982, last_sale_price:11.249999046325684]
[2021-11-30 13:46:45.601280] INFO: Position: after split: PositionStock(asset:Equity(5499 [603020.SHA]), amount:33034.0, cost_basis:9.7697, last_sale_price:11.399998664855957)
[2021-11-30 13:46:45.603289] INFO: Position: returning cash: 7.5035
[2021-11-30 13:46:45.843347] INFO: algo: handle_splits get splits [dt:2020-06-10 00:00:00+00:00] [asset:Equity(3171 [002033.SZA]), ratio:0.9800333976745605]
[2021-11-30 13:46:45.854782] INFO: Position: position stock handle split[sid:3171, orig_amount:55800, new_amount:56936.0, orig_cost:6.0301198027529574, new_cost:5.9097, ratio:0.9800333976745605, last_sale_price:5.890000820159912]
[2021-11-30 13:46:45.857692] INFO: Position: after split: PositionStock(asset:Equity(3171 [002033.SZA]), amount:56936.0, cost_basis:5.9097, last_sale_price:6.010000228881836)
[2021-11-30 13:46:45.859287] INFO: Position: returning cash: 4.919
[2021-11-30 13:46:45.876209] INFO: algo: handle_splits get splits [dt:2020-06-11 00:00:00+00:00] [asset:Equity(2341 [600706.SHA]), ratio:0.9973045587539673]
[2021-11-30 13:46:45.877734] INFO: Position: position stock handle split[sid:2341, orig_amount:42300, new_amount:42414.0, orig_cost:7.830053249913776, new_cost:7.8089, ratio:0.9973045587539673, last_sale_price:7.400000095367432]
[2021-11-30 13:46:45.880295] INFO: Position: after split: PositionStock(asset:Equity(2341 [600706.SHA]), amount:42414.0, cost_basis:7.8089, last_sale_price:7.420000076293945)
[2021-11-30 13:46:45.882178] INFO: Position: returning cash: 2.4074
[2021-11-30 13:46:45.906976] INFO: algo: handle_splits get splits [dt:2020-06-12 00:00:00+00:00] [asset:Equity(5012 [600965.SHA]), ratio:0.9777447581291199]
[2021-11-30 13:46:45.909602] INFO: algo: handle_splits get splits [dt:2020-06-12 00:00:00+00:00] [asset:Equity(4771 [600754.SHA]), ratio:0.9796541333198547]
[2021-11-30 13:46:45.911401] INFO: Position: position stock handle split[sid:5012, orig_amount:48500, new_amount:49603.0, orig_cost:6.9400535013271565, new_cost:6.7856, ratio:0.9777447581291199, last_sale_price:6.590000152587891]
[2021-11-30 13:46:45.913184] INFO: Position: after split: PositionStock(asset:Equity(5012 [600965.SHA]), amount:49603.0, cost_basis:6.7856, last_sale_price:6.7400007247924805)
[2021-11-30 13:46:45.914982] INFO: Position: returning cash: 6.2464
[2021-11-30 13:46:45.916488] INFO: Position: position stock handle split[sid:4771, orig_amount:12400, new_amount:12657.0, orig_cost:27.100012032116794, new_cost:26.5486, ratio:0.9796541333198547, last_sale_price:28.889997482299805]
[2021-11-30 13:46:45.917715] INFO: Position: after split: PositionStock(asset:Equity(4771 [600754.SHA]), amount:12657.0, cost_basis:26.5486, last_sale_price:29.48999786376953)
[2021-11-30 13:46:45.955315] INFO: Position: returning cash: 15.265
[2021-11-30 13:46:46.010959] INFO: algo: handle_splits get splits [dt:2020-06-19 00:00:00+00:00] [asset:Equity(3461 [600285.SHA]), ratio:0.9673202037811279]
[2021-11-30 13:46:46.013319] INFO: algo: handle_splits get splits [dt:2020-06-19 00:00:00+00:00] [asset:Equity(3104 [600809.SHA]), ratio:0.9932528138160706]
[2021-11-30 13:46:46.015359] INFO: algo: handle_splits get splits [dt:2020-06-19 00:00:00+00:00] [asset:Equity(1607 [603719.SHA]), ratio:0.9967098236083984]
[2021-11-30 13:46:46.017513] INFO: Position: position stock handle split[sid:3461, orig_amount:39600, new_amount:40937.0, orig_cost:8.733041737316372, new_cost:8.4476, ratio:0.9673202037811279, last_sale_price:8.880000114440918]
[2021-11-30 13:46:46.054849] INFO: Position: after split: PositionStock(asset:Equity(3461 [600285.SHA]), amount:40937.0, cost_basis:8.4476, last_sale_price:9.180000305175781)
[2021-11-30 13:46:46.056606] INFO: Position: returning cash: 7.4617
[2021-11-30 13:46:46.058242] INFO: Position: position stock handle split[sid:3104, orig_amount:2500, new_amount:2516.0, orig_cost:108.50000534281531, new_cost:107.7679, ratio:0.9932528138160706, last_sale_price:132.489990234375]
[2021-11-30 13:46:46.060067] INFO: Position: after split: PositionStock(asset:Equity(3104 [600809.SHA]), amount:2516.0, cost_basis:107.7679, last_sale_price:133.38999938964844)
[2021-11-30 13:46:46.061616] INFO: Position: returning cash: 130.178
[2021-11-30 13:46:46.063505] INFO: Position: position stock handle split[sid:1607, orig_amount:4200, new_amount:4213.0, orig_cost:79.1600261722901, new_cost:78.8996, ratio:0.9967098236083984, last_sale_price:75.73997497558594]
[2021-11-30 13:46:46.065293] INFO: Position: after split: PositionStock(asset:Equity(1607 [603719.SHA]), amount:4213.0, cost_basis:78.8996, last_sale_price:75.98999786376953)
[2021-11-30 13:46:46.066939] INFO: Position: returning cash: 65.4664
[2021-11-30 13:46:46.106571] INFO: algo: handle_splits get splits [dt:2020-06-24 00:00:00+00:00] [asset:Equity(5288 [603368.SHA]), ratio:0.6998804211616516]
[2021-11-30 13:46:46.108330] INFO: algo: handle_splits get splits [dt:2020-06-24 00:00:00+00:00] [asset:Equity(5193 [603369.SHA]), ratio:0.9893477559089661]
[2021-11-30 13:46:46.109681] INFO: algo: handle_splits get splits [dt:2020-06-24 00:00:00+00:00] [asset:Equity(4474 [002304.SZA]), ratio:0.9727562069892883]
[2021-11-30 13:46:46.110877] INFO: Position: position stock handle split[sid:5288, orig_amount:10400, new_amount:14859.0, orig_cost:32.35003871805096, new_cost:22.6412, ratio:0.6998804211616516, last_sale_price:23.390003204345703]
[2021-11-30 13:46:46.112085] INFO: Position: after split: PositionStock(asset:Equity(5288 [603368.SHA]), amount:14859.0, cost_basis:22.6412, last_sale_price:33.41999816894531)
[2021-11-30 13:46:46.113356] INFO: Position: returning cash: 15.9354
[2021-11-30 13:46:46.115166] INFO: Position: position stock handle split[sid:5193, orig_amount:9000, new_amount:9096.0, orig_cost:32.9500022056483, new_cost:32.599, ratio:0.9893477559089661, last_sale_price:38.079994201660156]
[2021-11-30 13:46:46.153919] INFO: Position: after split: PositionStock(asset:Equity(5193 [603369.SHA]), amount:9096.0, cost_basis:32.599, last_sale_price:38.48999786376953)
[2021-11-30 13:46:46.155741] INFO: Position: returning cash: 34.3643
[2021-11-30 13:46:46.157171] INFO: Position: position stock handle split[sid:4474, orig_amount:3100, new_amount:3186.0, orig_cost:99.87000525800242, new_cost:97.1492, ratio:0.9727562069892883, last_sale_price:106.75999450683594]
[2021-11-30 13:46:46.158357] INFO: Position: after split: PositionStock(asset:Equity(4474 [002304.SZA]), amount:3186.0, cost_basis:97.1492, last_sale_price:109.75)
[2021-11-30 13:46:46.159671] INFO: Position: returning cash: 87.66
[2021-11-30 13:46:46.191347] INFO: algo: handle_splits get splits [dt:2020-06-30 00:00:00+00:00] [asset:Equity(796 [600056.SHA]), ratio:0.9806094765663147]
[2021-11-30 13:46:46.193618] INFO: algo: handle_splits get splits [dt:2020-06-30 00:00:00+00:00] [asset:Equity(1341 [603697.SHA]), ratio:0.9959843158721924]
[2021-11-30 13:46:46.195731] INFO: Position: position stock handle split[sid:796, orig_amount:24900, new_amount:25392.0, orig_cost:14.48350199865822, new_cost:14.2027, ratio:0.9806094765663147, last_sale_price:14.15999984741211]
[2021-11-30 13:46:46.197658] INFO: Position: after split: PositionStock(asset:Equity(796 [600056.SHA]), amount:25392.0, cost_basis:14.2027, last_sale_price:14.439998626708984)
[2021-11-30 13:46:46.199335] INFO: Position: returning cash: 5.2586
[2021-11-30 13:46:46.201025] INFO: Position: position stock handle split[sid:1341, orig_amount:23600, new_amount:23695.0, orig_cost:13.300007635553255, new_cost:13.2466, ratio:0.9959843158721924, last_sale_price:19.840007781982422]
[2021-11-30 13:46:46.202934] INFO: Position: after split: PositionStock(asset:Equity(1341 [603697.SHA]), amount:23695.0, cost_basis:13.2466, last_sale_price:19.920000076293945)
[2021-11-30 13:46:46.256385] INFO: Position: returning cash: 3.0206
[2021-11-30 13:46:46.419871] INFO: algo: handle_splits get splits [dt:2020-07-08 00:00:00+00:00] [asset:Equity(4578 [000906.SZA]), ratio:0.9606918096542358]
[2021-11-30 13:46:46.421393] INFO: Position: position stock handle split[sid:4578, orig_amount:58600, new_amount:60997.0, orig_cost:6.340017050343672, new_cost:6.0908, ratio:0.9606918096542358, last_sale_price:6.110000133514404]
[2021-11-30 13:46:46.422485] INFO: Position: after split: PositionStock(asset:Equity(4578 [000906.SZA]), amount:60997.0, cost_basis:6.0908, last_sale_price:6.360000133514404)
[2021-11-30 13:46:46.423518] INFO: Position: returning cash: 4.3355
[2021-11-30 13:46:46.432691] INFO: algo: handle_splits get splits [dt:2020-07-09 00:00:00+00:00] [asset:Equity(3259 [600073.SHA]), ratio:0.9881773591041565]
[2021-11-30 13:46:46.433915] INFO: Position: position stock handle split[sid:3259, orig_amount:37700, new_amount:38151.0, orig_cost:9.327958053535756, new_cost:9.2177, ratio:0.9881773591041565, last_sale_price:10.030000686645508]
[2021-11-30 13:46:46.454032] INFO: Position: after split: PositionStock(asset:Equity(3259 [600073.SHA]), amount:38151.0, cost_basis:9.2177, last_sale_price:10.15000057220459)
[2021-11-30 13:46:46.455730] INFO: Position: returning cash: 0.4626
[2021-11-30 13:46:46.475829] INFO: algo: handle_splits get splits [dt:2020-07-10 00:00:00+00:00] [asset:Equity(1057 [300662.SZA]), ratio:0.9964520931243896]
[2021-11-30 13:46:46.477917] INFO: Position: position stock handle split[sid:1057, orig_amount:8000, new_amount:8028.0, orig_cost:44.26914912262558, new_cost:44.1121, ratio:0.9964520931243896, last_sale_price:47.74998474121094]
[2021-11-30 13:46:46.479763] INFO: Position: after split: PositionStock(asset:Equity(1057 [300662.SZA]), amount:8028.0, cost_basis:44.1121, last_sale_price:47.92000198364258)
[2021-11-30 13:46:46.481147] INFO: Position: returning cash: 23.126
[2021-11-30 13:46:46.495326] INFO: algo: handle_splits get splits [dt:2020-07-13 00:00:00+00:00] [asset:Equity(1300 [600361.SHA]), ratio:0.9874327182769775]
[2021-11-30 13:46:46.497833] INFO: Position: position stock handle split[sid:1300, orig_amount:73000, new_amount:73929.0, orig_cost:5.100004117350073, new_cost:5.0359, ratio:0.9874327182769775, last_sale_price:5.5]
[2021-11-30 13:46:46.500112] INFO: Position: after split: PositionStock(asset:Equity(1300 [600361.SHA]), amount:73929.0, cost_basis:5.0359, last_sale_price:5.569999694824219)
[2021-11-30 13:46:46.502040] INFO: Position: returning cash: 0.4822
[2021-11-30 13:46:46.591874] INFO: algo: handle_splits get splits [dt:2020-07-20 00:00:00+00:00] [asset:Equity(4139 [600729.SHA]), ratio:0.9767590761184692]
[2021-11-30 13:46:46.593729] INFO: Position: position stock handle split[sid:4139, orig_amount:11100, new_amount:11364.0, orig_cost:34.500004414413, new_cost:33.6982, ratio:0.9767590761184692, last_sale_price:30.680002212524414]
[2021-11-30 13:46:46.595369] INFO: Position: after split: PositionStock(asset:Equity(4139 [600729.SHA]), amount:11364.0, cost_basis:33.6982, last_sale_price:31.40999984741211)
[2021-11-30 13:46:46.596970] INFO: Position: returning cash: 3.4507
[2021-11-30 13:46:47.911627] INFO: algo: handle_splits get splits [dt:2020-11-12 00:00:00+00:00] [asset:Equity(302 [000651.SZA]), ratio:0.9851087331771851]
[2021-11-30 13:46:47.913162] INFO: Position: position stock handle split[sid:302, orig_amount:7100, new_amount:7207.0, orig_cost:60.45000079967764, new_cost:59.5498, ratio:0.9851087331771851, last_sale_price:64.83000183105469]
[2021-11-30 13:46:47.914298] INFO: Position: after split: PositionStock(asset:Equity(302 [000651.SZA]), amount:7207.0, cost_basis:59.5498, last_sale_price:65.80999755859375)
[2021-11-30 13:46:47.915392] INFO: Position: returning cash: 21.1487
[2021-11-30 13:46:49.102384] INFO: algo: handle_splits get splits [dt:2021-03-09 00:00:00+00:00] [asset:Equity(356 [600888.SHA]), ratio:0.9828393459320068]
[2021-11-30 13:46:49.104920] INFO: Position: position stock handle split[sid:356, orig_amount:67000, new_amount:68169.0, orig_cost:6.600001353619159, new_cost:6.4867, ratio:0.9828393459320068, last_sale_price:6.300000190734863]
[2021-11-30 13:46:49.106909] INFO: Position: after split: PositionStock(asset:Equity(356 [600888.SHA]), amount:68169.0, cost_basis:6.4867, last_sale_price:6.409999847412109)
[2021-11-30 13:46:49.108754] INFO: Position: returning cash: 5.2859
[2021-11-30 13:46:49.725988] INFO: algo: handle_splits get splits [dt:2021-05-10 00:00:00+00:00] [asset:Equity(235 [000932.SZA]), ratio:0.9750295877456665]
[2021-11-30 13:46:49.727565] INFO: Position: position stock handle split[sid:235, orig_amount:55300, new_amount:56716.0, orig_cost:6.909999974616305, new_cost:6.7375, ratio:0.9750295877456665, last_sale_price:8.19999885559082]
[2021-11-30 13:46:49.728752] INFO: Position: after split: PositionStock(asset:Equity(235 [000932.SZA]), amount:56716.0, cost_basis:6.7375, last_sale_price:8.40999984741211)
[2021-11-30 13:46:49.729795] INFO: Position: returning cash: 1.8662
[2021-11-30 13:46:49.808816] INFO: algo: handle_splits get splits [dt:2021-05-21 00:00:00+00:00] [asset:Equity(2822 [600985.SHA]), ratio:0.944444477558136]
[2021-11-30 13:46:49.810294] INFO: algo: handle_splits get splits [dt:2021-05-21 00:00:00+00:00] [asset:Equity(5012 [600965.SHA]), ratio:0.9840510487556458]
[2021-11-30 13:46:49.811455] INFO: Position: position stock handle split[sid:2822, orig_amount:36900, new_amount:39070.0, orig_cost:12.250001900002312, new_cost:11.5694, ratio:0.944444477558136, last_sale_price:11.050000190734863]
[2021-11-30 13:46:49.812541] INFO: Position: after split: PositionStock(asset:Equity(2822 [600985.SHA]), amount:39070.0, cost_basis:11.5694, last_sale_price:11.699999809265137)
[2021-11-30 13:46:49.813532] INFO: Position: returning cash: 6.4849
[2021-11-30 13:46:49.814554] INFO: Position: position stock handle split[sid:5012, orig_amount:38000, new_amount:38615.0, orig_cost:5.2003251151350325, new_cost:5.1174, ratio:0.9840510487556458, last_sale_price:6.170000076293945]
[2021-11-30 13:46:49.815579] INFO: Position: after split: PositionStock(asset:Equity(5012 [600965.SHA]), amount:38615.0, cost_basis:5.1174, last_sale_price:6.269999980926514)
[2021-11-30 13:46:49.816559] INFO: Position: returning cash: 5.4471
[2021-11-30 13:46:49.881540] INFO: algo: handle_splits get splits [dt:2021-05-28 00:00:00+00:00] [asset:Equity(1587 [600740.SHA]), ratio:0.7466666102409363]
[2021-11-30 13:46:49.883432] INFO: Position: position stock handle split[sid:1587, orig_amount:68100, new_amount:91205.0, orig_cost:6.59000160269071, new_cost:4.9205, ratio:0.7466666102409363, last_sale_price:5.039999485015869]
[2021-11-30 13:46:49.885012] INFO: Position: after split: PositionStock(asset:Equity(1587 [600740.SHA]), amount:91205.0, cost_basis:4.9205, last_sale_price:6.75)
[2021-11-30 13:46:49.886486] INFO: Position: returning cash: 1.8347
[2021-11-30 13:46:49.898692] INFO: algo: handle_splits get splits [dt:2021-05-31 00:00:00+00:00] [asset:Equity(1079 [000610.SZA]), ratio:0.9988974928855896]
[2021-11-30 13:46:49.900943] INFO: Position: position stock handle split[sid:1079, orig_amount:47200, new_amount:47252.0, orig_cost:9.650015645445762, new_cost:9.6394, ratio:0.9988974928855896, last_sale_price:9.0600004196167]
[2021-11-30 13:46:49.902963] INFO: Position: after split: PositionStock(asset:Equity(1079 [000610.SZA]), amount:47252.0, cost_basis:9.6394, last_sale_price:9.069999694824219)
[2021-11-30 13:46:49.904785] INFO: Position: returning cash: 0.8677
[2021-11-30 13:46:50.004245] INFO: algo: handle_splits get splits [dt:2021-06-02 00:00:00+00:00] [asset:Equity(3744 [000825.SZA]), ratio:0.97826087474823]
[2021-11-30 13:46:50.005912] INFO: Position: position stock handle split[sid:3744, orig_amount:71500, new_amount:73088.0, orig_cost:6.339999858856166, new_cost:6.2022, ratio:0.97826087474823, last_sale_price:6.75]
[2021-11-30 13:46:50.007087] INFO: Position: after split: PositionStock(asset:Equity(3744 [000825.SZA]), amount:73088.0, cost_basis:6.2022, last_sale_price:6.900000095367432)
[2021-11-30 13:46:50.008139] INFO: Position: returning cash: 5.9974
[2021-11-30 13:46:50.208116] INFO: algo: handle_splits get splits [dt:2021-06-10 00:00:00+00:00] [asset:Equity(5288 [603368.SHA]), ratio:0.9709582924842834]
[2021-11-30 13:46:50.210486] INFO: Position: position stock handle split[sid:5288, orig_amount:22400, new_amount:23069.0, orig_cost:20.810180247724272, new_cost:20.2058, ratio:0.9709582924842834, last_sale_price:20.05999755859375]
[2021-11-30 13:46:50.212447] INFO: Position: after split: PositionStock(asset:Equity(5288 [603368.SHA]), amount:23069.0, cost_basis:20.2058, last_sale_price:20.65999984741211)
[2021-11-30 13:46:50.214268] INFO: Position: returning cash: 19.8987
[2021-11-30 13:46:50.233422] INFO: algo: handle_splits get splits [dt:2021-06-11 00:00:00+00:00] [asset:Equity(5343 [600997.SHA]), ratio:0.96517413854599]
[2021-11-30 13:46:50.255332] INFO: Position: position stock handle split[sid:5343, orig_amount:60700, new_amount:62890.0, orig_cost:7.25000156704657, new_cost:6.9975, ratio:0.96517413854599, last_sale_price:7.7599992752075195]
[2021-11-30 13:46:50.257726] INFO: Position: after split: PositionStock(asset:Equity(5343 [600997.SHA]), amount:62890.0, cost_basis:6.9975, last_sale_price:8.039999008178711)
[2021-11-30 13:46:50.260000] INFO: Position: returning cash: 1.5954
[2021-11-30 13:46:50.364766] INFO: algo: handle_splits get splits [dt:2021-06-21 00:00:00+00:00] [asset:Equity(2188 [000933.SZA]), ratio:0.9905749559402466]
[2021-11-30 13:46:50.369043] INFO: algo: handle_splits get splits [dt:2021-06-21 00:00:00+00:00] [asset:Equity(4064 [600332.SHA]), ratio:0.9816945791244507]
[2021-11-30 13:46:50.371386] INFO: Position: position stock handle split[sid:2188, orig_amount:39900, new_amount:40279.0, orig_cost:11.54999978791025, new_cost:11.4411, ratio:0.9905749559402466, last_sale_price:10.510000228881836]
[2021-11-30 13:46:50.373511] INFO: Position: after split: PositionStock(asset:Equity(2188 [000933.SZA]), amount:40279.0, cost_basis:11.4411, last_sale_price:10.609999656677246)
[2021-11-30 13:46:50.375162] INFO: Position: returning cash: 6.6986
[2021-11-30 13:46:50.376981] INFO: Position: position stock handle split[sid:4064, orig_amount:14600, new_amount:14872.0, orig_cost:31.830008230216702, new_cost:31.2473, ratio:0.9816945791244507, last_sale_price:28.959989547729492]
[2021-11-30 13:46:50.379042] INFO: Position: after split: PositionStock(asset:Equity(4064 [600332.SHA]), amount:14872.0, cost_basis:31.2473, last_sale_price:29.5)
[2021-11-30 13:46:50.380664] INFO: Position: returning cash: 7.0275
[2021-11-30 13:46:50.453364] INFO: algo: handle_splits get splits [dt:2021-06-24 00:00:00+00:00] [asset:Equity(5201 [600535.SHA]), ratio:0.9760869145393372]
[2021-11-30 13:46:50.455270] INFO: Position: position stock handle split[sid:5201, orig_amount:32400, new_amount:33193.0, orig_cost:14.380011451583423, new_cost:14.0361, ratio:0.9760869145393372, last_sale_price:13.469999313354492]
[2021-11-30 13:46:50.456856] INFO: Position: after split: PositionStock(asset:Equity(5201 [600535.SHA]), amount:33193.0, cost_basis:14.0361, last_sale_price:13.800000190734863)
[2021-11-30 13:46:50.458307] INFO: Position: returning cash: 10.3092
[2021-11-30 13:46:50.474352] INFO: algo: handle_splits get splits [dt:2021-06-25 00:00:00+00:00] [asset:Equity(796 [600056.SHA]), ratio:0.9709803462028503]
[2021-11-30 13:46:50.476450] INFO: algo: handle_splits get splits [dt:2021-06-25 00:00:00+00:00] [asset:Equity(5417 [600508.SHA]), ratio:0.9723047018051147]
[2021-11-30 13:46:50.477859] INFO: algo: handle_splits get splits [dt:2021-06-25 00:00:00+00:00] [asset:Equity(762 [600420.SHA]), ratio:0.9899194240570068]
[2021-11-30 13:46:50.479160] INFO: Position: position stock handle split[sid:796, orig_amount:36000, new_amount:37075.0, orig_cost:12.940035097639386, new_cost:12.5645, ratio:0.9709803462028503, last_sale_price:12.379999160766602]
[2021-11-30 13:46:50.480447] INFO: Position: after split: PositionStock(asset:Equity(796 [600056.SHA]), amount:37075.0, cost_basis:12.5645, last_sale_price:12.75)
[2021-11-30 13:46:50.481852] INFO: Position: returning cash: 11.5217
[2021-11-30 13:46:50.483856] INFO: Position: position stock handle split[sid:5417, orig_amount:48300, new_amount:49675.0, orig_cost:9.50130462099846, new_cost:9.2382, ratio:0.9723047018051147, last_sale_price:9.829999923706055]
[2021-11-30 13:46:50.486019] INFO: Position: after split: PositionStock(asset:Equity(5417 [600508.SHA]), amount:49675.0, cost_basis:9.2382, last_sale_price:10.109999656677246)
[2021-11-30 13:46:50.487730] INFO: Position: returning cash: 7.7234
[2021-11-30 13:46:50.489554] INFO: Position: position stock handle split[sid:762, orig_amount:43400, new_amount:43841.0, orig_cost:10.680000623164162, new_cost:10.5723, ratio:0.9899194240570068, last_sale_price:9.819999694824219]
[2021-11-30 13:46:50.491574] INFO: Position: after split: PositionStock(asset:Equity(762 [600420.SHA]), amount:43841.0, cost_basis:10.5723, last_sale_price:9.919999122619629)
[2021-11-30 13:46:50.493141] INFO: Position: returning cash: 9.3499
[2021-11-30 13:46:50.569725] INFO: algo: handle_splits get splits [dt:2021-06-29 00:00:00+00:00] [asset:Equity(4150 [601168.SHA]), ratio:0.9901957511901855]
[2021-11-30 13:46:50.572129] INFO: algo: handle_splits get splits [dt:2021-06-29 00:00:00+00:00] [asset:Equity(979 [601699.SHA]), ratio:0.9847512245178223]
[2021-11-30 13:46:50.574956] INFO: Position: position stock handle split[sid:4150, orig_amount:33400, new_amount:33730.0, orig_cost:13.960002292082326, new_cost:13.8231, ratio:0.9901957511901855, last_sale_price:12.119997024536133]
[2021-11-30 13:46:50.579358] INFO: Position: after split: PositionStock(asset:Equity(4150 [601168.SHA]), amount:33730.0, cost_basis:13.8231, last_sale_price:12.24000072479248)
[2021-11-30 13:46:50.582237] INFO: Position: returning cash: 8.5351
[2021-11-30 13:46:50.584402] INFO: Position: position stock handle split[sid:979, orig_amount:40900, new_amount:41533.0, orig_cost:9.260000453595094, new_cost:9.1188, ratio:0.9847512245178223, last_sale_price:12.269999504089355]
[2021-11-30 13:46:50.586152] INFO: Position: after split: PositionStock(asset:Equity(979 [601699.SHA]), amount:41533.0, cost_basis:9.1188, last_sale_price:12.459999084472656)
[2021-11-30 13:46:50.587719] INFO: Position: returning cash: 4.0793
[2021-11-30 13:46:50.809859] INFO: algo: handle_splits get splits [dt:2021-07-02 00:00:00+00:00] [asset:Equity(4718 [002531.SZA]), ratio:0.981992781162262]
[2021-11-30 13:46:50.811395] INFO: Position: position stock handle split[sid:4718, orig_amount:52600, new_amount:53564.0, orig_cost:8.650004084726618, new_cost:8.4942, ratio:0.981992781162262, last_sale_price:8.179999351501465]
[2021-11-30 13:46:50.812557] INFO: Position: after split: PositionStock(asset:Equity(4718 [002531.SZA]), amount:53564.0, cost_basis:8.4942, last_sale_price:8.329999923706055)
[2021-11-30 13:46:50.813575] INFO: Position: returning cash: 4.4871
[2021-11-30 13:46:50.837436] INFO: algo: handle_splits get splits [dt:2021-07-07 00:00:00+00:00] [asset:Equity(2031 [600070.SHA]), ratio:0.994356632232666]
[2021-11-30 13:46:50.855845] INFO: Position: position stock handle split[sid:2031, orig_amount:51600, new_amount:51892.0, orig_cost:8.750006927085792, new_cost:8.7006, ratio:0.994356632232666, last_sale_price:8.809999465942383]
[2021-11-30 13:46:50.857838] INFO: Position: after split: PositionStock(asset:Equity(2031 [600070.SHA]), amount:51892.0, cost_basis:8.7006, last_sale_price:8.859999656677246)
[2021-11-30 13:46:50.859612] INFO: Position: returning cash: 7.4924
[2021-11-30 13:46:50.893945] INFO: algo: handle_splits get splits [dt:2021-07-09 00:00:00+00:00] [asset:Equity(2480 [601222.SHA]), ratio:0.9878934025764465]
[2021-11-30 13:46:50.896273] INFO: algo: handle_splits get splits [dt:2021-07-09 00:00:00+00:00] [asset:Equity(4420 [002441.SZA]), ratio:0.9691357612609863]
[2021-11-30 13:46:50.898239] INFO: Position: position stock handle split[sid:2480, orig_amount:54900, new_amount:55572.0, orig_cost:8.400000156313045, new_cost:8.2983, ratio:0.9878934025764465, last_sale_price:8.159998893737793]
[2021-11-30 13:46:50.900021] INFO: Position: after split: PositionStock(asset:Equity(2480 [601222.SHA]), amount:55572.0, cost_basis:8.2983, last_sale_price:8.25999927520752)
[2021-11-30 13:46:50.901675] INFO: Position: returning cash: 6.5075
[2021-11-30 13:46:50.903446] INFO: Position: position stock handle split[sid:4420, orig_amount:58100, new_amount:59950.0, orig_cost:7.870130192405839, new_cost:7.6272, ratio:0.9691357612609863, last_sale_price:7.849998950958252]
[2021-11-30 13:46:50.905185] INFO: Position: after split: PositionStock(asset:Equity(4420 [002441.SZA]), amount:59950.0, cost_basis:7.6272, last_sale_price:8.09999942779541)
[2021-11-30 13:46:50.906837] INFO: Position: returning cash: 2.52
[2021-11-30 13:46:51.002138] INFO: algo: handle_splits get splits [dt:2021-07-20 00:00:00+00:00] [asset:Equity(120 [600382.SHA]), ratio:0.9773243069648743]
[2021-11-30 13:46:51.003623] INFO: Position: position stock handle split[sid:120, orig_amount:99000, new_amount:101296.0, orig_cost:4.570016230055831, new_cost:4.4664, ratio:0.9773243069648743, last_sale_price:4.309999942779541]
[2021-11-30 13:46:51.004982] INFO: Position: after split: PositionStock(asset:Equity(120 [600382.SHA]), amount:101296.0, cost_basis:4.4664, last_sale_price:4.409999847412109)
[2021-11-30 13:46:51.006042] INFO: Position: returning cash: 4.2204
[2021-11-30 13:46:51.015384] INFO: algo: handle_splits get splits [dt:2021-07-21 00:00:00+00:00] [asset:Equity(538 [000050.SZA]), ratio:0.995250940322876]
[2021-11-30 13:46:51.016736] INFO: Position: position stock handle split[sid:538, orig_amount:32100, new_amount:32253.0, orig_cost:14.180005208354965, new_cost:14.1127, ratio:0.995250940322876, last_sale_price:14.669998168945312]
[2021-11-30 13:46:51.017805] INFO: Position: after split: PositionStock(asset:Equity(538 [000050.SZA]), amount:32253.0, cost_basis:14.1127, last_sale_price:14.739999771118164)
[2021-11-30 13:46:51.018769] INFO: Position: returning cash: 2.5268
[2021-11-30 13:46:51.119985] INFO: algo: handle_splits get splits [dt:2021-07-29 00:00:00+00:00] [asset:Equity(4007 [600808.SHA]), ratio:0.9717391729354858]
[2021-11-30 13:46:51.807377] INFO: algo: handle_splits get splits [dt:2021-10-29 00:00:00+00:00] [asset:Equity(5352 [600810.SHA]), ratio:0.9646090269088745]
[2021-11-30 13:46:51.809114] INFO: Position: position stock handle split[sid:5352, orig_amount:36800, new_amount:38150.0, orig_cost:14.270000861727597, new_cost:13.765, ratio:0.9646090269088745, last_sale_price:11.719999313354492]
[2021-11-30 13:46:51.810557] INFO: Position: after split: PositionStock(asset:Equity(5352 [600810.SHA]), amount:38150.0, cost_basis:13.765, last_sale_price:12.149999618530273)
[2021-11-30 13:46:51.811814] INFO: Position: returning cash: 2.0123
[2021-11-30 13:46:52.127639] INFO: Performance: Simulated 461 trading days out of 461.
[2021-11-30 13:46:52.129481] INFO: Performance: first open: 2020-01-02 09:30:00+00:00
[2021-11-30 13:46:52.130875] INFO: Performance: last close: 2021-11-26 15:00:00+00:00
[2021-11-30 13:47:00.519057] INFO: moduleinvoker: backtest.v8 运行完成[37.497836s].
[2021-11-30 13:47:00.521443] INFO: moduleinvoker: trade.v4 运行完成[37.566949s].