{"description":"实验创建于2017/8/26","graph":{"edges":[{"to_node_id":"-4862:features","from_node_id":"-4857:data"},{"to_node_id":"-6998:features","from_node_id":"-4857:data"},{"to_node_id":"-4862:instruments","from_node_id":"-4849:data"},{"to_node_id":"-2738:instruments","from_node_id":"-4849:data"},{"to_node_id":"-281:instruments","from_node_id":"-4849:data"},{"to_node_id":"-6998:input_data","from_node_id":"-4862:data"},{"to_node_id":"-497:input_data","from_node_id":"-2687:data"},{"to_node_id":"-2687:input_data","from_node_id":"-6998:data"},{"to_node_id":"-526:input_data","from_node_id":"-497:data"},{"to_node_id":"-119:input_data","from_node_id":"-526:data"},{"to_node_id":"-2738:options_data","from_node_id":"-61:sorted_data"},{"to_node_id":"-61:input_ds","from_node_id":"-288:data"},{"to_node_id":"-288:data2","from_node_id":"-281:data"},{"to_node_id":"-288:data1","from_node_id":"-119:data"}],"nodes":[{"node_id":"-4857","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"# #号开始的表示注释,注释需单独一行\nmarket_cap_float_0\nyl60=mean(close_0,20)/mean(close_0,60)\n#买\nmy1=where(close_0>mean(close_0,20))\ntotal_my=my1\nbuy_condition=where(total_my>0,1,0)\n#卖\nmc1=where(close_0>mean(close_0,60),1,0)\nmc=mc1\nsell_condition=where(mc>0,1,0)\n\n\n\n\n\n","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-4857"}],"output_ports":[{"name":"data","node_id":"-4857"}],"cacheable":false,"seq_num":2,"comment":"","comment_collapsed":true},{"node_id":"-4849","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2018-01-01","type":"Literal","bound_global_parameter":"交易日期"},{"name":"end_date","value":"2022-06-23","type":"Literal","bound_global_parameter":"交易日期"},{"name":"market","value":"CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":0,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"-4849"}],"output_ports":[{"name":"data","node_id":"-4849"}],"cacheable":false,"seq_num":11,"comment":"","comment_collapsed":true},{"node_id":"-4862","module_id":"BigQuantSpace.general_feature_extractor.general_feature_extractor-v7","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"120","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-4862"},{"name":"features","node_id":"-4862"}],"output_ports":[{"name":"data","node_id":"-4862"}],"cacheable":false,"seq_num":12,"comment":"","comment_collapsed":true},{"node_id":"-2687","module_id":"BigQuantSpace.chinaa_stock_filter.chinaa_stock_filter-v1","parameters":[{"name":"index_constituent_cond","value":"%7B%22enumItems%22%3A%5B%7B%22value%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22displayValue%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22%E4%B8%8A%E8%AF%8150%22%2C%22displayValue%22%3A%22%E4%B8%8A%E8%AF%8150%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%B2%AA%E6%B7%B1300%22%2C%22displayValue%22%3A%22%E6%B2%AA%E6%B7%B1300%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%B8%AD%E8%AF%81500%22%2C%22displayValue%22%3A%22%E4%B8%AD%E8%AF%81500%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%B8%AD%E8%AF%81800%22%2C%22displayValue%22%3A%22%E4%B8%AD%E8%AF%81800%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%B8%8A%E8%AF%81180%22%2C%22displayValue%22%3A%22%E4%B8%8A%E8%AF%81180%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%B8%AD%E8%AF%81100%22%2C%22displayValue%22%3A%22%E4%B8%AD%E8%AF%81100%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%B7%B1%E8%AF%81100%22%2C%22displayValue%22%3A%22%E6%B7%B1%E8%AF%81100%22%2C%22selected%22%3Afalse%7D%5D%7D","type":"Literal","bound_global_parameter":null},{"name":"board_cond","value":"%7B%22enumItems%22%3A%5B%7B%22value%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22displayValue%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%B8%8A%E8%AF%81%E4%B8%BB%E6%9D%BF%22%2C%22displayValue%22%3A%22%E4%B8%8A%E8%AF%81%E4%B8%BB%E6%9D%BF%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22%E6%B7%B1%E8%AF%81%E4%B8%BB%E6%9D%BF%22%2C%22displayValue%22%3A%22%E6%B7%B1%E8%AF%81%E4%B8%BB%E6%9D%BF%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22%E5%88%9B%E4%B8%9A%E6%9D%BF%22%2C%22displayValue%22%3A%22%E5%88%9B%E4%B8%9A%E6%9D%BF%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22%E7%A7%91%E5%88%9B%E6%9D%BF%22%2C%22displayValue%22%3A%22%E7%A7%91%E5%88%9B%E6%9D%BF%22%2C%22selected%22%3Afalse%7D%5D%7D","type":"Literal","bound_global_parameter":null},{"name":"industry_cond","value":"%7B%22enumItems%22%3A%5B%7B%22value%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22displayValue%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22%E4%BA%A4%E9%80%9A%E8%BF%90%E8%BE%93%22%2C%22displayValue%22%3A%22%E4%BA%A4%E9%80%9A%E8%BF%90%E8%BE%93%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%BC%91%E9%97%B2%E6%9C%8D%E5%8A%A1%22%2C%22displayValue%22%3A%22%E4%BC%91%E9%97%B2%E6%9C%8D%E5%8A%A1%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E4%BC%A0%E5%AA%92%2F%E4%BF%A1%E6%81%AF%E6%9C%8D%E5%8A%A1%22%2C%22displayValue%22%3A%22%E4%BC%A0%E5%AA%92%2F%E4%BF%A1%E6%81%AF%E6%9C%8D%E5%8A%A1%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%85%AC%E7%94%A8%E4%BA%8B%E4%B8%9A%22%2C%22displayValue%22%3A%22%E5%85%AC%E7%94%A8%E4%BA%8B%E4%B8%9A%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%86%9C%E6%9E%97%E7%89%A7%E6%B8%94%22%2C%22displayValue%22%3A%22%E5%86%9C%E6%9E%97%E7%89%A7%E6%B8%94%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%8C%96%E5%B7%A5%22%2C%22displayValue%22%3A%22%E5%8C%96%E5%B7%A5%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%8C%BB%E8%8D%AF%E7%94%9F%E7%89%A9%22%2C%22displayValue%22%3A%22%E5%8C%BB%E8%8D%AF%E7%94%9F%E7%89%A9%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%95%86%E4%B8%9A%E8%B4%B8%E6%98%93%22%2C%22displayValue%22%3A%22%E5%95%86%E4%B8%9A%E8%B4%B8%E6%98%93%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%9B%BD%E9%98%B2%E5%86%9B%E5%B7%A5%22%2C%22displayValue%22%3A%22%E5%9B%BD%E9%98%B2%E5%86%9B%E5%B7%A5%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%AE%B6%E7%94%A8%E7%94%B5%E5%99%A8%22%2C%22displayValue%22%3A%22%E5%AE%B6%E7%94%A8%E7%94%B5%E5%99%A8%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%BB%BA%E7%AD%91%E6%9D%90%E6%96%99%2F%E5%BB%BA%E7%AD%91%E5%BB%BA%E6%9D%90%22%2C%22displayValue%22%3A%22%E5%BB%BA%E7%AD%91%E6%9D%90%E6%96%99%2F%E5%BB%BA%E7%AD%91%E5%BB%BA%E6%9D%90%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E5%BB%BA%E7%AD%91%E8%A3%85%E9%A5%B0%22%2C%22displayValue%22%3A%22%E5%BB%BA%E7%AD%91%E8%A3%85%E9%A5%B0%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%88%BF%E5%9C%B0%E4%BA%A7%22%2C%22displayValue%22%3A%22%E6%88%BF%E5%9C%B0%E4%BA%A7%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%9C%89%E8%89%B2%E9%87%91%E5%B1%9E%22%2C%22displayValue%22%3A%22%E6%9C%89%E8%89%B2%E9%87%91%E5%B1%9E%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%9C%BA%E6%A2%B0%E8%AE%BE%E5%A4%87%22%2C%22displayValue%22%3A%22%E6%9C%BA%E6%A2%B0%E8%AE%BE%E5%A4%87%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%B1%BD%E8%BD%A6%2F%E4%BA%A4%E8%BF%90%E8%AE%BE%E5%A4%87%22%2C%22displayValue%22%3A%22%E6%B1%BD%E8%BD%A6%2F%E4%BA%A4%E8%BF%90%E8%AE%BE%E5%A4%87%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E7%94%B5%E5%AD%90%22%2C%22displayValue%22%3A%22%E7%94%B5%E5%AD%90%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E7%94%B5%E6%B0%94%E8%AE%BE%E5%A4%87%22%2C%22displayValue%22%3A%22%E7%94%B5%E6%B0%94%E8%AE%BE%E5%A4%87%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E7%BA%BA%E7%BB%87%E6%9C%8D%E8%A3%85%22%2C%22displayValue%22%3A%22%E7%BA%BA%E7%BB%87%E6%9C%8D%E8%A3%85%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E7%BB%BC%E5%90%88%22%2C%22displayValue%22%3A%22%E7%BB%BC%E5%90%88%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E8%AE%A1%E7%AE%97%E6%9C%BA%22%2C%22displayValue%22%3A%22%E8%AE%A1%E7%AE%97%E6%9C%BA%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E8%BD%BB%E5%B7%A5%E5%88%B6%E9%80%A0%22%2C%22displayValue%22%3A%22%E8%BD%BB%E5%B7%A5%E5%88%B6%E9%80%A0%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%80%9A%E4%BF%A1%22%2C%22displayValue%22%3A%22%E9%80%9A%E4%BF%A1%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%87%87%E6%8E%98%22%2C%22displayValue%22%3A%22%E9%87%87%E6%8E%98%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%92%A2%E9%93%81%22%2C%22displayValue%22%3A%22%E9%92%A2%E9%93%81%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%93%B6%E8%A1%8C%22%2C%22displayValue%22%3A%22%E9%93%B6%E8%A1%8C%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%9D%9E%E9%93%B6%E9%87%91%E8%9E%8D%22%2C%22displayValue%22%3A%22%E9%9D%9E%E9%93%B6%E9%87%91%E8%9E%8D%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%A3%9F%E5%93%81%E9%A5%AE%E6%96%99%22%2C%22displayValue%22%3A%22%E9%A3%9F%E5%93%81%E9%A5%AE%E6%96%99%22%2C%22selected%22%3Afalse%7D%5D%7D","type":"Literal","bound_global_parameter":null},{"name":"st_cond","value":"%7B%22enumItems%22%3A%5B%7B%22value%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22displayValue%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%AD%A3%E5%B8%B8%22%2C%22displayValue%22%3A%22%E6%AD%A3%E5%B8%B8%22%2C%22selected%22%3Atrue%7D%2C%7B%22value%22%3A%22ST%22%2C%22displayValue%22%3A%22ST%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22*ST%22%2C%22displayValue%22%3A%22*ST%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E6%9A%82%E5%81%9C%E4%B8%8A%E5%B8%82%22%2C%22displayValue%22%3A%22%E6%9A%82%E5%81%9C%E4%B8%8A%E5%B8%82%22%2C%22selected%22%3Afalse%7D%5D%7D","type":"Literal","bound_global_parameter":null},{"name":"delist_cond","value":"%7B%22enumItems%22%3A%5B%7B%22value%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22displayValue%22%3A%22%E5%85%A8%E9%83%A8%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%80%80%E5%B8%82%22%2C%22displayValue%22%3A%22%E9%80%80%E5%B8%82%22%2C%22selected%22%3Afalse%7D%2C%7B%22value%22%3A%22%E9%9D%9E%E9%80%80%E5%B8%82%22%2C%22displayValue%22%3A%22%E9%9D%9E%E9%80%80%E5%B8%82%22%2C%22selected%22%3Atrue%7D%5D%7D","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-2687"}],"output_ports":[{"name":"data","node_id":"-2687"},{"name":"left_data","node_id":"-2687"}],"cacheable":false,"seq_num":13,"comment":"","comment_collapsed":true},{"node_id":"-6998","module_id":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","parameters":[{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"drop_na","value":"False","type":"Literal","bound_global_parameter":null},{"name":"remove_extra_columns","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"{}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-6998"},{"name":"features","node_id":"-6998"}],"output_ports":[{"name":"data","node_id":"-6998"}],"cacheable":false,"seq_num":14,"comment":"","comment_collapsed":true},{"node_id":"-497","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"market_cap_float_0<1000000000","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-497"}],"output_ports":[{"name":"data","node_id":"-497"},{"name":"left_data","node_id":"-497"}],"cacheable":false,"seq_num":15,"comment":"","comment_collapsed":true},{"node_id":"-526","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"market_cap_float_0>200000000","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-526"}],"output_ports":[{"name":"data","node_id":"-526"},{"name":"left_data","node_id":"-526"}],"cacheable":false,"seq_num":16,"comment":"","comment_collapsed":true},{"node_id":"-61","module_id":"BigQuantSpace.sort.sort-v5","parameters":[{"name":"sort_by","value":"yl20","type":"Literal","bound_global_parameter":null},{"name":"group_by","value":"date","type":"Literal","bound_global_parameter":null},{"name":"keep_columns","value":"--","type":"Literal","bound_global_parameter":null},{"name":"ascending","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_ds","node_id":"-61"},{"name":"sort_by_ds","node_id":"-61"}],"output_ports":[{"name":"sorted_data","node_id":"-61"}],"cacheable":false,"seq_num":17,"comment":"","comment_collapsed":true},{"node_id":"-288","module_id":"BigQuantSpace.join.join-v3","parameters":[{"name":"on","value":"date,instrument","type":"Literal","bound_global_parameter":null},{"name":"how","value":"left","type":"Literal","bound_global_parameter":null},{"name":"sort","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data1","node_id":"-288"},{"name":"data2","node_id":"-288"}],"output_ports":[{"name":"data","node_id":"-288"}],"cacheable":false,"seq_num":18,"comment":"","comment_collapsed":true},{"node_id":"-2738","module_id":"BigQuantSpace.trade.trade-v4","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"initialize","value":"# 回测引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n context.ranker_prediction = context.options['data'].read_df()\n\n # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数\n context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))\n # 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)\n # 设置买入的股票数量,这里买入预测股票列表排名靠前的5只\n stock_count = 3\n # 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]\n context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])\n # 设置每只股票占用的最大资金比例\n context.max_cash_per_instrument = 0.33\n context.hold_days = 1\n","type":"Literal","bound_global_parameter":null},{"name":"handle_data","value":"# 回测引擎:每日数据处理函数,每天执行一次\ndef bigquant_run(context, data):\n ranker_prediction = context.ranker_prediction[\n context.ranker_prediction.date == data.current_dt.strftime('%Y-%m-%d')]\n #------------------------------------------止赢模块START--------------------------------------------\n date = data.current_dt.strftime('%Y-%m-%d')\n positions = {e.symbol: p.cost_basis for e, p in context.portfolio.positions.items()}\n # 新建当日止赢股票列表是为了handle_data 策略逻辑部分不再对该股票进行判断\n current_stopwin_stock = [] \n if len(positions) > 0:\n for i in positions.keys():\n stock_cost = positions[i] \n stock_market_price = data.current(context.symbol(i), 'price') \n # 赚30%就止赢\n if (stock_market_price - stock_cost ) / stock_cost>= 0.09: \n context.order_target_percent(context.symbol(i),0) \n current_stopwin_stock.append(i)\n print('日期:',date,'股票:',i,'出现止盈状况')\n #-------------------------------------------止赢模块END---------------------------------------------\n\n \n #------------------------------------------止损模块START--------------------------------------------\n date = data.current_dt.strftime('%Y-%m-%d') \n equities = {e.symbol: p for e, p in context.portfolio.positions.items() if p.amount>0}\n # 新建当日止损股票列表是为了handle_data 策略逻辑部分不再对该股票进行判断\n current_stoploss_stock = [] \n if len(equities) > 0:\n for i in equities.keys():\n stock_market_price = data.current(context.symbol(i), 'price') # 最新市场价格\n last_sale_date = equities[i].last_sale_date # 上次交易日期\n delta_days = data.current_dt - last_sale_date \n hold_days = delta_days.days # 持仓天数\n # 建仓以来的最高价\n highest_price_since_buy = data.history(context.symbol(i), 'high', hold_days, '1d').max()\n # 确定止损位置\n stoploss_line = highest_price_since_buy - highest_price_since_buy * 0.08\n record('止损位置', stoploss_line)\n # 如果价格下穿止损位置\n if stock_market_price < stoploss_line:\n context.order_target_percent(context.symbol(i), 0) \n current_stoploss_stock.append(i)\n print('日期:', date , '股票:', i, '出现止损状况')\n #-------------------------------------------止损模块END--------------------------------------------------\n #-------------------------- START: ST和退市股卖出 --------------------- \n st_stock_list = []\n for instrument in positions.keys():\n try:\n instrument_name = ranker_prediction[ranker_prediction.instrument==instrument].name.values[0]\n # 如果股票状态变为了st或者退市 则卖出\n if 'ST' in instrument_name or '退' in instrument_name:\n if instrument in stock_sold:\n continue\n if data.can_trade(context.symbol(instrument)):\n context.order_target(context.symbol(instrument), 0)\n st_stock_list.append(instrument)\n cash_for_sell -= positions[instrument]\n except:\n continue\n if st_stock_list!=[]:\n print(today,'持仓出现st股/退市股',st_stock_list,'进行卖出处理') \n stock_sold += st_stock_list\n\n #-------------------------- END: ST和退市股卖出 --------------------- \n # 获取今日的日期\n today = data.current_dt.strftime('%Y-%m-%d') \n # 通过positions对象,使用列表生成式的方法获取目前持仓的股票列表\n stock_hold_now = {e.symbol: p.amount * p.last_sale_price\n for e, p in context.portfolio.positions.items()}\n\n # 记录用于买入股票的可用现金,因为是早盘卖股票,需要记录卖出的股票市值并在买入下单前更新可用现金;\n # 如果是早盘买尾盘卖,则卖出时不需更新可用现金,因为尾盘卖出股票所得现金无法使用\n cash_for_buy = context.portfolio.cash \n \n try:\n buy_stock = context.daily_stock_buy[today] # 当日符合买入条件的股票\n except:\n buy_stock=[] # 如果没有符合条件的股票,就设置为空\n \n try:\n sell_stock = context.daily_stock_sell[today] # 当日符合卖出条件的股票\n except:\n sell_stock=[] # 如果没有符合条件的股票,就设置为空\n \n # 需要卖出的股票:已有持仓中符合卖出条件的股票\n stock_to_sell = [ i for i in stock_hold_now if i in sell_stock ]\n # 需要买入的股票:没有持仓且符合买入条件的股票\n stock_to_buy = [ i for i in buy_stock if i not in stock_hold_now ] \n # 需要调仓的股票:已有持仓且不符合卖出条件的股票\n stock_to_adjust=[ i for i in stock_hold_now if i not in sell_stock ]\n \n # 如果有卖出信号\n if len(stock_to_sell)>0:\n for instrument in stock_to_sell:\n if instrument in current_stopwin_stock:\n continue\n sid = context.symbol(instrument) # 将标的转化为equity格式\n cur_position = context.portfolio.positions[sid].amount # 持仓\n if cur_position > 0 and data.can_trade(sid):\n context.order_target_percent(sid, 0) # 全部卖出 \n # 因为设置的是早盘卖出早盘买入,需要根据卖出的股票更新可用现金;如果设置尾盘卖出早盘买入,则不需更新可用现金(可以删除下面的语句)\n cash_for_buy += stock_hold_now[instrument]\n \n # 1. 资金分配\n # 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金\n # 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)\n is_staging = context.trading_day_index < context.hold_days # 是否在建仓期间(前 hold_days 天)\n cash_avg = context.portfolio.portfolio_value / context.hold_days\n cash_for_buy = min(context.portfolio.cash, (1 if is_staging else 1.5) * cash_avg)\n cash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)\n positions = {e.symbol: p.amount * p.last_sale_price\n for e, p in context.perf_tracker.position_tracker.positions.items()}\n\n\n # 3. 生成买入订单:按StockRanker预测的排序,买入前面的stock_count只股票\n buy_cash_weights = context.stock_weights\n buy_instruments = list(ranker_prediction.instrument[:len(buy_cash_weights)])\n max_cash_per_instrument = context.portfolio.portfolio_value * context.max_cash_per_instrument\n for i, instrument in enumerate(buy_instruments):\n cash = cash_for_buy * buy_cash_weights[i]\n if cash > max_cash_per_instrument - positions.get(instrument, 0):\n # 确保股票持仓量不会超过每次股票最大的占用资金量\n cash = max_cash_per_instrument - positions.get(instrument, 0)\n if cash > 0:\n context.order_value(context.symbol(instrument), cash)\n","type":"Literal","bound_global_parameter":null},{"name":"prepare","value":"# 回测引擎:准备数据,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n df = context.options['data'].read_df()\n\n # 函数:求满足开仓条件的股票列表\n def open_pos_con(df):\n return list(df[df['buy_condition']>0].instrument)\n\n # 函数:求满足平仓条件的股票列表\n def close_pos_con(df):\n return list(df[df['sell_condition']>0].instrument)\n\n # 每日买入股票的数据框\n context.daily_stock_buy= df.groupby('date').apply(open_pos_con)\n # 每日卖出股票的数据框\n context.daily_stock_sell= df.groupby('date').apply(close_pos_con)","type":"Literal","bound_global_parameter":null},{"name":"before_trading_start","value":"","type":"Literal","bound_global_parameter":null},{"name":"volume_limit","value":0.025,"type":"Literal","bound_global_parameter":null},{"name":"order_price_field_buy","value":"open","type":"Literal","bound_global_parameter":null},{"name":"order_price_field_sell","value":"close","type":"Literal","bound_global_parameter":null},{"name":"capital_base","value":1000000,"type":"Literal","bound_global_parameter":null},{"name":"auto_cancel_non_tradable_orders","value":"True","type":"Literal","bound_global_parameter":null},{"name":"data_frequency","value":"daily","type":"Literal","bound_global_parameter":null},{"name":"price_type","value":"真实价格","type":"Literal","bound_global_parameter":null},{"name":"product_type","value":"股票","type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"backtest_only","value":"False","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-2738"},{"name":"options_data","node_id":"-2738"},{"name":"history_ds","node_id":"-2738"},{"name":"benchmark_ds","node_id":"-2738"},{"name":"trading_calendar","node_id":"-2738"}],"output_ports":[{"name":"raw_perf","node_id":"-2738"}],"cacheable":false,"seq_num":20,"comment":"","comment_collapsed":true},{"node_id":"-281","module_id":"BigQuantSpace.use_datasource.use_datasource-v1","parameters":[{"name":"datasource_id","value":"instruments_CN_STOCK_A","type":"Literal","bound_global_parameter":null},{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-281"},{"name":"features","node_id":"-281"}],"output_ports":[{"name":"data","node_id":"-281"}],"cacheable":false,"seq_num":1,"comment":"","comment_collapsed":true},{"node_id":"-119","module_id":"BigQuantSpace.filter.filter-v3","parameters":[{"name":"expr","value":"total_my>1","type":"Literal","bound_global_parameter":null},{"name":"output_left_data","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-119"}],"output_ports":[{"name":"data","node_id":"-119"},{"name":"left_data","node_id":"-119"}],"cacheable":false,"seq_num":5,"comment":"","comment_collapsed":true},{"node_id":"-1526","module_id":"BigQuantSpace.trade.trade-v4","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"initialize","value":"# 回测引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n context.ranker_prediction = context.options['data'].read_df()\n\n # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数\n context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))\n # 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)\n # 设置买入的股票数量,这里买入预测股票列表排名靠前的5只\n stock_count = 3\n # 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]\n context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])\n # 设置每只股票占用的最大资金比例\n context.max_cash_per_instrument = 0.33\n context.hold_days = 1\n","type":"Literal","bound_global_parameter":null},{"name":"handle_data","value":"# 回测引擎:每日数据处理函数,每天执行一次\ndef bigquant_run(context, data):\n ranker_prediction = context.ranker_prediction[\n context.ranker_prediction.date == data.current_dt.strftime('%Y-%m-%d')]\n #------------------------------------------止赢模块START--------------------------------------------\n date = data.current_dt.strftime('%Y-%m-%d')\n positions = {e.symbol: p.cost_basis for e, p in context.portfolio.positions.items()}\n # 新建当日止赢股票列表是为了handle_data 策略逻辑部分不再对该股票进行判断\n current_stopwin_stock = [] \n if len(positions) > 0:\n for i in positions.keys():\n stock_cost = positions[i] \n stock_market_price = data.current(context.symbol(i), 'price') \n # 赚30%就止赢\n if (stock_market_price - stock_cost ) / stock_cost>= 0.15: \n context.order_target_percent(context.symbol(i),0) \n current_stopwin_stock.append(i)\n print('日期:',date,'股票:',i,'出现止盈状况')\n #-------------------------------------------止赢模块END---------------------------------------------\n\n \n #------------------------------------------止损模块START--------------------------------------------\n date = data.current_dt.strftime('%Y-%m-%d') \n equities = {e.symbol: p for e, p in context.portfolio.positions.items() if p.amount>0}\n # 新建当日止损股票列表是为了handle_data 策略逻辑部分不再对该股票进行判断\n current_stoploss_stock = [] \n if len(equities) > 0:\n for i in equities.keys():\n stock_market_price = data.current(context.symbol(i), 'price') # 最新市场价格\n last_sale_date = equities[i].last_sale_date # 上次交易日期\n delta_days = data.current_dt - last_sale_date \n hold_days = delta_days.days # 持仓天数\n # 建仓以来的最高价\n highest_price_since_buy = data.history(context.symbol(i), 'high', hold_days, '1d').max()\n # 确定止损位置\n stoploss_line = highest_price_since_buy - highest_price_since_buy * 0.13\n record('止损位置', stoploss_line)\n # 如果价格下穿止损位置\n if stock_market_price < stoploss_line:\n context.order_target_percent(context.symbol(i), 0) \n current_stoploss_stock.append(i)\n print('日期:', date , '股票:', i, '出现止损状况')\n #-------------------------------------------止损模块END--------------------------------------------------\n #-------------------------- START: ST和退市股卖出 --------------------- \n st_stock_list = []\n for instrument in positions.keys():\n try:\n instrument_name = ranker_prediction[ranker_prediction.instrument==instrument].name.values[0]\n # 如果股票状态变为了st或者退市 则卖出\n if 'ST' in instrument_name or '退' in instrument_name:\n if instrument in stock_sold:\n continue\n if data.can_trade(context.symbol(instrument)):\n context.order_target(context.symbol(instrument), 0)\n st_stock_list.append(instrument)\n cash_for_sell -= positions[instrument]\n except:\n continue\n if st_stock_list!=[]:\n print(today,'持仓出现st股/退市股',st_stock_list,'进行卖出处理') \n stock_sold += st_stock_list\n\n #-------------------------- END: ST和退市股卖出 --------------------- \n # 获取今日的日期\n today = data.current_dt.strftime('%Y-%m-%d') \n # 通过positions对象,使用列表生成式的方法获取目前持仓的股票列表\n stock_hold_now = {e.symbol: p.amount * p.last_sale_price\n for e, p in context.portfolio.positions.items()}\n\n # 记录用于买入股票的可用现金,因为是早盘卖股票,需要记录卖出的股票市值并在买入下单前更新可用现金;\n # 如果是早盘买尾盘卖,则卖出时不需更新可用现金,因为尾盘卖出股票所得现金无法使用\n cash_for_buy = context.portfolio.cash \n \n try:\n buy_stock = list(ranker_prediction[ranker_prediction.buy_condition>0].instrument) # 当日符合买入条件的股票\n except:\n buy_stock=[]\n try:\n sell_stock = list(context.daily_sell_stock[ranker_prediction.sell_condition>0].instrument) # 当日符合卖出条件的股票\n except:\n sell_stock = []\n \n # 需要卖出的股票:已有持仓中符合卖出条件的股票\n stock_to_sell = [ i for i in stock_hold_now if i in sell_stock ]\n # 需要买入的股票:没有持仓且符合买入条件的股票\n stock_to_buy = [ i for i in buy_stock if i not in stock_hold_now ] \n # 需要调仓的股票:已有持仓且不符合卖出条件的股票\n stock_to_adjust=[ i for i in stock_hold_now if i not in sell_stock ]\n \n # 如果有卖出信号\n if len(stock_to_sell)>0:\n for instrument in stock_to_sell:\n if instrument in current_stopwin_stock:\n continue\n sid = context.symbol(instrument) # 将标的转化为equity格式\n cur_position = context.portfolio.positions[sid].amount # 持仓\n if cur_position > 0 and data.can_trade(sid):\n context.order_target_percent(sid, 0) # 全部卖出 \n # 因为设置的是早盘卖出早盘买入,需要根据卖出的股票更新可用现金;如果设置尾盘卖出早盘买入,则不需更新可用现金(可以删除下面的语句)\n cash_for_buy += stock_hold_now[instrument]\n \n # 1. 资金分配\n # 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金\n # 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)\n is_staging = context.trading_day_index < context.hold_days # 是否在建仓期间(前 hold_days 天)\n cash_avg = context.portfolio.portfolio_value / context.hold_days\n cash_for_buy = min(context.portfolio.cash, (1 if is_staging else 1.5) * cash_avg)\n cash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)\n positions = {e.symbol: p.amount * p.last_sale_price\n for e, p in context.perf_tracker.position_tracker.positions.items()}\n\n\n # 3. 生成买入订单:按StockRanker预测的排序,买入前面的stock_count只股票\n \n buy_cash_weights = context.stock_weights\n buy_instruments = list(ranker_prediction.instrument[:len(buy_cash_weights)])\n max_cash_per_instrument = context.portfolio.portfolio_value * context.max_cash_per_instrument\n for i, instrument in enumerate(buy_instruments):\n cash = cash_for_buy * buy_cash_weights[i]\n if cash > max_cash_per_instrument - positions.get(instrument, 0):\n # 确保股票持仓量不会超过每次股票最大的占用资金量\n cash = max_cash_per_instrument - positions.get(instrument, 0)\n if cash > 0:\n context.order_value(context.symbol(instrument), cash)\n","type":"Literal","bound_global_parameter":null},{"name":"prepare","value":"# 回测引擎:准备数据,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n df = context.options['data'].read_df()\n\n # 函数:求满足开仓条件的股票列表\n def open_pos_con(df):\n return list(df[df['buy_condition']>0].instrument)\n\n # 函数:求满足平仓条件的股票列表\n def close_pos_con(df):\n return list(df[df['sell_condition']>0].instrument)\n\n # 每日买入股票的数据框\n context.daily_stock_buy= df.groupby('date').apply(open_pos_con)\n # 每日卖出股票的数据框\n context.daily_stock_sell= df.groupby('date').apply(close_pos_con)","type":"Literal","bound_global_parameter":null},{"name":"before_trading_start","value":"","type":"Literal","bound_global_parameter":null},{"name":"volume_limit","value":0.025,"type":"Literal","bound_global_parameter":null},{"name":"order_price_field_buy","value":"open","type":"Literal","bound_global_parameter":null},{"name":"order_price_field_sell","value":"close","type":"Literal","bound_global_parameter":null},{"name":"capital_base","value":1000000,"type":"Literal","bound_global_parameter":null},{"name":"auto_cancel_non_tradable_orders","value":"True","type":"Literal","bound_global_parameter":null},{"name":"data_frequency","value":"daily","type":"Literal","bound_global_parameter":null},{"name":"price_type","value":"真实价格","type":"Literal","bound_global_parameter":null},{"name":"product_type","value":"股票","type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"backtest_only","value":"False","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.HIX","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-1526"},{"name":"options_data","node_id":"-1526"},{"name":"history_ds","node_id":"-1526"},{"name":"benchmark_ds","node_id":"-1526"},{"name":"trading_calendar","node_id":"-1526"}],"output_ports":[{"name":"raw_perf","node_id":"-1526"}],"cacheable":false,"seq_num":3,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='-4857' Position='566,-128.19380950927734,200,200'/><node_position Node='-4849' Position='-21,-110,200,200'/><node_position Node='-4862' Position='401,184,200,200'/><node_position Node='-2687' Position='425,537,200,200'/><node_position Node='-6998' Position='454,403,200,200'/><node_position Node='-497' Position='437,655,200,200'/><node_position Node='-526' Position='446,737,200,200'/><node_position Node='-61' Position='424,1202,200,200'/><node_position Node='-288' Position='425,996,200,200'/><node_position Node='-2738' Position='299,1360,200,200'/><node_position Node='-281' Position='-47,509,200,200'/><node_position Node='-119' Position='431,895,200,200'/><node_position Node='-1526' Position='-195,1355,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
[2022-06-28 14:54:59.632780] INFO: moduleinvoker: input_features.v1 开始运行..
[2022-06-28 14:54:59.666953] INFO: moduleinvoker: input_features.v1 运行完成[0.034201s].
[2022-06-28 14:55:00.198722] INFO: moduleinvoker: instruments.v2 开始运行..
[2022-06-28 14:55:00.263828] INFO: moduleinvoker: instruments.v2 运行完成[0.06509s].
[2022-06-28 14:55:00.282025] INFO: moduleinvoker: general_feature_extractor.v7 开始运行..
[2022-06-28 14:55:02.529238] INFO: 基础特征抽取: 年份 2017, 特征行数=256263
[2022-06-28 14:55:05.833471] INFO: 基础特征抽取: 年份 2018, 特征行数=816987
[2022-06-28 14:55:09.267573] INFO: 基础特征抽取: 年份 2019, 特征行数=884867
[2022-06-28 14:55:12.672312] INFO: 基础特征抽取: 年份 2020, 特征行数=945961
[2022-06-28 14:55:16.520781] INFO: 基础特征抽取: 年份 2021, 特征行数=1061527
[2022-06-28 14:55:18.946432] INFO: 基础特征抽取: 年份 2022, 特征行数=531161
[2022-06-28 14:55:19.000804] INFO: 基础特征抽取: 总行数: 4496766
[2022-06-28 14:55:19.004528] INFO: moduleinvoker: general_feature_extractor.v7 运行完成[18.722542s].
[2022-06-28 14:55:19.015066] INFO: moduleinvoker: derived_feature_extractor.v3 开始运行..
[2022-06-28 14:55:34.624864] INFO: derived_feature_extractor: 提取完成 yl60=mean(close_0,20)/mean(close_0,60), 7.335s
[2022-06-28 14:55:34.678592] INFO: derived_feature_extractor: 提取完成 nn_dif=ta_macd_macd_12_26_9_0/adjust_factor_0, 0.052s
[2022-06-28 14:55:34.687080] INFO: derived_feature_extractor: 提取完成 nn_dea=ta_macd_macdsignal_12_26_9_0/adjust_factor_0, 0.007s
[2022-06-28 14:55:34.693739] INFO: derived_feature_extractor: 提取完成 nn_macd=ta_macd_macdhist_12_26_9_0, 0.005s
[2022-06-28 14:55:38.560277] INFO: derived_feature_extractor: 提取完成 nn_ma3=mean(close_0,3), 3.865s
[2022-06-28 14:55:50.206723] INFO: derived_feature_extractor: 提取完成 nn_zf=ts_max(high_0,5)-ts_min(low_0,5)/ts_max(high_0,5)*100, 11.645s
[2022-06-28 14:55:54.102251] INFO: derived_feature_extractor: 提取完成 yl20=mean(close_0,20)/low_0, 3.893s
[2022-06-28 14:56:05.298712] INFO: derived_feature_extractor: 提取完成 nn_xdfd=(ts_min(close_0,30)-ts_max(close_0,30))/ts_max(close_0,30)*100, 11.194s
[2022-06-28 14:56:05.319873] INFO: derived_feature_extractor: 提取完成 my1=where(nn_dif<0,1,0), 0.019s
[2022-06-28 14:56:05.388280] INFO: derived_feature_extractor: 提取完成 my2=where(nn_dea<0,1,0), 0.012s
[2022-06-28 14:56:05.481344] INFO: derived_feature_extractor: 提取完成 my3=where(nn_macd<0,1,0), 0.091s
[2022-06-28 14:56:05.580443] INFO: derived_feature_extractor: 提取完成 my4=where(close_0>nn_ma3,1,0), 0.097s
[2022-06-28 14:56:05.594550] INFO: derived_feature_extractor: 提取完成 my5=where(yl20>1.1,1,0), 0.012s
[2022-06-28 14:56:09.282710] INFO: derived_feature_extractor: 提取完成 my6=where(close_0[2022-06-28 14:56:09.296546] INFO: derived_feature_extractor: 提取完成 my7=where(yl60<1,1,0), 0.011s
[2022-06-28 14:56:09.389111] INFO: derived_feature_extractor: 提取完成 my8=where(close_0/adjust_factor_0>2.0,1,0), 0.013s
[2022-06-28 14:56:09.483036] INFO: derived_feature_extractor: 提取完成 my9=where(nn_xdfd[2022-06-28 14:56:09.583267] INFO: derived_feature_extractor: 提取完成 my=my1*my2*my3*my4*my5*my6*my7*my9*my8, 0.099s
[2022-06-28 14:56:13.206591] INFO: derived_feature_extractor: 提取完成 total_my=sum(my,5), 3.614s
[2022-06-28 14:56:13.222541] INFO: derived_feature_extractor: 提取完成 buy_condition=where(total_my>1,1,0), 0.014s
[2022-06-28 14:56:16.775946] INFO: derived_feature_extractor: 提取完成 sell_condition=where(close_0>mean(close_0,60),1,0), 3.552s
[2022-06-28 14:56:18.230602] INFO: derived_feature_extractor: /y_2017, 256263
[2022-06-28 14:56:19.836891] INFO: derived_feature_extractor: /y_2018, 816987
[2022-06-28 14:56:22.135673] INFO: derived_feature_extractor: /y_2019, 884867
[2022-06-28 14:56:24.536715] INFO: derived_feature_extractor: /y_2020, 945961
[2022-06-28 14:56:27.093455] INFO: derived_feature_extractor: /y_2021, 1061527
[2022-06-28 14:56:29.120851] INFO: derived_feature_extractor: /y_2022, 531161
[2022-06-28 14:56:29.771629] INFO: moduleinvoker: derived_feature_extractor.v3 运行完成[70.756555s].
[2022-06-28 14:56:29.784879] INFO: moduleinvoker: chinaa_stock_filter.v1 开始运行..
[2022-06-28 14:56:31.198431] INFO: A股股票过滤: 过滤 /y_2017, 251995/0/256263
[2022-06-28 14:56:34.706349] INFO: A股股票过滤: 过滤 /y_2018, 800233/0/816987
[2022-06-28 14:56:38.432363] INFO: A股股票过滤: 过滤 /y_2019, 852507/0/884867
[2022-06-28 14:56:42.513148] INFO: A股股票过滤: 过滤 /y_2020, 870321/0/945961
[2022-06-28 14:56:47.570531] INFO: A股股票过滤: 过滤 /y_2021, 940451/0/1061527
[2022-06-28 14:56:50.030924] INFO: A股股票过滤: 过滤 /y_2022, 456997/0/531161
[2022-06-28 14:56:50.038836] INFO: A股股票过滤: 过滤完成, 4172504 + 0
[2022-06-28 14:56:50.061860] INFO: moduleinvoker: chinaa_stock_filter.v1 运行完成[20.276962s].
[2022-06-28 14:56:50.081586] INFO: moduleinvoker: filter.v3 开始运行..
[2022-06-28 14:56:50.094630] INFO: filter: 使用表达式 market_cap_float_0<1000000000 过滤
[2022-06-28 14:56:50.405499] INFO: filter: 过滤 /y_2017, 17800/0/251995
[2022-06-28 14:56:50.907476] INFO: filter: 过滤 /y_2018, 73287/0/800233
[2022-06-28 14:56:51.445422] INFO: filter: 过滤 /y_2019, 60669/0/852507
[2022-06-28 14:56:51.943695] INFO: filter: 过滤 /y_2020, 35096/0/870321
[2022-06-28 14:56:52.544272] INFO: filter: 过滤 /y_2021, 51608/0/940451
[2022-06-28 14:56:52.908201] INFO: filter: 过滤 /y_2022, 29633/0/456997
[2022-06-28 14:56:52.934622] INFO: moduleinvoker: filter.v3 运行完成[2.853046s].
[2022-06-28 14:56:52.945180] INFO: moduleinvoker: filter.v3 开始运行..
[2022-06-28 14:56:52.958409] INFO: filter: 使用表达式 market_cap_float_0>200000000 过滤
[2022-06-28 14:56:53.145521] INFO: filter: 过滤 /y_2017, 17800/0/17800
[2022-06-28 14:56:53.283545] INFO: filter: 过滤 /y_2018, 73287/0/73287
[2022-06-28 14:56:53.416237] INFO: filter: 过滤 /y_2019, 60669/0/60669
[2022-06-28 14:56:53.533073] INFO: filter: 过滤 /y_2020, 35091/0/35096
[2022-06-28 14:56:53.667549] INFO: filter: 过滤 /y_2021, 51608/0/51608
[2022-06-28 14:56:53.780734] INFO: filter: 过滤 /y_2022, 29633/0/29633
[2022-06-28 14:56:53.803753] INFO: moduleinvoker: filter.v3 运行完成[0.858566s].
[2022-06-28 14:56:53.813726] INFO: moduleinvoker: filter.v3 开始运行..
[2022-06-28 14:56:53.832612] INFO: filter: 使用表达式 total_my>1 and nn_zf<5 and nn_xdfd>-50 and close_0/adjust_factor_0>2.3 过滤
[2022-06-28 14:56:53.989221] INFO: filter: 过滤 /y_2017, 291/0/17800
[2022-06-28 14:56:54.103747] INFO: filter: 过滤 /y_2018, 1714/0/73287
[2022-06-28 14:56:54.219505] INFO: filter: 过滤 /y_2019, 294/0/60669
[2022-06-28 14:56:54.315392] INFO: filter: 过滤 /y_2020, 184/0/35091
[2022-06-28 14:56:54.422149] INFO: filter: 过滤 /y_2021, 327/0/51608
[2022-06-28 14:56:54.531951] INFO: filter: 过滤 /y_2022, 885/0/29633
[2022-06-28 14:56:54.555430] INFO: moduleinvoker: filter.v3 运行完成[0.741673s].
[2022-06-28 14:56:54.564970] INFO: moduleinvoker: use_datasource.v1 开始运行..
[2022-06-28 14:56:56.563945] INFO: moduleinvoker: use_datasource.v1 运行完成[1.998978s].
[2022-06-28 14:56:56.579380] INFO: moduleinvoker: join.v3 开始运行..
[2022-06-28 14:56:58.648109] INFO: join: /y_2017, 行数=291/291, 耗时=1.071697s
[2022-06-28 14:56:59.746273] INFO: join: /y_2018, 行数=1714/1714, 耗时=1.09612s
[2022-06-28 14:57:00.909119] INFO: join: /y_2019, 行数=294/294, 耗时=1.160739s
[2022-06-28 14:57:01.933870] INFO: join: /y_2020, 行数=184/184, 耗时=1.022571s
[2022-06-28 14:57:03.101105] INFO: join: /y_2021, 行数=327/327, 耗时=1.165191s
[2022-06-28 14:57:04.151651] INFO: join: /y_2022, 行数=885/885, 耗时=1.048457s
[2022-06-28 14:57:04.186061] INFO: join: 最终行数: 3695
[2022-06-28 14:57:04.216226] INFO: moduleinvoker: join.v3 运行完成[7.636856s].
[2022-06-28 14:57:04.227284] INFO: moduleinvoker: sort.v5 开始运行..
[2022-06-28 14:57:05.695269] INFO: moduleinvoker: sort.v5 运行完成[1.467985s].
[2022-06-28 14:57:09.613128] INFO: moduleinvoker: backtest.v8 开始运行..
[2022-06-28 14:57:09.619413] INFO: backtest: biglearning backtest:V8.6.2
[2022-06-28 14:57:10.543304] INFO: backtest: product_type:stock by specified
[2022-06-28 14:57:10.748224] INFO: moduleinvoker: cached.v2 开始运行..
[2022-06-28 14:57:10.756225] INFO: moduleinvoker: 命中缓存
[2022-06-28 14:57:10.758342] INFO: moduleinvoker: cached.v2 运行完成[0.010152s].
[2022-06-28 14:57:16.332360] INFO: algo: TradingAlgorithm V1.8.8
[2022-06-28 14:57:18.258227] INFO: algo: trading transform...
[2022-06-28 14:57:20.881377] INFO: algo: handle_splits get splits [dt:2018-05-31 00:00:00+00:00] [asset:Equity(1874 [002857.SZA]), ratio:0.6233943700790405]
[2022-06-28 14:57:20.884680] INFO: Position: position stock handle split[sid:1874, orig_amount:16200, new_amount:25986.0, orig_cost:23.375315224502952, new_cost:14.572, ratio:0.6233943700790405, last_sale_price:13.589998245239258]
[2022-06-28 14:57:20.887016] INFO: Position: after split: PositionStock(asset:Equity(1874 [002857.SZA]), amount:25986.0, cost_basis:14.572, last_sale_price:21.80000114440918)
[2022-06-28 14:57:20.889247] INFO: Position: returning cash: 10.331
[2022-06-28 14:57:21.259360] INFO: algo: handle_splits get splits [dt:2018-07-05 00:00:00+00:00] [asset:Equity(2608 [603963.SHA]), ratio:0.7662383317947388]
[2022-06-28 14:57:21.261132] INFO: Position: position stock handle split[sid:2608, orig_amount:14400, new_amount:18793.0, orig_cost:26.740046737204327, new_cost:20.4892, ratio:0.7662383317947388, last_sale_price:20.879995346069336]
[2022-06-28 14:57:21.262552] INFO: Position: after split: PositionStock(asset:Equity(2608 [603963.SHA]), amount:18793.0, cost_basis:20.4892, last_sale_price:27.25)
[2022-06-28 14:57:21.263655] INFO: Position: returning cash: 2.2626
[2022-06-28 14:57:21.315133] INFO: algo: handle_splits get splits [dt:2018-07-06 00:00:00+00:00] [asset:Equity(4096 [300665.SZA]), ratio:0.6236715912818909]
[2022-06-28 14:57:21.317176] INFO: Position: position stock handle split[sid:4096, orig_amount:17200, new_amount:27578.0, orig_cost:20.80016091478774, new_cost:12.9725, ratio:0.6236715912818909, last_sale_price:12.910002708435059]
[2022-06-28 14:57:21.318426] INFO: Position: after split: PositionStock(asset:Equity(4096 [300665.SZA]), amount:27578.0, cost_basis:12.9725, last_sale_price:20.700000762939453)
[2022-06-28 14:57:21.319572] INFO: Position: returning cash: 7.9665
[2022-06-28 14:57:21.521489] INFO: algo: handle_splits get splits [dt:2018-07-13 00:00:00+00:00] [asset:Equity(447 [002800.SZA]), ratio:0.9941147565841675]
[2022-06-28 14:57:21.523415] INFO: Position: position stock handle split[sid:447, orig_amount:5600, new_amount:5633.0, orig_cost:19.99027650600545, new_cost:19.8726, ratio:0.9941147565841675, last_sale_price:20.270000457763672]
[2022-06-28 14:57:21.525409] INFO: Position: after split: PositionStock(asset:Equity(447 [002800.SZA]), amount:5633.0, cost_basis:19.8726, last_sale_price:20.39000129699707)
[2022-06-28 14:57:21.527166] INFO: Position: returning cash: 3.0906
[2022-06-28 14:57:24.317970] INFO: algo: handle_splits get splits [dt:2019-03-04 00:00:00+00:00] [asset:Equity(4935 [300700.SZA]), ratio:0.9963446259498596]
[2022-06-28 14:57:24.319826] INFO: Position: position stock handle split[sid:4935, orig_amount:8900, new_amount:8932.0, orig_cost:22.510251930720315, new_cost:22.428, ratio:0.9963446259498596, last_sale_price:24.530004501342773]
[2022-06-28 14:57:24.321058] INFO: Position: after split: PositionStock(asset:Equity(4935 [300700.SZA]), amount:8932.0, cost_basis:22.428, last_sale_price:24.619998931884766)
[2022-06-28 14:57:24.322143] INFO: Position: returning cash: 15.9981
[2022-06-28 14:57:24.553200] INFO: algo: handle_splits get splits [dt:2019-05-13 00:00:00+00:00] [asset:Equity(2218 [300749.SZA]), ratio:0.5518684387207031]
[2022-06-28 14:57:24.555723] INFO: Position: position stock handle split[sid:2218, orig_amount:16500, new_amount:29898.0, orig_cost:29.470015274713923, new_cost:16.2636, ratio:0.5518684387207031, last_sale_price:18.459999084472656]
[2022-06-28 14:57:24.557295] INFO: Position: after split: PositionStock(asset:Equity(2218 [300749.SZA]), amount:29898.0, cost_basis:16.2636, last_sale_price:33.45000076293945)
[2022-06-28 14:57:24.558486] INFO: Position: returning cash: 7.9417
[2022-06-28 14:57:24.629041] INFO: algo: handle_splits get splits [dt:2019-05-15 00:00:00+00:00] [asset:Equity(2994 [300746.SZA]), ratio:0.995764970779419]
[2022-06-28 14:57:24.630887] INFO: Position: position stock handle split[sid:2994, orig_amount:5300, new_amount:5322.0, orig_cost:16.52717143602396, new_cost:16.4572, ratio:0.995764970779419, last_sale_price:16.45999526977539]
[2022-06-28 14:57:24.632433] INFO: Position: after split: PositionStock(asset:Equity(2994 [300746.SZA]), amount:5322.0, cost_basis:16.4572, last_sale_price:16.530000686645508)
[2022-06-28 14:57:24.633817] INFO: Position: returning cash: 8.9068
[2022-06-28 14:57:24.722463] INFO: algo: handle_splits get splits [dt:2019-05-17 00:00:00+00:00] [asset:Equity(3598 [002888.SZA]), ratio:0.9787576198577881]
[2022-06-28 14:57:24.999066] INFO: algo: handle_splits get splits [dt:2019-05-28 00:00:00+00:00] [asset:Equity(4662 [603956.SHA]), ratio:0.994786262512207]
[2022-06-28 14:57:25.001893] INFO: Position: position stock handle split[sid:4662, orig_amount:600, new_amount:603.0, orig_cost:18.87999917103983, new_cost:18.7816, ratio:0.994786262512207, last_sale_price:19.079999923706055]
[2022-06-28 14:57:25.004206] INFO: Position: after split: PositionStock(asset:Equity(4662 [603956.SHA]), amount:603.0, cost_basis:18.7816, last_sale_price:19.18000030517578)
[2022-06-28 14:57:25.005679] INFO: Position: returning cash: 2.7597
[2022-06-28 14:57:25.045983] INFO: algo: handle_splits get splits [dt:2019-05-29 00:00:00+00:00] [asset:Equity(4920 [603266.SHA]), ratio:0.7095358371734619]
[2022-06-28 14:57:25.048146] INFO: Position: position stock handle split[sid:4920, orig_amount:6200, new_amount:8738.0, orig_cost:16.14000640347998, new_cost:11.4519, ratio:0.7095358371734619, last_sale_price:11.310001373291016]
[2022-06-28 14:57:25.076604] INFO: Position: after split: PositionStock(asset:Equity(4920 [603266.SHA]), amount:8738.0, cost_basis:11.4519, last_sale_price:15.9399995803833)
[2022-06-28 14:57:25.078857] INFO: Position: returning cash: 1.2091
[2022-06-28 14:57:25.542385] INFO: algo: handle_splits get splits [dt:2019-06-20 00:00:00+00:00] [asset:Equity(5618 [603637.SHA]), ratio:0.9838189482688904]
[2022-06-28 14:57:25.544382] INFO: Position: position stock handle split[sid:5618, orig_amount:43700, new_amount:44418.0, orig_cost:14.87515469710722, new_cost:14.6345, ratio:0.9838189482688904, last_sale_price:15.200002670288086]
[2022-06-28 14:57:25.546121] INFO: Position: after split: PositionStock(asset:Equity(5618 [603637.SHA]), amount:44418.0, cost_basis:14.6345, last_sale_price:15.449999809265137)
[2022-06-28 14:57:25.547730] INFO: Position: returning cash: 11.2778
[2022-06-28 14:57:28.480023] INFO: algo: handle_splits get splits [dt:2020-06-17 00:00:00+00:00] [asset:Equity(3960 [603278.SHA]), ratio:0.9796955585479736]
[2022-06-28 14:57:28.482591] INFO: Position: position stock handle split[sid:3960, orig_amount:100500, new_amount:102582.0, orig_cost:7.758864098740297, new_cost:7.6013, ratio:0.9796955585479736, last_sale_price:7.720000743865967]
[2022-06-28 14:57:28.484053] INFO: Position: after split: PositionStock(asset:Equity(3960 [603278.SHA]), amount:102582.0, cost_basis:7.6013, last_sale_price:7.87999963760376)
[2022-06-28 14:57:28.485319] INFO: Position: returning cash: 6.8573
[2022-06-28 14:57:30.633252] INFO: algo: handle_splits get splits [dt:2021-05-26 00:00:00+00:00] [asset:Equity(1597 [300936.SZA]), ratio:0.988819420337677]
[2022-06-28 14:57:30.635668] INFO: Position: position stock handle split[sid:1597, orig_amount:19900, new_amount:20125.0, orig_cost:45.80166162438376, new_cost:45.2896, ratio:0.988819420337677, last_sale_price:44.22000503540039]
[2022-06-28 14:57:30.637227] INFO: Position: after split: PositionStock(asset:Equity(1597 [300936.SZA]), amount:20125.0, cost_basis:45.2896, last_sale_price:44.720001220703125)
[2022-06-28 14:57:30.638624] INFO: Position: returning cash: 0.4099
[2022-06-28 14:57:32.769976] INFO: algo: handle_splits get splits [dt:2022-04-20 00:00:00+00:00] [asset:Equity(1666 [301007.SZA]), ratio:0.9939794540405273]
[2022-06-28 14:57:32.771957] INFO: Position: position stock handle split[sid:1666, orig_amount:19700, new_amount:19819.0, orig_cost:15.720024580125727, new_cost:15.6254, ratio:0.9939794540405273, last_sale_price:16.510000228881836]
[2022-06-28 14:57:32.775997] INFO: Position: after split: PositionStock(asset:Equity(1666 [301007.SZA]), amount:19819.0, cost_basis:15.6254, last_sale_price:16.610000610351562)
[2022-06-28 14:57:32.777578] INFO: Position: returning cash: 5.3351
[2022-06-28 14:57:33.536728] INFO: algo: handle_splits get splits [dt:2022-05-24 00:00:00+00:00] [asset:Equity(1817 [603109.SHA]), ratio:0.7004879713058472]
[2022-06-28 14:57:33.539015] INFO: Position: position stock handle split[sid:1817, orig_amount:29700, new_amount:42399.0, orig_cost:19.000757371149405, new_cost:13.3098, ratio:0.7004879713058472, last_sale_price:14.360003471374512]
[2022-06-28 14:57:33.540737] INFO: Position: after split: PositionStock(asset:Equity(1817 [603109.SHA]), amount:42399.0, cost_basis:13.3098, last_sale_price:20.5)
[2022-06-28 14:57:33.542135] INFO: Position: returning cash: 0.2153
[2022-06-28 14:57:33.781300] INFO: Performance: Simulated 1085 trading days out of 1085.
[2022-06-28 14:57:33.782838] INFO: Performance: first open: 2018-01-02 09:30:00+00:00
[2022-06-28 14:57:33.784159] INFO: Performance: last close: 2022-06-23 15:00:00+00:00
[2022-06-28 14:57:40.919790] INFO: moduleinvoker: backtest.v8 运行完成[31.306673s].
[2022-06-28 14:57:40.921794] INFO: moduleinvoker: trade.v4 运行完成[35.216193s].
日期: 2018-02-12 股票: 300648.SZA 出现止盈状况
日期: 2018-02-22 股票: 300657.SZA 出现止损状况
日期: 2018-02-22 股票: 300404.SZA 出现止损状况
日期: 2018-02-22 股票: 300712.SZA 出现止损状况
日期: 2018-02-22 股票: 300462.SZA 出现止损状况
日期: 2018-02-22 股票: 300720.SZA 出现止损状况
日期: 2018-02-22 股票: 603703.SHA 出现止损状况
日期: 2018-02-22 股票: 300435.SZA 出现止损状况
日期: 2018-02-26 股票: 002853.SZA 出现止盈状况
日期: 2018-03-02 股票: 603637.SHA 出现止盈状况
日期: 2018-03-08 股票: 002865.SZA 出现止盈状况
日期: 2018-03-08 股票: 002893.SZA 出现止盈状况
日期: 2018-03-12 股票: 300435.SZA 出现止盈状况
日期: 2018-03-15 股票: 603079.SHA 出现止损状况
日期: 2018-04-02 股票: 002799.SZA 出现止损状况
日期: 2018-04-03 股票: 002799.SZA 出现止损状况
日期: 2018-04-04 股票: 002799.SZA 出现止损状况
日期: 2018-04-09 股票: 002799.SZA 出现止损状况
日期: 2018-04-10 股票: 002799.SZA 出现止损状况
日期: 2018-04-11 股票: 002799.SZA 出现止损状况
日期: 2018-04-12 股票: 002799.SZA 出现止损状况
日期: 2018-04-13 股票: 002799.SZA 出现止损状况
日期: 2018-04-16 股票: 002799.SZA 出现止损状况
日期: 2018-04-17 股票: 002799.SZA 出现止损状况
日期: 2018-04-18 股票: 002799.SZA 出现止损状况
日期: 2018-04-19 股票: 002799.SZA 出现止损状况
日期: 2018-04-20 股票: 002799.SZA 出现止损状况
日期: 2018-04-23 股票: 002799.SZA 出现止损状况
日期: 2018-04-24 股票: 002799.SZA 出现止损状况
日期: 2018-04-25 股票: 002799.SZA 出现止损状况
日期: 2018-04-26 股票: 002799.SZA 出现止损状况
日期: 2018-04-27 股票: 002799.SZA 出现止损状况
日期: 2018-05-02 股票: 002799.SZA 出现止损状况
日期: 2018-05-03 股票: 002799.SZA 出现止损状况
日期: 2018-05-04 股票: 002799.SZA 出现止损状况
日期: 2018-05-07 股票: 002799.SZA 出现止损状况
日期: 2018-05-08 股票: 002799.SZA 出现止损状况
日期: 2018-05-09 股票: 002799.SZA 出现止损状况
日期: 2018-05-10 股票: 002799.SZA 出现止损状况
日期: 2018-05-11 股票: 002799.SZA 出现止损状况
日期: 2018-05-14 股票: 002799.SZA 出现止损状况
日期: 2018-05-15 股票: 002799.SZA 出现止损状况
日期: 2018-05-16 股票: 002799.SZA 出现止损状况
日期: 2018-05-17 股票: 002799.SZA 出现止损状况
日期: 2018-05-18 股票: 002799.SZA 出现止损状况
日期: 2018-05-21 股票: 002799.SZA 出现止损状况
日期: 2018-05-22 股票: 002799.SZA 出现止损状况
日期: 2018-05-23 股票: 002799.SZA 出现止损状况
日期: 2018-05-24 股票: 002799.SZA 出现止损状况
日期: 2018-05-25 股票: 002799.SZA 出现止损状况
日期: 2018-05-28 股票: 002799.SZA 出现止损状况
日期: 2018-05-28 股票: 603578.SHA 出现止损状况
日期: 2018-06-04 股票: 002857.SZA 出现止损状况
日期: 2018-07-05 股票: 603963.SHA 出现止损状况
日期: 2018-07-05 股票: 603488.SHA 出现止损状况
日期: 2018-07-06 股票: 300665.SZA 出现止损状况
日期: 2018-07-11 股票: 300543.SZA 出现止损状况
日期: 2018-07-12 股票: 002875.SZA 出现止盈状况
日期: 2018-07-23 股票: 603031.SHA 出现止损状况
日期: 2018-07-23 股票: 002800.SZA 出现止损状况
日期: 2018-07-24 股票: 002810.SZA 出现止盈状况
日期: 2018-07-26 股票: 603380.SHA 出现止损状况
日期: 2018-07-30 股票: 300023.SZA 出现止损状况
日期: 2018-07-30 股票: 300552.SZA 出现止损状况
日期: 2018-07-30 股票: 002887.SZA 出现止损状况
日期: 2018-08-01 股票: 603787.SHA 出现止损状况
日期: 2018-08-01 股票: 603557.SHA 出现止损状况
日期: 2018-08-01 股票: 603500.SHA 出现止损状况
日期: 2018-08-01 股票: 300687.SZA 出现止损状况
日期: 2018-08-02 股票: 300682.SZA 出现止损状况
日期: 2018-08-02 股票: 300700.SZA 出现止损状况
日期: 2018-08-13 股票: 300698.SZA 出现止盈状况
日期: 2018-08-17 股票: 603722.SHA 出现止损状况
日期: 2018-08-17 股票: 002927.SZA 出现止损状况
日期: 2018-08-20 股票: 300612.SZA 出现止损状况
日期: 2018-08-21 股票: 603032.SHA 出现止盈状况
日期: 2018-08-22 股票: 603696.SHA 出现止损状况
日期: 2018-08-22 股票: 300721.SZA 出现止损状况
日期: 2018-08-22 股票: 300505.SZA 出现止损状况
日期: 2018-08-24 股票: 300517.SZA 出现止盈状况
日期: 2018-08-28 股票: 300464.SZA 出现止盈状况
日期: 2018-08-28 股票: 300720.SZA 出现止损状况
日期: 2018-08-30 股票: 300411.SZA 出现止损状况
日期: 2018-08-31 股票: 603477.SHA 出现止损状况
日期: 2018-09-03 股票: 300713.SZA 出现止损状况
日期: 2018-09-03 股票: 603683.SHA 出现止损状况
日期: 2018-09-06 股票: 002848.SZA 出现止盈状况
日期: 2018-09-10 股票: 603711.SHA 出现止损状况
日期: 2018-09-11 股票: 300517.SZA 出现止损状况
日期: 2018-09-12 股票: 002848.SZA 出现止盈状况
日期: 2018-09-17 股票: 300708.SZA 出现止损状况
日期: 2018-09-19 股票: 603677.SHA 出现止盈状况
日期: 2018-09-26 股票: 300708.SZA 出现止损状况
日期: 2018-10-08 股票: 603880.SHA 出现止损状况
日期: 2018-10-18 股票: 002909.SZA 出现止损状况
日期: 2018-10-18 股票: 300586.SZA 出现止损状况
日期: 2018-10-23 股票: 002072.SZA 出现止盈状况
日期: 2018-10-25 股票: 603733.SHA 出现止损状况
日期: 2018-10-29 股票: 603696.SHA 出现止盈状况
日期: 2018-11-01 股票: 300588.SZA 出现止盈状况
日期: 2018-11-06 股票: 603696.SHA 出现止损状况
日期: 2018-11-09 股票: 002909.SZA 出现止损状况
日期: 2018-11-12 股票: 002740.SZA 出现止盈状况
日期: 2018-11-15 股票: 002837.SZA 出现止盈状况
日期: 2018-11-15 股票: 603722.SHA 出现止盈状况
日期: 2018-11-23 股票: 603619.SHA 出现止盈状况
日期: 2018-11-23 股票: 603667.SHA 出现止损状况
日期: 2019-01-10 股票: 002871.SZA 出现止盈状况
日期: 2019-01-16 股票: 603726.SHA 出现止损状况
日期: 2019-01-24 股票: 002871.SZA 出现止损状况
日期: 2019-02-15 股票: 300313.SZA 出现止盈状况
日期: 2019-02-18 股票: 002072.SZA 出现止盈状况
日期: 2019-02-20 股票: 300647.SZA 出现止盈状况
日期: 2019-02-21 股票: 603389.SHA 出现止盈状况
日期: 2019-02-28 股票: 300644.SZA 出现止盈状况
日期: 2019-03-01 股票: 300700.SZA 出现止盈状况
日期: 2019-03-05 股票: 603196.SHA 出现止盈状况
日期: 2019-05-10 股票: 300749.SZA 出现止盈状况
日期: 2019-05-17 股票: 603738.SHA 出现止盈状况
日期: 2019-05-17 股票: 300757.SZA 出现止损状况
日期: 2019-05-17 股票: 002870.SZA 出现止损状况
日期: 2019-05-17 股票: 300746.SZA 出现止损状况
日期: 2019-05-20 股票: 002862.SZA 出现止损状况
日期: 2019-05-21 股票: 300313.SZA 出现止盈状况
日期: 2019-05-22 股票: 300745.SZA 出现止损状况
日期: 2019-05-24 股票: 002870.SZA 出现止损状况
日期: 2019-05-27 股票: 300694.SZA 出现止盈状况
日期: 2019-05-28 股票: 603121.SHA 出现止盈状况
日期: 2019-05-29 股票: 603105.SHA 出现止盈状况
日期: 2019-05-29 股票: 300749.SZA 出现止盈状况
日期: 2019-05-30 股票: 603266.SHA 出现止盈状况
日期: 2019-05-31 股票: 603956.SHA 出现止盈状况
日期: 2019-06-03 股票: 300700.SZA 出现止损状况
日期: 2019-06-04 股票: 002888.SZA 出现止损状况
日期: 2019-06-04 股票: 300749.SZA 出现止损状况
日期: 2019-06-04 股票: 603266.SHA 出现止损状况
日期: 2019-06-06 股票: 300745.SZA 出现止损状况
日期: 2019-06-10 股票: 300580.SZA 出现止盈状况
日期: 2019-06-18 股票: 002868.SZA 出现止盈状况
日期: 2019-06-18 股票: 603157.SHA 出现止损状况
日期: 2019-06-21 股票: 300453.SZA 出现止盈状况
日期: 2019-06-21 股票: 300362.SZA 出现止盈状况
日期: 2019-07-22 股票: 603320.SHA 出现止损状况
日期: 2019-08-02 股票: 300536.SZA 出现止损状况
日期: 2019-08-05 股票: 603637.SHA 出现止损状况
日期: 2019-08-19 股票: 300362.SZA 出现止损状况
日期: 2019-09-26 股票: 603499.SHA 出现止损状况
日期: 2019-09-26 股票: 603617.SHA 出现止损状况
日期: 2019-11-11 股票: 002943.SZA 出现止损状况
日期: 2019-11-13 股票: 603530.SHA 出现止盈状况
日期: 2019-11-15 股票: 002858.SZA 出现止损状况
日期: 2019-11-20 股票: 603687.SHA 出现止损状况
日期: 2019-11-25 股票: 300779.SZA 出现止损状况
日期: 2019-11-25 股票: 300431.SZA 出现止损状况
日期: 2019-11-25 股票: 002943.SZA 出现止损状况
日期: 2019-11-29 股票: 300431.SZA 出现止损状况
日期: 2019-12-09 股票: 603787.SHA 出现止损状况
日期: 2019-12-23 股票: 002865.SZA 出现止损状况
日期: 2020-01-02 股票: 002875.SZA 出现止盈状况
日期: 2020-01-23 股票: 603976.SHA 出现止损状况
日期: 2020-02-03 股票: 603976.SHA 出现止损状况
日期: 2020-02-07 股票: 300089.SZA 出现止盈状况
日期: 2020-02-07 股票: 300431.SZA 出现止盈状况
日期: 2020-02-10 股票: 603815.SHA 出现止盈状况
日期: 2020-02-17 股票: 603815.SHA 出现止盈状况
日期: 2020-02-20 股票: 300592.SZA 出现止盈状况
日期: 2020-02-20 股票: 002905.SZA 出现止盈状况
日期: 2020-02-21 股票: 000663.SZA 出现止盈状况
日期: 2020-02-21 股票: 002915.SZA 出现止盈状况
日期: 2020-02-26 股票: 603982.SHA 出现止盈状况
日期: 2020-02-27 股票: 300795.SZA 出现止损状况
日期: 2020-02-28 股票: 603226.SHA 出现止损状况
日期: 2020-02-28 股票: 300780.SZA 出现止损状况
日期: 2020-04-10 股票: 300718.SZA 出现止损状况
日期: 2020-04-13 股票: 300654.SZA 出现止损状况
日期: 2020-04-13 股票: 603396.SHA 出现止损状况
日期: 2020-04-24 股票: 300812.SZA 出现止损状况
日期: 2020-05-06 股票: 603157.SHA 出现止损状况
日期: 2020-05-06 股票: 300312.SZA 出现止损状况
日期: 2020-05-12 股票: 000835.SZA 出现止损状况
日期: 2020-05-18 股票: 603157.SHA 出现止损状况
日期: 2020-06-05 股票: 603655.SHA 出现止盈状况
日期: 2020-06-12 股票: 603867.SHA 出现止盈状况
日期: 2020-06-19 股票: 603655.SHA 出现止盈状况
日期: 2020-06-22 股票: 603278.SHA 出现止损状况
日期: 2020-07-13 股票: 603316.SHA 出现止盈状况
日期: 2020-10-26 股票: 002969.SZA 出现止损状况
日期: 2020-10-27 股票: 603499.SHA 出现止损状况
日期: 2020-10-29 股票: 002813.SZA 出现止损状况
日期: 2020-11-10 股票: 300859.SZA 出现止盈状况
日期: 2020-11-10 股票: 300859.SZA 出现止损状况
日期: 2021-01-07 股票: 300795.SZA 出现止损状况
日期: 2021-01-07 股票: 300859.SZA 出现止损状况
日期: 2021-01-07 股票: 300823.SZA 出现止损状况
日期: 2021-01-07 股票: 300789.SZA 出现止损状况
日期: 2021-01-07 股票: 300781.SZA 出现止损状况
日期: 2021-01-11 股票: 300650.SZA 出现止损状况
日期: 2021-01-13 股票: 300809.SZA 出现止损状况
日期: 2021-01-14 股票: 002858.SZA 出现止损状况
日期: 2021-01-19 股票: 002931.SZA 出现止盈状况
日期: 2021-01-19 股票: 300819.SZA 出现止盈状况
日期: 2021-01-25 股票: 300812.SZA 出现止损状况
日期: 2021-01-25 股票: 300312.SZA 出现止损状况
日期: 2021-01-26 股票: 300717.SZA 出现止损状况
日期: 2021-01-27 股票: 300859.SZA 出现止盈状况
日期: 2021-01-28 股票: 603439.SHA 出现止损状况
日期: 2021-02-01 股票: 600766.SHA 出现止损状况
日期: 2021-02-03 股票: 300478.SZA 出现止损状况
日期: 2021-02-08 股票: 600956.SHA 出现止损状况
日期: 2021-02-18 股票: 000502.SZA 出现止盈状况
日期: 2021-02-18 股票: 002740.SZA 出现止损状况
日期: 2021-02-19 股票: 300554.SZA 出现止盈状况
日期: 2021-02-19 股票: 002848.SZA 出现止盈状况
日期: 2021-02-19 股票: 002316.SZA 出现止盈状况
日期: 2021-02-22 股票: 300437.SZA 出现止盈状况
日期: 2021-02-24 股票: 300405.SZA 出现止盈状况
日期: 2021-02-26 股票: 002316.SZA 出现止盈状况
日期: 2021-03-01 股票: 002943.SZA 出现止盈状况
日期: 2021-03-05 股票: 300717.SZA 出现止盈状况
日期: 2021-03-10 股票: 002848.SZA 出现止损状况
日期: 2021-03-19 股票: 300827.SZA 出现止盈状况
日期: 2021-04-30 股票: 603629.SHA 出现止损状况
日期: 2021-05-27 股票: 300752.SZA 出现止盈状况
日期: 2021-06-16 股票: 300936.SZA 出现止损状况
日期: 2021-08-10 股票: 002862.SZA 出现止盈状况
日期: 2021-08-12 股票: 605016.SHA 出现止盈状况
日期: 2021-08-13 股票: 300970.SZA 出现止盈状况
日期: 2021-08-20 股票: 605136.SHA 出现止损状况
日期: 2021-08-20 股票: 605300.SHA 出现止损状况
日期: 2021-09-07 股票: 300998.SZA 出现止盈状况
日期: 2021-09-13 股票: 300998.SZA 出现止损状况
日期: 2021-09-22 股票: 605196.SHA 出现止损状况
日期: 2021-10-08 股票: 003043.SZA 出现止盈状况
日期: 2021-10-14 股票: 003032.SZA 出现止盈状况
日期: 2021-10-26 股票: 300977.SZA 出现止损状况
日期: 2021-11-11 股票: 301036.SZA 出现止盈状况
日期: 2021-11-11 股票: 300987.SZA 出现止盈状况
日期: 2021-11-11 股票: 300813.SZA 出现止盈状况
日期: 2021-11-15 股票: 300995.SZA 出现止盈状况
日期: 2021-11-16 股票: 300987.SZA 出现止盈状况
日期: 2021-11-23 股票: 300905.SZA 出现止盈状况
日期: 2022-01-05 股票: 301017.SZA 出现止损状况
日期: 2022-01-20 股票: 301007.SZA 出现止损状况
日期: 2022-01-28 股票: 301012.SZA 出现止损状况
日期: 2022-02-11 股票: 301072.SZA 出现止损状况
日期: 2022-02-14 股票: 300987.SZA 出现止损状况
日期: 2022-02-15 股票: 300945.SZA 出现止盈状况
日期: 2022-02-15 股票: 300967.SZA 出现止损状况
日期: 2022-02-24 股票: 300987.SZA 出现止损状况
日期: 2022-03-02 股票: 300807.SZA 出现止盈状况
日期: 2022-03-08 股票: 300950.SZA 出现止损状况
日期: 2022-03-09 股票: 001219.SZA 出现止损状况
日期: 2022-03-24 股票: 605398.SHA 出现止盈状况
日期: 2022-03-29 股票: 301012.SZA 出现止损状况
日期: 2022-04-08 股票: 605319.SHA 出现止损状况
日期: 2022-04-15 股票: 301068.SZA 出现止损状况
日期: 2022-04-20 股票: 301072.SZA 出现止损状况
日期: 2022-04-21 股票: 301138.SZA 出现止损状况
日期: 2022-04-22 股票: 300984.SZA 出现止损状况
日期: 2022-04-22 股票: 301085.SZA 出现止损状况
日期: 2022-04-25 股票: 301007.SZA 出现止损状况
日期: 2022-04-25 股票: 301168.SZA 出现止损状况
日期: 2022-05-05 股票: 301159.SZA 出现止损状况
日期: 2022-05-05 股票: 301040.SZA 出现止损状况
日期: 2022-05-05 股票: 300984.SZA 出现止损状况
日期: 2022-05-05 股票: 300614.SZA 出现止损状况
日期: 2022-05-06 股票: 605333.SHA 出现止损状况
日期: 2022-05-09 股票: 301085.SZA 出现止损状况
日期: 2022-05-10 股票: 301167.SZA 出现止盈状况
日期: 2022-05-10 股票: 301091.SZA 出现止盈状况
日期: 2022-05-10 股票: 605122.SHA 出现止盈状况
日期: 2022-05-10 股票: 300949.SZA 出现止盈状况
日期: 2022-05-10 股票: 300844.SZA 出现止盈状况
日期: 2022-05-17 股票: 301003.SZA 出现止损状况
日期: 2022-05-18 股票: 003007.SZA 出现止盈状况
日期: 2022-05-19 股票: 300892.SZA 出现止损状况
日期: 2022-05-20 股票: 300991.SZA 出现止损状况
日期: 2022-05-23 股票: 605018.SHA 出现止盈状况
日期: 2022-05-24 股票: 301199.SZA 出现止损状况
日期: 2022-05-24 股票: 603109.SHA 出现止损状况
日期: 2022-05-30 股票: 605018.SHA 出现止损状况
日期: 2022-06-20 股票: 301010.SZA 出现止盈状况
- 收益率277.84%
- 年化收益率36.17%
- 基准收益率7.77%
- 阿尔法0.35
- 贝塔0.32
- 夏普比率1.3
- 胜率0.54
- 盈亏比1.19
- 收益波动率23.61%
- 信息比率0.07
- 最大回撤25.45%
bigcharts-data-start/{"__type":"tabs","__id":"bigchart-44fddf93a2fa439c9a948ccdb62b4b55"}/bigcharts-data-end