克隆策略

    {"Description":"实验创建于2019/8/14","Summary":"","Graph":{"EdgesInternal":[{"DestinationInputPortId":"-1221:features","SourceOutputPortId":"-1216:data"},{"DestinationInputPortId":"-1228:features","SourceOutputPortId":"-1216:data"},{"DestinationInputPortId":"-1228:input_data","SourceOutputPortId":"-1221:data"},{"DestinationInputPortId":"-1241:input_data","SourceOutputPortId":"-1228:data"},{"DestinationInputPortId":"-1241:features","SourceOutputPortId":"-1236:data"},{"DestinationInputPortId":"-1253:input_1","SourceOutputPortId":"-1241:data"},{"DestinationInputPortId":"-1266:input_data","SourceOutputPortId":"-1253:data_1"},{"DestinationInputPortId":"-1266:features","SourceOutputPortId":"-1261:data"},{"DestinationInputPortId":"-293:input_2","SourceOutputPortId":"-1266:data"},{"DestinationInputPortId":"-553:instruments","SourceOutputPortId":"-281:data_1"},{"DestinationInputPortId":"-293:input_1","SourceOutputPortId":"-281:data_2"},{"DestinationInputPortId":"-553:options_data","SourceOutputPortId":"-293:data_1"},{"DestinationInputPortId":"-37:features_ds","SourceOutputPortId":"-12:data"},{"DestinationInputPortId":"-230:features","SourceOutputPortId":"-12:data"},{"DestinationInputPortId":"-42:instruments","SourceOutputPortId":"-4:data"},{"DestinationInputPortId":"-16:instruments","SourceOutputPortId":"-4:data"},{"DestinationInputPortId":"-42:features","SourceOutputPortId":"-37:data"},{"DestinationInputPortId":"-49:features","SourceOutputPortId":"-37:data"},{"DestinationInputPortId":"-446:features","SourceOutputPortId":"-37:data"},{"DestinationInputPortId":"-439:features","SourceOutputPortId":"-37:data"},{"DestinationInputPortId":"-49:input_data","SourceOutputPortId":"-42:data"},{"DestinationInputPortId":"-73:data1","SourceOutputPortId":"-16:data"},{"DestinationInputPortId":"-58:input_data","SourceOutputPortId":"-49:data"},{"DestinationInputPortId":"-73:data2","SourceOutputPortId":"-58:data"},{"DestinationInputPortId":"-222:input_data","SourceOutputPortId":"-73:data"},{"DestinationInputPortId":"-244:input_data","SourceOutputPortId":"-455:data"},{"DestinationInputPortId":"-455:input_data","SourceOutputPortId":"-446:data"},{"DestinationInputPortId":"-446:input_data","SourceOutputPortId":"-439:data"},{"DestinationInputPortId":"-439:instruments","SourceOutputPortId":"-430:data"},{"DestinationInputPortId":"-1221:instruments","SourceOutputPortId":"-430:data"},{"DestinationInputPortId":"-281:input_1","SourceOutputPortId":"-430:data"},{"DestinationInputPortId":"-473:instruments","SourceOutputPortId":"-430:data"},{"DestinationInputPortId":"-281:input_2","SourceOutputPortId":"-465:predictions"},{"DestinationInputPortId":"-473:options_data","SourceOutputPortId":"-465:predictions"},{"DestinationInputPortId":"-230:training_ds","SourceOutputPortId":"-222:data"},{"DestinationInputPortId":"-465:model","SourceOutputPortId":"-230:model"},{"DestinationInputPortId":"-465:data","SourceOutputPortId":"-244:data"}],"ModuleNodes":[{"Id":"-1216","ModuleId":"BigQuantSpace.input_features.input_features-v1","ModuleParameters":[{"Name":"features","Value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\nlow = low_1/adjust_factor_1\nhigh = high_1/adjust_factor_1\nadjust_factor_1\nclose = close_1/adjust_factor_1\n","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features_ds","NodeId":"-1216"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1216","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":2,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1221","ModuleId":"BigQuantSpace.general_feature_extractor.general_feature_extractor-v7","ModuleParameters":[{"Name":"start_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"before_start_days","Value":"5","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"instruments","NodeId":"-1221"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-1221"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1221","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":3,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1228","ModuleId":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","ModuleParameters":[{"Name":"date_col","Value":"date","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_col","Value":"instrument","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"drop_na","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"remove_extra_columns","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"user_functions","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-1228"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-1228"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1228","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":4,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1236","ModuleId":"BigQuantSpace.input_features.input_features-v1","ModuleParameters":[{"Name":"features","Value":"\n# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\namplitude = high - low","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features_ds","NodeId":"-1236"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1236","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":5,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1241","ModuleId":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","ModuleParameters":[{"Name":"date_col","Value":"date","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_col","Value":"instrument","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"drop_na","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"remove_extra_columns","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"user_functions","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-1241"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-1241"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1241","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":6,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1253","ModuleId":"BigQuantSpace.cached.cached-v3","ModuleParameters":[{"Name":"run","Value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n df = input_1.read()\n df = df[['date','instrument','low','high','close','amplitude']]\n data_1 = DataSource.write_df(df)\n return Outputs(data_1=data_1)\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"post_run","Value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"input_ports","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"params","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"output_ports","Value":"","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_1","NodeId":"-1253"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_2","NodeId":"-1253"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_3","NodeId":"-1253"}],"OutputPortsInternal":[{"Name":"data_1","NodeId":"-1253","OutputType":null},{"Name":"data_2","NodeId":"-1253","OutputType":null},{"Name":"data_3","NodeId":"-1253","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":7,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1261","ModuleId":"BigQuantSpace.input_features.input_features-v1","ModuleParameters":[{"Name":"features","Value":"# 通道倍数的参数可以改,比如改成 0.5\nceiling = close + 1.5 * amplitude\nfloor = close - 1.5 * amplitude","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features_ds","NodeId":"-1261"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1261","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":8,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-1266","ModuleId":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","ModuleParameters":[{"Name":"date_col","Value":"date","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_col","Value":"instrument","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"drop_na","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"remove_extra_columns","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"user_functions","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-1266"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-1266"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-1266","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":9,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-553","ModuleId":"BigQuantSpace.trade.trade-v4","ModuleParameters":[{"Name":"start_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"initialize","Value":"# 回测引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n \n context.indice_data = context.options['data'].read_pickle()['indice_df'].set_index('date')\n context.pred_data = context.options['data'].read_pickle()['pred_df'].set_index('date')\n \n context.current_date_indice = pd.DataFrame()\n context.current_dt = None \n context.dif_big = None\n context.bar_index = 0\n \n context.current_buy = []\n context.dt_lst = []\n \n # 获取上证指数\n context.bm_df = DataSource('bar1d_index_CN_STOCK_A').read(['000001.HIX'],start_date=context.start_date).set_index('date')\n \n \n context.stock_count = 2\n context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, context.stock_count)])\n # 设置每只股票占用的最大资金比例\n context.max_cash_per_instrument = 0.5\n context.options['hold_days'] = 1\n \n context.trigger_upperline_cnt = 0 # 累计触发买入的次数\n context.trigger_lowerline_cnt = 0 # 累计触发卖出的次数","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"handle_data","Value":"# 回测引擎:每日数据处理函数,每天执行一次\ndef bigquant_run(context, data):\n \n dt = data.current_dt.strftime(\"%Y-%m-%d\") # 获取当前分钟日期数据\n context.is_buy = True # 当前分钟是能买还是不能买的状态\n \n # 每天开盘第一分钟\n if dt != context.current_dt: \n print('\\n')\n context.bar_index += 1\n context.current_dt = dt\n context.dt_lst.append(context.current_dt)\n \n # 当天第一分钟,买入列表和卖出列表重置为空\n context.buy_in = []\n context.sell_out = []\n \n # 当天指标数据\n context.current_indice = context.indice_data.loc[context.current_dt] \n \n # 当天排序预测数据(要买入的5只股票)\n try:\n tmp = context.pred_data.loc[context.current_dt] # 预测数据中当天的预买入数据,多只的话是DataFrame,单只的话是Series\n if type(tmp) == pd.DataFrame:\n context.pred = context.pred_data.loc[context.current_dt].instrument[:context.stock_count].tolist()\n elif type(tmp) == pd.Series:\n context.pred = [context.pred_data.loc[context.current_dt].instrument]\n \n except KeyError as e:\n context.is_buy = False\n \n # 昨日持仓数据\n context.yes_position = {}\n hold_pos = context.portfolio.positions \n for s in list(hold_pos.keys()):\n amount = hold_pos[s].amount\n if amount != 0:\n context.yes_position[s] = amount\n \n \n # 大盘风控。计算大盘最近5日的收益率指标\n if len(context.dt_lst) >=5:\n end = context.dt_lst[-1]\n start = context.dt_lst[-5]\n big_prices = context.bm_df.loc[start:end]['close'].tolist()\n context.dif_big = big_prices[-1]/ big_prices[0] # 大盘指数最近5日涨幅\n else:\n st = (data.current_dt-datetime.timedelta(15)).strftime('%Y-%m-%d')\n context.bm_df = DataSource('bar1d_index_CN_STOCK_A').read(['000001.HIX'],start_date=st).set_index('date')\n big_prices= context.bm_df.loc[:dt].close.tolist()\n context.dif_big = big_prices[-1]/ big_prices[0]\n \n print('大盘监控指标为:', dt, data.current_dt, context.dif_big )\n print(dt, data.current_dt, '昨日持仓为:',context.yes_position, '今日预买:', context.pred, '触发看多次数:', context.trigger_upperline_cnt,\n '触发看跌次数:', context.trigger_lowerline_cnt)\n \n \n # 先卖出 只能用昨日持仓\n stocks = context.yes_position.keys()\n for i in stocks:\n if i.symbol not in context.sell_out: # 并不是今天已经卖出的股票\n amount = context.yes_position[i] \n current_signal = context.current_indice[context.current_indice['instrument']==i.symbol]\n try: # 当天可能停牌\n floor = current_signal['floor'].tolist()[0]\n ceiling = current_signal['ceiling'].tolist()[0]\n price = data.current(i, 'price')\n except :\n continue \n if price <= floor:\n \n context.order(i, -1*abs(amount))\n context.sell_out.append(i.symbol) \n \n context.trigger_lowerline_cnt += 1\n print(dt,data.current_dt,'下穿提前卖出:',i)\n \n elif data.current_dt.hour >= 14 and data.current_dt.minute ==55:\n #没有出现卖出信号的话 就收盘的时候卖出\n context.order(i, -1*abs(amount))\n context.sell_out.append(i.symbol) \n print(dt,data.current_dt,'最后收盘卖出:', i, i.symbol, amount)\n \n \n # 买入 \n if context.dif_big > 0.96 and context.is_buy:\n cash_avg = context.portfolio.portfolio_value / 2\n cash_for_buy = min(context.portfolio.cash, cash_avg)\n \n buy_cash_weights = context.stock_weights\n buy_instruments = context.pred\n context.current_buy = [] \n for j in buy_instruments:\n current_signal = context.current_indice[context.current_indice['instrument']==j]\n\n floor = current_signal['floor'].tolist()[0]\n ceiling = current_signal['ceiling'].tolist()[0]\n sid = context.symbol(j)\n price = data.current(sid, 'price')\n \n if len( context.current_buy) < len(buy_cash_weights) and price >= ceiling and j not in context.buy_in: \n context.current_buy.append(j)\n print(dt,data.current_dt,'上穿买入:',j)\n elif len(context.current_buy) == len(buy_cash_weights):\n break\n \n \n for i, instrument in enumerate(context.current_buy):\n cash = cash_for_buy * buy_cash_weights[i]\n context.order_value(context.symbol(instrument), cash)\n context.trigger_upperline_cnt += 1\n \n # 买入的记录起来\n context.buy_in.append(instrument)\n \n \n \n \n \n \n \n \n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"prepare","Value":"# 回测引擎:准备数据,只执行一次\ndef bigquant_run(context):\n pass\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"before_trading_start","Value":"# 回测引擎:每个单位时间开始前调用一次,即每日开盘前调用一次。\ndef bigquant_run(context, data):\n pass\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"volume_limit","Value":"0.4","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"order_price_field_buy","Value":"open","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"order_price_field_sell","Value":"open","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"capital_base","Value":"50000","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"auto_cancel_non_tradable_orders","Value":"True","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"data_frequency","Value":"minute","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"price_type","Value":"真实价格","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"product_type","Value":"股票","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"plot_charts","Value":"True","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"backtest_only","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"benchmark","Value":"","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"instruments","NodeId":"-553"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"options_data","NodeId":"-553"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"history_ds","NodeId":"-553"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"benchmark_ds","NodeId":"-553"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"trading_calendar","NodeId":"-553"}],"OutputPortsInternal":[{"Name":"raw_perf","NodeId":"-553","OutputType":null}],"UsePreviousResults":false,"moduleIdForCode":10,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-281","ModuleId":"BigQuantSpace.cached.cached-v3","ModuleParameters":[{"Name":"run","Value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n \n # 示例代码如下。在这里编写您的代码\n #df = DataSource('01eebc8389fa491690f2e1826393127dT').read()\n df = input_2.read_df()\n \n my_dict = input_1.read_pickle()\n\n start_date = my_dict['start_date']\n end_date = my_dict['end_date']\n \n part_df = df[(df['date']>=start_date) & (df['date']<= end_date)]\n \n tmp = part_df.groupby('date').apply(lambda x:x.head(2)) # 先看前三\n \n\n ins = list(set(tmp['instrument'].tolist()))\n \n \n my_dict['instruments'] = ins\n \n data_1 = DataSource.write_pickle(my_dict)\n \n tmp.index= tmp.index.droplevel(0) \n data_2 = DataSource.write_df(tmp)\n \n return Outputs(data_1=data_1, data_2=data_2)\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"post_run","Value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"input_ports","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"params","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"output_ports","Value":"","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_1","NodeId":"-281"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_2","NodeId":"-281"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_3","NodeId":"-281"}],"OutputPortsInternal":[{"Name":"data_1","NodeId":"-281","OutputType":null},{"Name":"data_2","NodeId":"-281","OutputType":null},{"Name":"data_3","NodeId":"-281","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":11,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-293","ModuleId":"BigQuantSpace.cached.cached-v3","ModuleParameters":[{"Name":"run","Value":"# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端\ndef bigquant_run(input_1, input_2, input_3):\n # 示例代码如下。在这里编写您的代码\n data_1 = input_1.read_df()\n data_2 = input_2.read_df()\n dict_ = {}\n dict_['pred_df'] = data_1\n dict_['indice_df'] = data_2\n \n data_1 = DataSource.write_pickle(dict_)\n \n return Outputs(data_1=data_1)","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"post_run","Value":"# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。\ndef bigquant_run(outputs):\n return outputs\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"input_ports","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"params","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"output_ports","Value":"","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_1","NodeId":"-293"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_2","NodeId":"-293"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_3","NodeId":"-293"}],"OutputPortsInternal":[{"Name":"data_1","NodeId":"-293","OutputType":null},{"Name":"data_2","NodeId":"-293","OutputType":null},{"Name":"data_3","NodeId":"-293","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":12,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-12","ModuleId":"BigQuantSpace.input_features.input_features-v1","ModuleParameters":[{"Name":"features","Value":"rank_avg_amount_5\nrank_avg_turn_5\nrank_volatility_5_0\nrank_swing_volatility_5_0\nrank_avg_mf_net_amount_5\nrank_beta_industry_5_0\nrank_return_5\nrank_return_2\nsum(max(high_0 - ((close_0 + high_0 + low_0) / 3), 0), 20) / sum(max(((close_0 + high_0 + low_0) / 3) - low_0, 0), 20) *100\n","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features_ds","NodeId":"-12"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-12","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":13,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-4","ModuleId":"BigQuantSpace.instruments.instruments-v2","ModuleParameters":[{"Name":"start_date","Value":"2010-01-01","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"2015-01-01","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"market","Value":"CN_STOCK_A","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_list","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"max_count","Value":0,"ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"rolling_conf","NodeId":"-4"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-4","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":14,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-37","ModuleId":"BigQuantSpace.input_features.input_features-v1","ModuleParameters":[{"Name":"features","Value":"st_status_0\nlist_days_0\nlist_board_0","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features_ds","NodeId":"-37"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-37","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":15,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-42","ModuleId":"BigQuantSpace.general_feature_extractor.general_feature_extractor-v7","ModuleParameters":[{"Name":"start_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"before_start_days","Value":"","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"instruments","NodeId":"-42"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-42"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-42","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":16,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-16","ModuleId":"BigQuantSpace.advanced_auto_labeler.advanced_auto_labeler-v2","ModuleParameters":[{"Name":"label_expr","Value":"# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)\nshift(close, -1) / shift(open, -1)\n\n# 极值处理:用1%和99%分位的值做clip\nclip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))\n\n# 将分数映射到分类,这里使用20个分类\nall_wbins(label, 20)\n\n# 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)\nwhere(shift(high, -1) == shift(low, -1), NaN, label)","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"start_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"benchmark","Value":"000300.SHA","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"drop_na_label","Value":"True","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"cast_label_int","Value":"True","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"user_functions","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"instruments","NodeId":"-16"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-16","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":17,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-49","ModuleId":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","ModuleParameters":[{"Name":"date_col","Value":"date","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_col","Value":"instrument","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"drop_na","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"remove_extra_columns","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"user_functions","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-49"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-49"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-49","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":18,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-58","ModuleId":"BigQuantSpace.filter.filter-v3","ModuleParameters":[{"Name":"expr","Value":"st_status_0==0 and list_board_0!=3","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"output_left_data","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-58"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-58","OutputType":null},{"Name":"left_data","NodeId":"-58","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":19,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-73","ModuleId":"BigQuantSpace.join.join-v3","ModuleParameters":[{"Name":"on","Value":"date,instrument","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"how","Value":"inner","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"sort","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"data1","NodeId":"-73"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"data2","NodeId":"-73"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-73","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":20,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-455","ModuleId":"BigQuantSpace.filter.filter-v3","ModuleParameters":[{"Name":"expr","Value":"st_status_0==0 and list_board_0!=3 and instrument!='000033.SZA' and list_days_0 > 30","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"output_left_data","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-455"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-455","OutputType":null},{"Name":"left_data","NodeId":"-455","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":24,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-446","ModuleId":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","ModuleParameters":[{"Name":"date_col","Value":"date","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_col","Value":"instrument","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"drop_na","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"remove_extra_columns","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"user_functions","Value":"{}","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-446"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-446"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-446","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":25,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-439","ModuleId":"BigQuantSpace.general_feature_extractor.general_feature_extractor-v7","ModuleParameters":[{"Name":"start_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"before_start_days","Value":"40","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"instruments","NodeId":"-439"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-439"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-439","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":26,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-430","ModuleId":"BigQuantSpace.instruments.instruments-v2","ModuleParameters":[{"Name":"start_date","Value":"2019-01-21","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"2019-08-21","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"market","Value":"CN_STOCK_A","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"instrument_list","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"max_count","Value":0,"ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"rolling_conf","NodeId":"-430"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-430","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":27,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-465","ModuleId":"BigQuantSpace.stock_ranker_predict.stock_ranker_predict-v5","ModuleParameters":[{"Name":"m_lazy_run","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"model","NodeId":"-465"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"data","NodeId":"-465"}],"OutputPortsInternal":[{"Name":"predictions","NodeId":"-465","OutputType":null},{"Name":"m_lazy_run","NodeId":"-465","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":28,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-222","ModuleId":"BigQuantSpace.dropnan.dropnan-v2","ModuleParameters":[],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-222"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-222"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-222","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":29,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-230","ModuleId":"BigQuantSpace.stock_ranker_train.stock_ranker_train-v6","ModuleParameters":[{"Name":"learning_algorithm","Value":"排序","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"number_of_leaves","Value":30,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"minimum_docs_per_leaf","Value":1000,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"number_of_trees","Value":20,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"learning_rate","Value":0.1,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"max_bins","Value":1023,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"feature_fraction","Value":1,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"data_row_fraction","Value":1,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"ndcg_discount_base","Value":1,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"m_lazy_run","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"training_ds","NodeId":"-230"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-230"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"test_ds","NodeId":"-230"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"base_model","NodeId":"-230"}],"OutputPortsInternal":[{"Name":"model","NodeId":"-230","OutputType":null},{"Name":"feature_gains","NodeId":"-230","OutputType":null},{"Name":"m_lazy_run","NodeId":"-230","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":30,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-244","ModuleId":"BigQuantSpace.dropnan.dropnan-v2","ModuleParameters":[],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"input_data","NodeId":"-244"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"features","NodeId":"-244"}],"OutputPortsInternal":[{"Name":"data","NodeId":"-244","OutputType":null}],"UsePreviousResults":true,"moduleIdForCode":31,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true},{"Id":"-473","ModuleId":"BigQuantSpace.trade.trade-v4","ModuleParameters":[{"Name":"start_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"end_date","Value":"","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"initialize","Value":"# 回测引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n # 加载预测数据\n context.ranker_prediction = context.options['data'].read_df()\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 = 2\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.5\n context.options['hold_days'] = 1","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"handle_data","Value":"# 回测引擎:每日数据处理函数,每天执行一次\ndef bigquant_run(context, data):\n # 按日期过滤得到今日的预测数据\n ranker_prediction = context.ranker_prediction[\n context.ranker_prediction.date == data.current_dt.strftime('%Y-%m-%d')]\n \n #大盘风控模块,以上证指数5日涨幅为例,如果大盘下跌较多,全部卖出并结束当日操作\n today_date = data.current_dt.strftime('%Y-%m-%d')\n \n start = (data.current_dt - datetime.timedelta(20)).strftime('%Y-%m-%d')\n bm_df = DataSource('bar1d_index_CN_STOCK_A').read(['000001.HIX'], start, today_date, ['close']) \n price = list(bm_df['close'])\n dif_big = price[-1]/price[-5]\n\n # 生成卖出订单\n hold_pos = context.portfolio.positions\n stocks = hold_pos.keys()\n for i in stocks:\n# curr = data.current(i, 'close')\n# if not np.isnan(curr) and curr / hold_pos[i].cost_basis < 0.91:\n# cut_cash = True\n context.order_target(i, 0)\n\n if dif_big > 0.96:\n cash_avg = context.portfolio.portfolio_value / 2\n cash_for_buy = min(context.portfolio.cash, cash_avg)\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 buy_cash_weights = context.stock_weights\n buy_instruments = list(ranker_prediction.instrument[:20])\n buy = []\n for i in buy_instruments:\n \n df_close = data.history(context.symbols(i), 'close', 5, '1d')\n diff_close = df_close[context.symbol(i)][-1]/df_close[context.symbol(i)][-2]\n if len(buy) < len(buy_cash_weights) and diff_close > 0.9:\n buy.append(i)\n elif len(buy) == len(buy_cash_weights):\n break\n \n buy_instruments = buy\n for i, instrument in enumerate(buy_instruments):\n cash = cash_for_buy * buy_cash_weights[i]\n context.order_value(context.symbol(instrument), cash)","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"prepare","Value":"# 回测引擎:准备数据,只执行一次\ndef bigquant_run(context):\n pass\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"before_trading_start","Value":"# 回测引擎:每个单位时间开始前调用一次,即每日开盘前调用一次。\ndef bigquant_run(context, data):\n pass\n","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"volume_limit","Value":0.025,"ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"order_price_field_buy","Value":"open","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"order_price_field_sell","Value":"close","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"capital_base","Value":"50000","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"auto_cancel_non_tradable_orders","Value":"True","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"data_frequency","Value":"daily","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"price_type","Value":"真实价格","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"product_type","Value":"股票","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"plot_charts","Value":"True","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"backtest_only","Value":"False","ValueType":"Literal","LinkedGlobalParameter":null},{"Name":"benchmark","Value":"","ValueType":"Literal","LinkedGlobalParameter":null}],"InputPortsInternal":[{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"instruments","NodeId":"-473"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"options_data","NodeId":"-473"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"history_ds","NodeId":"-473"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"benchmark_ds","NodeId":"-473"},{"DataSourceId":null,"TrainedModelId":null,"TransformModuleId":null,"Name":"trading_calendar","NodeId":"-473"}],"OutputPortsInternal":[{"Name":"raw_perf","NodeId":"-473","OutputType":null}],"UsePreviousResults":false,"moduleIdForCode":1,"IsPartOfPartialRun":null,"Comment":"","CommentCollapsed":true}],"SerializedClientData":"<?xml version='1.0' encoding='utf-16'?><DataV1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><Meta /><NodePositions><NodePosition Node='-1216' Position='1688,67,200,200'/><NodePosition Node='-1221' Position='1515,265,200,200'/><NodePosition Node='-1228' Position='1789,386,200,200'/><NodePosition Node='-1236' Position='2020,281,200,200'/><NodePosition Node='-1241' Position='1807,489,200,200'/><NodePosition Node='-1253' Position='1894,643,200,200'/><NodePosition Node='-1261' Position='2191,516.88232421875,200,200'/><NodePosition Node='-1266' Position='1893,726,200,200'/><NodePosition Node='-553' Position='1453,1088,200,200'/><NodePosition Node='-281' Position='1167,939,200,200'/><NodePosition Node='-293' Position='1604,882,200,200'/><NodePosition Node='-12' Position='581,2,200,200'/><NodePosition Node='-4' Position='147,79,200,200'/><NodePosition Node='-37' Position='637,152,200,200'/><NodePosition Node='-42' Position='320,258,200,200'/><NodePosition Node='-16' Position='119,399,200,200'/><NodePosition Node='-49' Position='414,401,200,200'/><NodePosition Node='-58' Position='376,509,200,200'/><NodePosition Node='-73' Position='213,611,200,200'/><NodePosition Node='-455' Position='780,461,200,200'/><NodePosition Node='-446' Position='771,367,200,200'/><NodePosition Node='-439' Position='781,284,200,200'/><NodePosition Node='-430' Position='1253,-28,200,200'/><NodePosition Node='-465' Position='798.82373046875,861.35302734375,200,200'/><NodePosition Node='-222' Position='290,720,200,200'/><NodePosition Node='-230' Position='393.88232421875,804,200,200'/><NodePosition Node='-244' Position='744,588,200,200'/><NodePosition Node='-473' Position='682,1017.88232421875,200,200'/></NodePositions><NodeGroups /></DataV1>"},"IsDraft":true,"ParentExperimentId":null,"WebService":{"IsWebServiceExperiment":false,"Inputs":[],"Outputs":[],"Parameters":[{"Name":"交易日期","Value":"","ParameterDefinition":{"Name":"交易日期","FriendlyName":"交易日期","DefaultValue":"","ParameterType":"String","HasDefaultValue":true,"IsOptional":true,"ParameterRules":[],"HasRules":false,"MarkupType":0,"CredentialDescriptor":null}}],"WebServiceGroupId":null,"SerializedClientData":"<?xml version='1.0' encoding='utf-16'?><DataV1 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><Meta /><NodePositions></NodePositions><NodeGroups /></DataV1>"},"DisableNodesUpdate":false,"Category":"user","Tags":[],"IsPartialRun":true}
    In [1]:
    # 本代码由可视化策略环境自动生成 2021年6月24日16:33
    # 本代码单元只能在可视化模式下编辑。您也可以拷贝代码,粘贴到新建的代码单元或者策略,然后修改。
    
    
    # Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
    def m7_run_bigquant_run(input_1, input_2, input_3):
        # 示例代码如下。在这里编写您的代码
        df = input_1.read()
        df = df[['date','instrument','low','high','close','amplitude']]
        data_1 = DataSource.write_df(df)
        return Outputs(data_1=data_1)
    
    # 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
    def m7_post_run_bigquant_run(outputs):
        return outputs
    
    # Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
    def m11_run_bigquant_run(input_1, input_2, input_3):
        
        # 示例代码如下。在这里编写您的代码
        #df  = DataSource('01eebc8389fa491690f2e1826393127dT').read()
        df = input_2.read_df()
        
        my_dict = input_1.read_pickle()
    
        start_date = my_dict['start_date']
        end_date = my_dict['end_date']
        
        part_df = df[(df['date']>=start_date) & (df['date']<= end_date)]
       
        tmp = part_df.groupby('date').apply(lambda x:x.head(2)) # 先看前三
        
    
        ins = list(set(tmp['instrument'].tolist()))
        
      
        my_dict['instruments'] = ins
        
        data_1 = DataSource.write_pickle(my_dict)
        
        tmp.index= tmp.index.droplevel(0)   
        data_2 = DataSource.write_df(tmp)
       
        return Outputs(data_1=data_1, data_2=data_2)
    
    # 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
    def m11_post_run_bigquant_run(outputs):
        return outputs
    
    # Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
    def m12_run_bigquant_run(input_1, input_2, input_3):
        # 示例代码如下。在这里编写您的代码
        data_1 = input_1.read_df()
        data_2 = input_2.read_df()
        dict_ = {}
        dict_['pred_df'] = data_1
        dict_['indice_df'] = data_2
        
        data_1 = DataSource.write_pickle(dict_)
        
        return Outputs(data_1=data_1)
    # 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
    def m12_post_run_bigquant_run(outputs):
        return outputs
    
    # 回测引擎:初始化函数,只执行一次
    def m10_initialize_bigquant_run(context):
        # 加载预测数据
       
        context.indice_data = context.options['data'].read_pickle()['indice_df'].set_index('date')
        context.pred_data = context.options['data'].read_pickle()['pred_df'].set_index('date')
       
        context.current_date_indice = pd.DataFrame()
        context.current_dt = None 
        context.dif_big = None
        context.bar_index = 0
        
        context.current_buy = []
        context.dt_lst = []
        
        # 获取上证指数
        context.bm_df = DataSource('bar1d_index_CN_STOCK_A').read(['000001.HIX'],start_date=context.start_date).set_index('date')
        
        
        context.stock_count = 2
        context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, context.stock_count)])
        # 设置每只股票占用的最大资金比例
        context.max_cash_per_instrument = 0.5
        context.options['hold_days'] = 1
        
        context.trigger_upperline_cnt = 0 # 累计触发买入的次数
        context.trigger_lowerline_cnt = 0 # 累计触发卖出的次数
    # 回测引擎:每日数据处理函数,每天执行一次
    def m10_handle_data_bigquant_run(context, data):
        
        dt = data.current_dt.strftime("%Y-%m-%d") # 获取当前分钟日期数据
        context.is_buy = True # 当前分钟是能买还是不能买的状态
        
        # 每天开盘第一分钟
        if dt != context.current_dt:  
            print('\n')
            context.bar_index += 1
            context.current_dt = dt
            context.dt_lst.append(context.current_dt)
            
            # 当天第一分钟,买入列表和卖出列表重置为空
            context.buy_in = []
            context.sell_out = []
        
            # 当天指标数据
            context.current_indice = context.indice_data.loc[context.current_dt] 
            
            # 当天排序预测数据(要买入的5只股票)
            try:
                tmp  = context.pred_data.loc[context.current_dt] # 预测数据中当天的预买入数据,多只的话是DataFrame,单只的话是Series
                if type(tmp) == pd.DataFrame:
                    context.pred = context.pred_data.loc[context.current_dt].instrument[:context.stock_count].tolist()
                elif type(tmp) == pd.Series:
                    context.pred = [context.pred_data.loc[context.current_dt].instrument]
                    
            except KeyError as e:
                context.is_buy = False
            
            # 昨日持仓数据
            context.yes_position = {}
            hold_pos = context.portfolio.positions 
            for s in list(hold_pos.keys()):
                amount = hold_pos[s].amount
                if amount != 0:
                    context.yes_position[s] = amount
                
     
            # 大盘风控。计算大盘最近5日的收益率指标
            if len(context.dt_lst) >=5:
                end = context.dt_lst[-1]
                start = context.dt_lst[-5]
                big_prices = context.bm_df.loc[start:end]['close'].tolist()
                context.dif_big =  big_prices[-1]/ big_prices[0] # 大盘指数最近5日涨幅
            else:
                st = (data.current_dt-datetime.timedelta(15)).strftime('%Y-%m-%d')
                context.bm_df = DataSource('bar1d_index_CN_STOCK_A').read(['000001.HIX'],start_date=st).set_index('date')
                big_prices= context.bm_df.loc[:dt].close.tolist()
                context.dif_big =  big_prices[-1]/ big_prices[0]
                
            print('大盘监控指标为:', dt, data.current_dt, context.dif_big )
            print(dt, data.current_dt, '昨日持仓为:',context.yes_position, '今日预买:',  context.pred, '触发看多次数:', context.trigger_upperline_cnt,
                 '触发看跌次数:',  context.trigger_lowerline_cnt)
            
           
        # 先卖出  只能用昨日持仓
        stocks = context.yes_position.keys()
        for i in stocks:
            if i.symbol not in context.sell_out: # 并不是今天已经卖出的股票
                amount = context.yes_position[i] 
                current_signal = context.current_indice[context.current_indice['instrument']==i.symbol]
                try: # 当天可能停牌
                    floor = current_signal['floor'].tolist()[0]
                    ceiling = current_signal['ceiling'].tolist()[0]
                    price = data.current(i, 'price')
                except :
                    continue 
                if price <= floor:
           
                    context.order(i, -1*abs(amount))
                    context.sell_out.append(i.symbol) 
                    
                    context.trigger_lowerline_cnt += 1
                    print(dt,data.current_dt,'下穿提前卖出:',i)
                
                elif data.current_dt.hour >= 14 and data.current_dt.minute ==55:
                    #没有出现卖出信号的话 就收盘的时候卖出
                    context.order(i, -1*abs(amount))
                    context.sell_out.append(i.symbol) 
                    print(dt,data.current_dt,'最后收盘卖出:', i, i.symbol, amount)
                    
           
        # 买入     
        if  context.dif_big > 0.96 and context.is_buy:
            cash_avg = context.portfolio.portfolio_value / 2
            cash_for_buy = min(context.portfolio.cash, cash_avg)
            
            buy_cash_weights = context.stock_weights
            buy_instruments = context.pred
            context.current_buy = [] 
            for j in buy_instruments:
                current_signal = context.current_indice[context.current_indice['instrument']==j]
    
                floor = current_signal['floor'].tolist()[0]
                ceiling = current_signal['ceiling'].tolist()[0]
                sid = context.symbol(j)
                price = data.current(sid, 'price')
                
                if len( context.current_buy) < len(buy_cash_weights) and price >= ceiling and j not in context.buy_in:    
                    context.current_buy.append(j)
                    print(dt,data.current_dt,'上穿买入:',j)
                elif len(context.current_buy) == len(buy_cash_weights):
                    break
        
        
            for i, instrument in enumerate(context.current_buy):
                cash = cash_for_buy * buy_cash_weights[i]
                context.order_value(context.symbol(instrument), cash)
                context.trigger_upperline_cnt += 1
       
                # 买入的记录起来
                context.buy_in.append(instrument)
        
        
       
        
        
        
        
         
    
    # 回测引擎:准备数据,只执行一次
    def m10_prepare_bigquant_run(context):
        pass
    
    # 回测引擎:每个单位时间开始前调用一次,即每日开盘前调用一次。
    def m10_before_trading_start_bigquant_run(context, data):
        pass
    
    # 回测引擎:初始化函数,只执行一次
    def m1_initialize_bigquant_run(context):
        # 加载预测数据
        context.ranker_prediction = context.options['data'].read_df()
        # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数
        context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
        # 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)
        # 设置买入的股票数量,这里买入预测股票列表排名靠前的5只
        stock_count = 2
        # 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]
        context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])
        # 设置每只股票占用的最大资金比例
        context.max_cash_per_instrument = 0.5
        context.options['hold_days'] = 1
    # 回测引擎:每日数据处理函数,每天执行一次
    def m1_handle_data_bigquant_run(context, data):
        # 按日期过滤得到今日的预测数据
        ranker_prediction = context.ranker_prediction[
            context.ranker_prediction.date == data.current_dt.strftime('%Y-%m-%d')]
     
        #大盘风控模块,以上证指数5日涨幅为例,如果大盘下跌较多,全部卖出并结束当日操作
        today_date = data.current_dt.strftime('%Y-%m-%d')
        
        start = (data.current_dt - datetime.timedelta(20)).strftime('%Y-%m-%d')
        bm_df = DataSource('bar1d_index_CN_STOCK_A').read(['000001.HIX'], start, today_date, ['close']) 
        price = list(bm_df['close'])
        dif_big = price[-1]/price[-5]
    
        # 生成卖出订单
        hold_pos = context.portfolio.positions
        stocks = hold_pos.keys()
        for i in stocks:
    #         curr = data.current(i, 'close')
    #         if not np.isnan(curr) and curr / hold_pos[i].cost_basis < 0.91:
    #             cut_cash = True
            context.order_target(i, 0)
    
        if dif_big > 0.96:
            cash_avg = context.portfolio.portfolio_value / 2
            cash_for_buy = min(context.portfolio.cash, cash_avg)
            positions = {e.symbol: p.amount * p.last_sale_price
                         for e, p in context.perf_tracker.position_tracker.positions.items()}
    
            # 生成买入订单
            buy_cash_weights = context.stock_weights
            buy_instruments = list(ranker_prediction.instrument[:20])
            buy = []
            for i in buy_instruments:
               
                df_close = data.history(context.symbols(i), 'close', 5, '1d')
                diff_close = df_close[context.symbol(i)][-1]/df_close[context.symbol(i)][-2]
                if len(buy) < len(buy_cash_weights) and diff_close > 0.9:
                    buy.append(i)
                elif len(buy) == len(buy_cash_weights):
                    break
     
            buy_instruments = buy
            for i, instrument in enumerate(buy_instruments):
                cash = cash_for_buy * buy_cash_weights[i]
                context.order_value(context.symbol(instrument), cash)
    # 回测引擎:准备数据,只执行一次
    def m1_prepare_bigquant_run(context):
        pass
    
    # 回测引擎:每个单位时间开始前调用一次,即每日开盘前调用一次。
    def m1_before_trading_start_bigquant_run(context, data):
        pass
    
    
    m2 = M.input_features.v1(
        features="""
    # #号开始的表示注释,注释需单独一行
    # 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征
    low = low_1/adjust_factor_1
    high = high_1/adjust_factor_1
    adjust_factor_1
    close = close_1/adjust_factor_1
    """
    )
    
    m5 = M.input_features.v1(
        features="""
    # #号开始的表示注释,注释需单独一行
    # 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征
    amplitude = high - low"""
    )
    
    m8 = M.input_features.v1(
        features="""# 通道倍数的参数可以改,比如改成 0.5
    ceiling = close + 1.5 * amplitude
    floor = close - 1.5 * amplitude"""
    )
    
    m13 = M.input_features.v1(
        features="""rank_avg_amount_5
    rank_avg_turn_5
    rank_volatility_5_0
    rank_swing_volatility_5_0
    rank_avg_mf_net_amount_5
    rank_beta_industry_5_0
    rank_return_5
    rank_return_2
    sum(max(high_0 - ((close_0 + high_0 + low_0) / 3), 0), 20) / sum(max(((close_0 + high_0 + low_0) / 3) - low_0, 0), 20) *100
    """
    )
    
    m15 = M.input_features.v1(
        features_ds=m13.data,
        features="""st_status_0
    list_days_0
    list_board_0"""
    )
    
    m14 = M.instruments.v2(
        start_date='2010-01-01',
        end_date='2015-01-01',
        market='CN_STOCK_A',
        instrument_list='',
        max_count=0
    )
    
    m16 = M.general_feature_extractor.v7(
        instruments=m14.data,
        features=m15.data,
        start_date='',
        end_date=''
    )
    
    m18 = M.derived_feature_extractor.v3(
        input_data=m16.data,
        features=m15.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m19 = M.filter.v3(
        input_data=m18.data,
        expr='st_status_0==0 and list_board_0!=3',
        output_left_data=False
    )
    
    m17 = M.advanced_auto_labeler.v2(
        instruments=m14.data,
        label_expr="""# 计算收益:5日收盘价(作为卖出价格)除以明日开盘价(作为买入价格)
    shift(close, -1) / shift(open, -1)
    
    # 极值处理:用1%和99%分位的值做clip
    clip(label, all_quantile(label, 0.01), all_quantile(label, 0.99))
    
    # 将分数映射到分类,这里使用20个分类
    all_wbins(label, 20)
    
    # 过滤掉一字涨停的情况 (设置label为NaN,在后续处理和训练中会忽略NaN的label)
    where(shift(high, -1) == shift(low, -1), NaN, label)""",
        start_date='',
        end_date='',
        benchmark='000300.SHA',
        drop_na_label=True,
        cast_label_int=True,
        user_functions={}
    )
    
    m20 = M.join.v3(
        data1=m17.data,
        data2=m19.data,
        on='date,instrument',
        how='inner',
        sort=False
    )
    
    m29 = M.dropnan.v2(
        input_data=m20.data
    )
    
    m30 = M.stock_ranker_train.v6(
        training_ds=m29.data,
        features=m13.data,
        learning_algorithm='排序',
        number_of_leaves=30,
        minimum_docs_per_leaf=1000,
        number_of_trees=20,
        learning_rate=0.1,
        max_bins=1023,
        feature_fraction=1,
        data_row_fraction=1,
        ndcg_discount_base=1,
        m_lazy_run=False
    )
    
    m27 = M.instruments.v2(
        start_date='2019-01-21',
        end_date='2019-08-21',
        market='CN_STOCK_A',
        instrument_list='',
        max_count=0
    )
    
    m26 = M.general_feature_extractor.v7(
        instruments=m27.data,
        features=m15.data,
        start_date='',
        end_date='',
        before_start_days=40
    )
    
    m25 = M.derived_feature_extractor.v3(
        input_data=m26.data,
        features=m15.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m24 = M.filter.v3(
        input_data=m25.data,
        expr='st_status_0==0 and list_board_0!=3 and instrument!=\'000033.SZA\' and list_days_0 > 30',
        output_left_data=False
    )
    
    m31 = M.dropnan.v2(
        input_data=m24.data
    )
    
    m28 = M.stock_ranker_predict.v5(
        model=m30.model,
        data=m31.data,
        m_lazy_run=False
    )
    
    m3 = M.general_feature_extractor.v7(
        instruments=m27.data,
        features=m2.data,
        start_date='',
        end_date='',
        before_start_days=5
    )
    
    m4 = M.derived_feature_extractor.v3(
        input_data=m3.data,
        features=m2.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m6 = M.derived_feature_extractor.v3(
        input_data=m4.data,
        features=m5.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m7 = M.cached.v3(
        input_1=m6.data,
        run=m7_run_bigquant_run,
        post_run=m7_post_run_bigquant_run,
        input_ports='',
        params='{}',
        output_ports=''
    )
    
    m9 = M.derived_feature_extractor.v3(
        input_data=m7.data_1,
        features=m8.data,
        date_col='date',
        instrument_col='instrument',
        drop_na=False,
        remove_extra_columns=False,
        user_functions={}
    )
    
    m11 = M.cached.v3(
        input_1=m27.data,
        input_2=m28.predictions,
        run=m11_run_bigquant_run,
        post_run=m11_post_run_bigquant_run,
        input_ports='',
        params='{}',
        output_ports=''
    )
    
    m12 = M.cached.v3(
        input_1=m11.data_2,
        input_2=m9.data,
        run=m12_run_bigquant_run,
        post_run=m12_post_run_bigquant_run,
        input_ports='',
        params='{}',
        output_ports=''
    )
    
    m10 = M.trade.v4(
        instruments=m11.data_1,
        options_data=m12.data_1,
        start_date='',
        end_date='',
        initialize=m10_initialize_bigquant_run,
        handle_data=m10_handle_data_bigquant_run,
        prepare=m10_prepare_bigquant_run,
        before_trading_start=m10_before_trading_start_bigquant_run,
        volume_limit=0.4,
        order_price_field_buy='open',
        order_price_field_sell='open',
        capital_base=50000,
        auto_cancel_non_tradable_orders=True,
        data_frequency='minute',
        price_type='真实价格',
        product_type='股票',
        plot_charts=True,
        backtest_only=False,
        benchmark=''
    )
    
    m1 = M.trade.v4(
        instruments=m27.data,
        options_data=m28.predictions,
        start_date='',
        end_date='',
        initialize=m1_initialize_bigquant_run,
        handle_data=m1_handle_data_bigquant_run,
        prepare=m1_prepare_bigquant_run,
        before_trading_start=m1_before_trading_start_bigquant_run,
        volume_limit=0.025,
        order_price_field_buy='open',
        order_price_field_sell='close',
        capital_base=50000,
        auto_cancel_non_tradable_orders=True,
        data_frequency='daily',
        price_type='真实价格',
        product_type='股票',
        plot_charts=True,
        backtest_only=False,
        benchmark=''
    )
    
    设置评估测试数据集,查看训练曲线
    [视频教程]StockRanker训练曲线
    bigcharts-data-start/{"__type":"tabs","__id":"bigchart-332229d72b2649069fe798fdeed3c61f"}/bigcharts-data-end
    
    大盘监控指标为: 2019-01-21 2019-01-21 09:31:00+00:00 1.0305638333112783
    2019-01-21 2019-01-21 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000571.SZA', '600775.SHA'] 触发看多次数: 0 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-01-22 2019-01-22 09:31:00+00:00 1.01840262440544
    2019-01-22 2019-01-22 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000586.SZA', '002547.SZA'] 触发看多次数: 0 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-01-23 2019-01-23 09:31:00+00:00 1.021588287800159
    2019-01-23 2019-01-23 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600192.SHA', '600175.SHA'] 触发看多次数: 0 触发看跌次数: 0
    2019-01-23 2019-01-23 09:44:00+00:00 上穿买入: 600192.SHA
    
    
    大盘监控指标为: 2019-01-24 2019-01-24 09:31:00+00:00 1.0186093605064157
    2019-01-24 2019-01-24 09:31:00+00:00 昨日持仓为: {Equity(100 [600192.SHA]): 2800} 今日预买: ['002288.SZA', '600532.SHA'] 触发看多次数: 1 触发看跌次数: 0
    2019-01-24 2019-01-24 14:55:00+00:00 最后收盘卖出: Equity(100 [600192.SHA]) 600192.SHA 2800
    
    
    大盘监控指标为: 2019-01-25 2019-01-25 09:31:00+00:00 0.9966343226331141
    2019-01-25 2019-01-25 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002012.SZA', '002288.SZA'] 触发看多次数: 1 触发看跌次数: 0
    2019-01-25 2019-01-25 13:29:00+00:00 上穿买入: 002012.SZA
    
    
    大盘监控指标为: 2019-01-28 2019-01-28 09:31:00+00:00 1.0066956148449984
    2019-01-28 2019-01-28 09:31:00+00:00 昨日持仓为: {Equity(133 [002012.SZA]): 3300} 今日预买: ['601066.SHA', '601811.SHA'] 触发看多次数: 2 触发看跌次数: 0
    2019-01-28 2019-01-28 09:42:00+00:00 上穿买入: 601066.SHA
    2019-01-28 2019-01-28 14:55:00+00:00 最后收盘卖出: Equity(133 [002012.SZA]) 002012.SZA 3300
    
    
    大盘监控指标为: 2019-01-29 2019-01-29 09:31:00+00:00 1.0051334716826181
    2019-01-29 2019-01-29 09:31:00+00:00 昨日持仓为: {Equity(122 [601066.SHA]): 1200} 今日预买: ['601811.SHA', '603017.SHA'] 触发看多次数: 3 触发看跌次数: 0
    2019-01-29 2019-01-29 14:55:00+00:00 最后收盘卖出: Equity(122 [601066.SHA]) 601066.SHA 1200
    
    
    大盘监控指标为: 2019-01-30 2019-01-30 09:31:00+00:00 0.993780931549929
    2019-01-30 2019-01-30 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002079.SZA', '002943.SZA'] 触发看多次数: 3 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-01-31 2019-01-31 09:31:00+00:00 0.9934078776472063
    2019-01-31 2019-01-31 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002871.SZA', '002937.SZA'] 触发看多次数: 3 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-01 2019-02-01 09:31:00+00:00 1.008184753587334
    2019-02-01 2019-02-01 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002012.SZA', '603105.SHA'] 触发看多次数: 3 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-11 2019-02-11 09:31:00+00:00 1.022990170489296
    2019-02-11 2019-02-11 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000957.SZA', '600192.SHA'] 触发看多次数: 3 触发看跌次数: 0
    2019-02-11 2019-02-11 09:37:00+00:00 上穿买入: 000957.SZA
    
    
    大盘监控指标为: 2019-02-12 2019-02-12 09:31:00+00:00 1.0373967326403628
    2019-02-12 2019-02-12 09:31:00+00:00 昨日持仓为: {Equity(70 [000957.SZA]): 2700} 今日预买: ['603220.SHA', '000806.SZA'] 触发看多次数: 4 触发看跌次数: 0
    2019-02-12 2019-02-12 09:40:00+00:00 上穿买入: 000806.SZA
    2019-02-12 2019-02-12 14:55:00+00:00 最后收盘卖出: Equity(70 [000957.SZA]) 000957.SZA 2700
    
    
    大盘监控指标为: 2019-02-13 2019-02-13 09:31:00+00:00 1.052811770261285
    2019-02-13 2019-02-13 09:31:00+00:00 昨日持仓为: {Equity(148 [000806.SZA]): 4400} 今日预买: ['002243.SZA', '002451.SZA'] 触发看多次数: 5 触发看跌次数: 0
    2019-02-13 2019-02-13 14:55:00+00:00 最后收盘卖出: Equity(148 [000806.SZA]) 000806.SZA 4400
    
    
    大盘监控指标为: 2019-02-14 2019-02-14 09:31:00+00:00 1.038754210072844
    2019-02-14 2019-02-14 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002243.SZA', '600218.SHA'] 触发看多次数: 5 触发看跌次数: 0
    2019-02-14 2019-02-14 14:23:00+00:00 上穿买入: 600218.SHA
    
    
    大盘监控指标为: 2019-02-15 2019-02-15 09:31:00+00:00 1.010734789047426
    2019-02-15 2019-02-15 09:31:00+00:00 昨日持仓为: {Equity(1 [600218.SHA]): 1700} 今日预买: ['000785.SZA', '600192.SHA'] 触发看多次数: 6 触发看跌次数: 0
    2019-02-15 2019-02-15 14:55:00+00:00 最后收盘卖出: Equity(1 [600218.SHA]) 600218.SHA 1700
    
    
    大盘监控指标为: 2019-02-18 2019-02-18 09:31:00+00:00 1.0308630869464825
    2019-02-18 2019-02-18 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600192.SHA', '000785.SZA'] 触发看多次数: 6 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-19 2019-02-19 09:31:00+00:00 1.0127073752482618
    2019-02-19 2019-02-19 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002079.SZA', '002666.SZA'] 触发看多次数: 6 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-20 2019-02-20 09:31:00+00:00 1.0152660380608751
    2019-02-20 2019-02-20 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603105.SHA', '603822.SHA'] 触发看多次数: 6 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-21 2019-02-21 09:31:00+00:00 1.0258785593838708
    2019-02-21 2019-02-21 09:31:00+00:00 昨日持仓为: {} 今日预买: ['601208.SHA', '002341.SZA'] 触发看多次数: 6 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-22 2019-02-22 09:31:00+00:00 1.0181057265012947
    2019-02-22 2019-02-22 09:31:00+00:00 昨日持仓为: {} 今日预买: ['601208.SHA', '002341.SZA'] 触发看多次数: 6 触发看跌次数: 0
    
    
    大盘监控指标为: 2019-02-25 2019-02-25 09:31:00+00:00 1.074624045128937
    2019-02-25 2019-02-25 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002341.SZA', '002945.SZA'] 触发看多次数: 6 触发看跌次数: 0
    2019-02-25 2019-02-25 13:06:00+00:00 上穿买入: 002341.SZA
    
    
    大盘监控指标为: 2019-02-26 2019-02-26 09:31:00+00:00 1.0652962925663794
    2019-02-26 2019-02-26 09:31:00+00:00 昨日持仓为: {Equity(45 [002341.SZA]): 1200} 今日预买: ['002341.SZA', '002945.SZA'] 触发看多次数: 7 触发看跌次数: 0
    2019-02-26 2019-02-26 09:32:00+00:00 上穿买入: 002945.SZA
    2019-02-26 2019-02-26 14:55:00+00:00 最后收盘卖出: Equity(45 [002341.SZA]) 002341.SZA 1200
    
    
    大盘监控指标为: 2019-02-27 2019-02-27 09:31:00+00:00 1.0734148034073563
    2019-02-27 2019-02-27 09:31:00+00:00 昨日持仓为: {Equity(52 [002945.SZA]): 1100} 今日预买: ['002343.SZA'] 触发看多次数: 8 触发看跌次数: 0
    2019-02-27 2019-02-27 09:31:00+00:00 上穿买入: 002343.SZA
    2019-02-27 2019-02-27 14:55:00+00:00 最后收盘卖出: Equity(52 [002945.SZA]) 002945.SZA 1100
    
    
    大盘监控指标为: 2019-02-28 2019-02-28 09:31:00+00:00 1.0487576691536413
    2019-02-28 2019-02-28 09:31:00+00:00 昨日持仓为: {Equity(56 [002343.SZA]): 1500} 今日预买: ['002017.SZA', '002343.SZA'] 触发看多次数: 9 触发看跌次数: 0
    2019-02-28 2019-02-28 09:31:00+00:00 上穿买入: 002343.SZA
    2019-02-28 2019-02-28 14:55:00+00:00 最后收盘卖出: Equity(56 [002343.SZA]) 002343.SZA 1500
    
    
    大盘监控指标为: 2019-03-01 2019-03-01 09:31:00+00:00 1.0110497478980234
    2019-03-01 2019-03-01 09:31:00+00:00 昨日持仓为: {Equity(56 [002343.SZA]): 1500} 今日预买: ['002017.SZA', '600459.SHA'] 触发看多次数: 10 触发看跌次数: 0
    2019-03-01 2019-03-01 09:31:00+00:00 上穿买入: 002017.SZA
    2019-03-01 2019-03-01 09:33:00+00:00 下穿提前卖出: Equity(56 [002343.SZA])
    
    
    大盘监控指标为: 2019-03-04 2019-03-04 09:31:00+00:00 1.0292567069410001
    2019-03-04 2019-03-04 09:31:00+00:00 昨日持仓为: {Equity(155 [002017.SZA]): 1200} 今日预买: ['002565.SZA', '000859.SZA'] 触发看多次数: 11 触发看跌次数: 1
    2019-03-04 2019-03-04 14:55:00+00:00 最后收盘卖出: Equity(155 [002017.SZA]) 002017.SZA 1200
    
    
    大盘监控指标为: 2019-03-05 2019-03-05 09:31:00+00:00 1.0339974066986786
    2019-03-05 2019-03-05 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600218.SHA', '600775.SHA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-06 2019-03-06 09:31:00+00:00 1.0547935368877701
    2019-03-06 2019-03-06 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002668.SZA', '600086.SHA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-07 2019-03-07 09:31:00+00:00 1.0375460596550203
    2019-03-07 2019-03-07 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002733.SZA', '000070.SZA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-08 2019-03-08 09:31:00+00:00 0.9809371847267495
    2019-03-08 2019-03-08 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002848.SZA', '603098.SHA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-11 2019-03-11 09:31:00+00:00 0.9910766371808463
    2019-03-11 2019-03-11 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002870.SZA', '002848.SZA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-12 2019-03-12 09:31:00+00:00 0.9865279133852628
    2019-03-12 2019-03-12 09:31:00+00:00 昨日持仓为: {} 今日预买: ['601099.SHA', '002547.SZA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-13 2019-03-13 09:31:00+00:00 0.9744185896637882
    2019-03-13 2019-03-13 09:31:00+00:00 昨日持仓为: {} 今日预买: ['601099.SHA', '601700.SHA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-14 2019-03-14 09:31:00+00:00 1.0070116844418109
    2019-03-14 2019-03-14 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000727.SZA', '002668.SZA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-15 2019-03-15 09:31:00+00:00 0.9982685087406514
    2019-03-15 2019-03-15 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000727.SZA', '002668.SZA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-18 2019-03-18 09:31:00+00:00 1.0117995034550806
    2019-03-18 2019-03-18 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002668.SZA', '000727.SZA'] 触发看多次数: 11 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-19 2019-03-19 09:31:00+00:00 1.0211512088703754
    2019-03-19 2019-03-19 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002292.SZA', '002856.SZA'] 触发看多次数: 11 触发看跌次数: 1
    2019-03-19 2019-03-19 13:52:00+00:00 上穿买入: 002292.SZA
    
    
    大盘监控指标为: 2019-03-20 2019-03-20 09:31:00+00:00 1.0334222160833695
    2019-03-20 2019-03-20 09:31:00+00:00 昨日持仓为: {Equity(40 [002292.SZA]): 1800} 今日预买: ['002195.SZA', '603383.SHA'] 触发看多次数: 12 触发看跌次数: 1
    2019-03-20 2019-03-20 09:53:00+00:00 上穿买入: 002195.SZA
    2019-03-20 2019-03-20 14:55:00+00:00 最后收盘卖出: Equity(40 [002292.SZA]) 002292.SZA 1800
    
    
    大盘监控指标为: 2019-03-21 2019-03-21 09:31:00+00:00 1.0263767105894737
    2019-03-21 2019-03-21 09:31:00+00:00 昨日持仓为: {Equity(51 [002195.SZA]): 2700} 今日预买: ['002567.SZA', '603888.SHA'] 触发看多次数: 13 触发看跌次数: 1
    2019-03-21 2019-03-21 14:55:00+00:00 最后收盘卖出: Equity(51 [002195.SZA]) 002195.SZA 2700
    
    
    大盘监控指标为: 2019-03-22 2019-03-22 09:31:00+00:00 1.0024968213171
    2019-03-22 2019-03-22 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002567.SZA', '002565.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-25 2019-03-25 09:31:00+00:00 0.9844890864075211
    2019-03-25 2019-03-25 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600831.SHA', '600290.SHA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-26 2019-03-26 09:31:00+00:00 0.9697328351579393
    2019-03-26 2019-03-26 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600268.SHA', '600831.SHA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-27 2019-03-27 09:31:00+00:00 0.9746133367339549
    2019-03-27 2019-03-27 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600831.SHA', '600734.SHA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-28 2019-03-28 09:31:00+00:00 0.9648195581250615
    2019-03-28 2019-03-28 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600156.SHA', '600604.SHA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-03-29 2019-03-29 09:31:00+00:00 1.0156839686219539
    2019-03-29 2019-03-29 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002175.SZA', '600072.SHA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-01 2019-04-01 09:31:00+00:00 1.057811179981139
    2019-04-01 2019-04-01 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600422.SHA', '000638.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-02 2019-04-02 09:31:00+00:00 1.0509816648155865
    2019-04-02 2019-04-02 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600501.SHA', '002077.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-03 2019-04-03 09:31:00+00:00 1.073908511807989
    2019-04-03 2019-04-03 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600156.SHA', '002750.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-04 2019-04-04 09:31:00+00:00 1.0504126267946154
    2019-04-04 2019-04-04 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002300.SZA', '002565.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-08 2019-04-08 09:31:00+00:00 1.0234828831094644
    2019-04-08 2019-04-08 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002300.SZA', '002636.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-09 2019-04-09 09:31:00+00:00 1.0197811049973924
    2019-04-09 2019-04-09 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000996.SZA', '603602.SHA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-10 2019-04-10 09:31:00+00:00 1.007970277695861
    2019-04-10 2019-04-10 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002530.SZA', '000990.SZA'] 触发看多次数: 13 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-11 2019-04-11 09:31:00+00:00 0.982563335297545
    2019-04-11 2019-04-11 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600775.SHA', '603888.SHA'] 触发看多次数: 13 触发看跌次数: 1
    2019-04-11 2019-04-11 09:32:00+00:00 上穿买入: 600775.SHA
    
    
    大盘监控指标为: 2019-04-12 2019-04-12 09:31:00+00:00 0.9826847152187053
    2019-04-12 2019-04-12 09:31:00+00:00 昨日持仓为: {Equity(137 [600775.SHA]): 1100} 今日预买: ['600080.SHA', '600614.SHA'] 触发看多次数: 14 触发看跌次数: 1
    2019-04-12 2019-04-12 14:55:00+00:00 最后收盘卖出: Equity(137 [600775.SHA]) 600775.SHA 1100
    
    
    大盘监控指标为: 2019-04-15 2019-04-15 09:31:00+00:00 0.9809001178100755
    2019-04-15 2019-04-15 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002012.SZA', '601975.SHA'] 触发看多次数: 14 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-16 2019-04-16 09:31:00+00:00 1.003599081101699
    2019-04-16 2019-04-16 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600846.SHA', '603823.SHA'] 触发看多次数: 14 触发看跌次数: 1
    2019-04-16 2019-04-16 10:20:00+00:00 上穿买入: 600846.SHA
    
    
    大盘监控指标为: 2019-04-17 2019-04-17 09:31:00+00:00 1.0229331910004558
    2019-04-17 2019-04-17 09:31:00+00:00 昨日持仓为: {Equity(112 [600846.SHA]): 1400} 今日预买: ['002440.SZA', '600846.SHA'] 触发看多次数: 15 触发看跌次数: 1
    2019-04-17 2019-04-17 14:55:00+00:00 最后收盘卖出: Equity(112 [600846.SHA]) 600846.SHA 1400
    
    
    大盘监控指标为: 2019-04-18 2019-04-18 09:31:00+00:00 1.0193110428992214
    2019-04-18 2019-04-18 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002118.SZA', '000509.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-19 2019-04-19 09:31:00+00:00 1.0292690332227175
    2019-04-19 2019-04-19 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000592.SZA', '600733.SHA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-22 2019-04-22 09:31:00+00:00 0.9881499124654445
    2019-04-22 2019-04-22 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002118.SZA', '000957.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-23 2019-04-23 09:31:00+00:00 0.9802262218205648
    2019-04-23 2019-04-23 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600666.SHA', '000836.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-24 2019-04-24 09:31:00+00:00 0.9850509553795649
    2019-04-24 2019-04-24 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000836.SZA', '002617.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-25 2019-04-25 09:31:00+00:00 0.955065638410932
    2019-04-25 2019-04-25 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603079.SHA', '002057.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-26 2019-04-26 09:31:00+00:00 0.9599869813636976
    2019-04-26 2019-04-26 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000590.SZA', '002761.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-29 2019-04-29 09:31:00+00:00 0.9574515473108299
    2019-04-29 2019-04-29 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002274.SZA', '002547.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-04-30 2019-04-30 09:31:00+00:00 0.9614960106940699
    2019-04-30 2019-04-30 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600758.SHA', '002057.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-06 2019-05-06 09:31:00+00:00 0.9304180038877103
    2019-05-06 2019-05-06 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600758.SHA', '002057.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-07 2019-05-07 09:31:00+00:00 0.948157039809712
    2019-05-07 2019-05-07 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002467.SZA', '002321.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-08 2019-05-08 09:31:00+00:00 0.9449005635685094
    2019-05-08 2019-05-08 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600860.SHA', '002118.SZA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-09 2019-05-09 09:31:00+00:00 0.9261337806795784
    2019-05-09 2019-05-09 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002467.SZA', '603335.SHA'] 触发看多次数: 15 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-10 2019-05-10 09:31:00+00:00 1.0112668110724705
    2019-05-10 2019-05-10 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600213.SHA', '002958.SZA'] 触发看多次数: 15 触发看跌次数: 1
    2019-05-10 2019-05-10 14:13:00+00:00 上穿买入: 002958.SZA
    
    
    大盘监控指标为: 2019-05-13 2019-05-13 09:31:00+00:00 0.9922506133359896
    2019-05-13 2019-05-13 09:31:00+00:00 昨日持仓为: {Equity(21 [002958.SZA]): 1800} 今日预买: ['002157.SZA', '600448.SHA'] 触发看多次数: 16 触发看跌次数: 1
    2019-05-13 2019-05-13 14:55:00+00:00 最后收盘卖出: Equity(21 [002958.SZA]) 002958.SZA 1800
    
    
    大盘监控指标为: 2019-05-14 2019-05-14 09:31:00+00:00 0.9964938322309099
    2019-05-14 2019-05-14 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603128.SHA', '002871.SZA'] 触发看多次数: 16 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-15 2019-05-15 09:31:00+00:00 1.03077018329085
    2019-05-15 2019-05-15 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002605.SZA', '600530.SHA'] 触发看多次数: 16 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-16 2019-05-16 09:31:00+00:00 1.005613835094539
    2019-05-16 2019-05-16 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000723.SZA', '600518.SHA'] 触发看多次数: 16 触发看跌次数: 1
    2019-05-16 2019-05-16 13:38:00+00:00 上穿买入: 600518.SHA
    
    
    大盘监控指标为: 2019-05-17 2019-05-17 09:31:00+00:00 0.9926242740954406
    2019-05-17 2019-05-17 09:31:00+00:00 昨日持仓为: {Equity(123 [600518.SHA]): 2500} 今日预买: ['600518.SHA', '000957.SZA'] 触发看多次数: 17 触发看跌次数: 1
    2019-05-17 2019-05-17 14:55:00+00:00 最后收盘卖出: Equity(123 [600518.SHA]) 600518.SHA 2500
    
    
    大盘监控指标为: 2019-05-20 2019-05-20 09:31:00+00:00 0.9954896463707668
    2019-05-20 2019-05-20 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603335.SHA', '603970.SHA'] 触发看多次数: 17 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-21 2019-05-21 09:31:00+00:00 0.9888694070072465
    2019-05-21 2019-05-21 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002565.SZA', '002600.SZA'] 触发看多次数: 17 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-22 2019-05-22 09:31:00+00:00 0.9783448554308265
    2019-05-22 2019-05-22 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002870.SZA', '002547.SZA'] 触发看多次数: 17 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-23 2019-05-23 09:31:00+00:00 0.9896676953909004
    2019-05-23 2019-05-23 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002947.SZA', '603085.SHA'] 触发看多次数: 17 触发看跌次数: 1
    2019-05-23 2019-05-23 10:23:00+00:00 上穿买入: 002947.SZA
    
    
    大盘监控指标为: 2019-05-24 2019-05-24 09:31:00+00:00 0.9938655362699562
    2019-05-24 2019-05-24 09:31:00+00:00 昨日持仓为: {Equity(68 [002947.SZA]): 400} 今日预买: ['600366.SHA', '000815.SZA'] 触发看多次数: 18 触发看跌次数: 1
    2019-05-24 2019-05-24 14:55:00+00:00 最后收盘卖出: Equity(68 [002947.SZA]) 002947.SZA 400
    
    
    大盘监控指标为: 2019-05-27 2019-05-27 09:31:00+00:00 0.9953232201234528
    2019-05-27 2019-05-27 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600366.SHA', '002164.SZA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-28 2019-05-28 09:31:00+00:00 1.0062959593975966
    2019-05-28 2019-05-28 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002725.SZA', '002140.SZA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-29 2019-05-29 09:31:00+00:00 1.0217986232853868
    2019-05-29 2019-05-29 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603068.SHA', '002231.SZA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-30 2019-05-30 09:31:00+00:00 1.0185105649413946
    2019-05-30 2019-05-30 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000831.SZA', '600584.SHA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-05-31 2019-05-31 09:31:00+00:00 1.0021843170961937
    2019-05-31 2019-05-31 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600313.SHA', '600206.SHA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-06-03 2019-06-03 09:31:00+00:00 0.9931854148093371
    2019-06-03 2019-06-03 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603068.SHA', '603045.SHA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-06-04 2019-06-04 09:31:00+00:00 0.9820166458434476
    2019-06-04 2019-06-04 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603045.SHA', '603068.SHA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-06-05 2019-06-05 09:31:00+00:00 0.984724645798051
    2019-06-05 2019-06-05 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603189.SHA', '603085.SHA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-06-06 2019-06-06 09:31:00+00:00 0.9755413495376382
    2019-06-06 2019-06-06 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002417.SZA', '600281.SHA'] 触发看多次数: 18 触发看跌次数: 1
    
    
    大盘监控指标为: 2019-06-10 2019-06-10 09:31:00+00:00 0.9868686427537752
    2019-06-10 2019-06-10 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000657.SZA', '002842.SZA'] 触发看多次数: 18 触发看跌次数: 1
    2019-06-10 2019-06-10 10:41:00+00:00 上穿买入: 002842.SZA
    2019-06-10 2019-06-10 10:44:00+00:00 上穿买入: 000657.SZA
    
    
    大盘监控指标为: 2019-06-11 2019-06-11 09:31:00+00:00 1.022162761538396
    2019-06-11 2019-06-11 09:31:00+00:00 昨日持仓为: {Equity(139 [002842.SZA]): 1124.0, Equity(13 [000657.SZA]): 2400} 今日预买: ['002953.SZA', '002077.SZA'] 触发看多次数: 20 触发看跌次数: 1
    2019-06-11 2019-06-11 09:31:00+00:00 下穿提前卖出: Equity(139 [002842.SZA])
    2019-06-11 2019-06-11 14:55:00+00:00 最后收盘卖出: Equity(13 [000657.SZA]) 000657.SZA 2400
    
    
    大盘监控指标为: 2019-06-12 2019-06-12 09:31:00+00:00 1.0167614176652628
    2019-06-12 2019-06-12 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603909.SHA', '603042.SHA'] 触发看多次数: 20 触发看跌次数: 2
    2019-06-12 2019-06-12 09:45:00+00:00 上穿买入: 603909.SHA
    
    
    大盘监控指标为: 2019-06-13 2019-06-13 09:31:00+00:00 1.0293311726321932
    2019-06-13 2019-06-13 09:31:00+00:00 昨日持仓为: {Equity(39 [603909.SHA]): 600} 今日预买: ['600146.SHA', '603042.SHA'] 触发看多次数: 21 触发看跌次数: 2
    2019-06-13 2019-06-13 13:46:00+00:00 上穿买入: 600146.SHA
    2019-06-13 2019-06-13 14:55:00+00:00 最后收盘卖出: Equity(39 [603909.SHA]) 603909.SHA 600
    
    
    大盘监控指标为: 2019-06-14 2019-06-14 09:31:00+00:00 1.010463841743831
    2019-06-14 2019-06-14 09:31:00+00:00 昨日持仓为: {Equity(103 [600146.SHA]): 1300} 今日预买: ['600393.SHA', '002885.SZA'] 触发看多次数: 22 触发看跌次数: 2
    2019-06-14 2019-06-14 14:55:00+00:00 最后收盘卖出: Equity(103 [600146.SHA]) 600146.SHA 1300
    
    
    大盘监控指标为: 2019-06-17 2019-06-17 09:31:00+00:00 0.9869795174025058
    2019-06-17 2019-06-17 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002593.SZA', '603977.SHA'] 触发看多次数: 22 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-18 2019-06-18 09:31:00+00:00 0.9933932033372329
    2019-06-18 2019-06-18 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002905.SZA', '002828.SZA'] 触发看多次数: 22 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-19 2019-06-19 09:31:00+00:00 1.002426358533895
    2019-06-19 2019-06-19 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002902.SZA', '002057.SZA'] 触发看多次数: 22 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-20 2019-06-20 09:31:00+00:00 1.036483422051821
    2019-06-20 2019-06-20 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002902.SZA', '002952.SZA'] 触发看多次数: 22 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-21 2019-06-21 09:31:00+00:00 1.0396028813716953
    2019-06-21 2019-06-21 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600146.SHA', '603787.SHA'] 触发看多次数: 22 触发看跌次数: 2
    2019-06-21 2019-06-21 13:05:00+00:00 上穿买入: 603787.SHA
    
    
    大盘监控指标为: 2019-06-24 2019-06-24 09:31:00+00:00 1.0408247548780474
    2019-06-24 2019-06-24 09:31:00+00:00 昨日持仓为: {Equity(35 [603787.SHA]): 1100} 今日预买: ['002923.SZA', '600313.SHA'] 触发看多次数: 23 触发看跌次数: 2
    2019-06-24 2019-06-24 14:55:00+00:00 最后收盘卖出: Equity(35 [603787.SHA]) 603787.SHA 1100
    
    
    大盘监控指标为: 2019-06-25 2019-06-25 09:31:00+00:00 1.022027104786157
    2019-06-25 2019-06-25 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002057.SZA', '002923.SZA'] 触发看多次数: 23 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-26 2019-06-26 09:31:00+00:00 0.996372771825117
    2019-06-26 2019-06-26 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600359.SHA', '600354.SHA'] 触发看多次数: 23 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-27 2019-06-27 09:31:00+00:00 0.99827189263337
    2019-06-27 2019-06-27 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600359.SHA', '002199.SZA'] 触发看多次数: 23 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-06-28 2019-06-28 09:31:00+00:00 0.9902699163258902
    2019-06-28 2019-06-28 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603169.SHA', '600359.SHA'] 触发看多次数: 23 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-01 2019-07-01 09:31:00+00:00 1.0210689296245616
    2019-07-01 2019-07-01 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600371.SHA', '603169.SHA'] 触发看多次数: 23 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-02 2019-07-02 09:31:00+00:00 1.022732772377465
    2019-07-02 2019-07-02 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002945.SZA', '600371.SHA'] 触发看多次数: 23 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-03 2019-07-03 09:31:00+00:00 1.0061634908807937
    2019-07-03 2019-07-03 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600217.SHA', '002696.SZA'] 触发看多次数: 23 触发看跌次数: 2
    2019-07-03 2019-07-03 11:25:00+00:00 上穿买入: 002696.SZA
    
    
    大盘监控指标为: 2019-07-04 2019-07-04 09:31:00+00:00 1.008852446333176
    2019-07-04 2019-07-04 09:31:00+00:00 昨日持仓为: {Equity(16 [002696.SZA]): 2500} 今日预买: ['002611.SZA', '002696.SZA'] 触发看多次数: 24 触发看跌次数: 2
    2019-07-04 2019-07-04 14:55:00+00:00 最后收盘卖出: Equity(16 [002696.SZA]) 002696.SZA 2500
    
    
    大盘监控指标为: 2019-07-05 2019-07-05 09:31:00+00:00 0.9888850331167882
    2019-07-05 2019-07-05 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603106.SHA', '603933.SHA'] 触发看多次数: 24 触发看跌次数: 2
    2019-07-05 2019-07-05 09:36:00+00:00 上穿买入: 603933.SHA
    
    
    大盘监控指标为: 2019-07-08 2019-07-08 09:31:00+00:00 0.9636722519026724
    2019-07-08 2019-07-08 09:31:00+00:00 昨日持仓为: {Equity(83 [603933.SHA]): 1200} 今日预买: ['600363.SHA', '603267.SHA'] 触发看多次数: 25 触发看跌次数: 2
    2019-07-08 2019-07-08 14:55:00+00:00 最后收盘卖出: Equity(83 [603933.SHA]) 603933.SHA 1200
    
    
    大盘监控指标为: 2019-07-09 2019-07-09 09:31:00+00:00 0.9711356236232359
    2019-07-09 2019-07-09 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603283.SHA', '002077.SZA'] 触发看多次数: 25 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-10 2019-07-10 09:31:00+00:00 0.9700701872594489
    2019-07-10 2019-07-10 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600734.SHA', '603738.SHA'] 触发看多次数: 25 触发看跌次数: 2
    2019-07-10 2019-07-10 09:40:00+00:00 上穿买入: 600734.SHA
    2019-07-10 2019-07-10 09:46:00+00:00 上穿买入: 603738.SHA
    
    
    大盘监控指标为: 2019-07-11 2019-07-11 09:31:00+00:00 0.9690149357467026
    2019-07-11 2019-07-11 09:31:00+00:00 昨日持仓为: {Equity(14 [600734.SHA]): 1900, Equity(6 [603738.SHA]): 800} 今日预买: ['603267.SHA', '002915.SZA'] 触发看多次数: 27 触发看跌次数: 2
    2019-07-11 2019-07-11 14:55:00+00:00 最后收盘卖出: Equity(14 [600734.SHA]) 600734.SHA 1900
    2019-07-11 2019-07-11 14:55:00+00:00 最后收盘卖出: Equity(6 [603738.SHA]) 603738.SHA 800
    
    
    大盘监控指标为: 2019-07-12 2019-07-12 09:31:00+00:00 0.9990396216214057
    2019-07-12 2019-07-12 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603189.SHA', '000536.SZA'] 触发看多次数: 27 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-15 2019-07-15 09:31:00+00:00 1.0047659551903665
    2019-07-15 2019-07-15 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002237.SZA', '603177.SHA'] 触发看多次数: 27 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-16 2019-07-16 09:31:00+00:00 1.007654250311404
    2019-07-16 2019-07-16 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002645.SZA', '603797.SHA'] 触发看多次数: 27 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-17 2019-07-17 09:31:00+00:00 1.004774771028292
    2019-07-17 2019-07-17 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600371.SHA', '002366.SZA'] 触发看多次数: 27 触发看跌次数: 2
    2019-07-17 2019-07-17 09:58:00+00:00 上穿买入: 600371.SHA
    
    
    大盘监控指标为: 2019-07-18 2019-07-18 09:31:00+00:00 0.9899781039173768
    2019-07-18 2019-07-18 09:31:00+00:00 昨日持仓为: {Equity(117 [600371.SHA]): 1600} 今日预买: ['600671.SHA', '603068.SHA'] 触发看多次数: 28 触发看跌次数: 2
    2019-07-18 2019-07-18 14:55:00+00:00 最后收盘卖出: Equity(117 [600371.SHA]) 600371.SHA 1600
    
    
    大盘监控指标为: 2019-07-19 2019-07-19 09:31:00+00:00 0.9938873261572237
    2019-07-19 2019-07-19 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600078.SHA', '002054.SZA'] 触发看多次数: 28 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-22 2019-07-22 09:31:00+00:00 0.9827606582783696
    2019-07-22 2019-07-22 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002432.SZA', '002915.SZA'] 触发看多次数: 28 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-23 2019-07-23 09:31:00+00:00 0.9891707450559046
    2019-07-23 2019-07-23 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002432.SZA', '603189.SHA'] 触发看多次数: 28 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-24 2019-07-24 09:31:00+00:00 1.0076179695080938
    2019-07-24 2019-07-24 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600470.SHA', '002388.SZA'] 触发看多次数: 28 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-25 2019-07-25 09:31:00+00:00 1.0045001780835208
    2019-07-25 2019-07-25 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002388.SZA', '600127.SHA'] 触发看多次数: 28 触发看跌次数: 2
    2019-07-25 2019-07-25 13:53:00+00:00 上穿买入: 600127.SHA
    
    
    大盘监控指标为: 2019-07-26 2019-07-26 09:31:00+00:00 1.0199402184143724
    2019-07-26 2019-07-26 09:31:00+00:00 昨日持仓为: {Equity(71 [600127.SHA]): 4100} 今日预买: ['002388.SZA', '603327.SHA'] 触发看多次数: 29 触发看跌次数: 2
    2019-07-26 2019-07-26 14:55:00+00:00 最后收盘卖出: Equity(71 [600127.SHA]) 600127.SHA 4100
    
    
    大盘监控指标为: 2019-07-29 2019-07-29 09:31:00+00:00 1.0141597533560085
    2019-07-29 2019-07-29 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600078.SHA', '002562.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-30 2019-07-30 09:31:00+00:00 1.0099411671118768
    2019-07-30 2019-07-30 09:31:00+00:00 昨日持仓为: {} 今日预买: ['000536.SZA', '600139.SHA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-07-31 2019-07-31 09:31:00+00:00 0.9983474113253565
    2019-07-31 2019-07-31 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603648.SHA', '002341.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-01 2019-08-01 09:31:00+00:00 0.9878504316448937
    2019-08-01 2019-08-01 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002716.SZA', '600319.SHA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-02 2019-08-02 09:31:00+00:00 0.9751209597251951
    2019-08-02 2019-08-02 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600671.SHA', '002119.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-05 2019-08-05 09:31:00+00:00 0.9556816473435632
    2019-08-05 2019-08-05 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603936.SHA', '002119.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-06 2019-08-06 09:31:00+00:00 0.9471612475465269
    2019-08-06 2019-08-06 09:31:00+00:00 昨日持仓为: {} 今日预买: ['600086.SHA', '000603.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-07 2019-08-07 09:31:00+00:00 0.9518398302007687
    2019-08-07 2019-08-07 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603557.SHA', '000890.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-08 2019-08-08 09:31:00+00:00 0.9744457638735359
    2019-08-08 2019-08-08 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603933.SHA', '600371.SHA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-09 2019-08-09 09:31:00+00:00 0.9834334558061949
    2019-08-09 2019-08-09 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002354.SZA', '002848.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-12 2019-08-12 09:31:00+00:00 1.0134789281655612
    2019-08-12 2019-08-12 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002354.SZA', '002119.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-13 2019-08-13 09:31:00+00:00 1.010322638900487
    2019-08-13 2019-08-13 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002201.SZA', '603738.SHA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-14 2019-08-14 09:31:00+00:00 1.0051393938716213
    2019-08-14 2019-08-14 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603839.SHA', '002201.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-15 2019-08-15 09:31:00+00:00 1.0147921025844342
    2019-08-15 2019-08-15 09:31:00+00:00 昨日持仓为: {} 今日预买: ['603839.SHA', '002922.SZA'] 触发看多次数: 29 触发看跌次数: 2
    
    
    大盘监控指标为: 2019-08-16 2019-08-16 09:31:00+00:00 1.0031365411422872
    2019-08-16 2019-08-16 09:31:00+00:00 昨日持仓为: {} 今日预买: ['002800.SZA', '002645.SZA'] 触发看多次数: 29 触发看跌次数: 2
    2019-08-16 2019-08-16 09:35:00+00:00 上穿买入: 002645.SZA
    2019-08-16 2019-08-16 10:53:00+00:00 上穿买入: 002800.SZA
    
    
    大盘监控指标为: 2019-08-19 2019-08-19 09:31:00+00:00 1.0306858999395596
    2019-08-19 2019-08-19 09:31:00+00:00 昨日持仓为: {Equity(67 [002645.SZA]): 2100, Equity(157 [002800.SZA]): 800} 今日预买: ['002234.SZA', '603383.SHA'] 触发看多次数: 31 触发看跌次数: 2
    2019-08-19 2019-08-19 11:00:00+00:00 上穿买入: 603383.SHA
    2019-08-19 2019-08-19 14:55:00+00:00 最后收盘卖出: Equity(67 [002645.SZA]) 002645.SZA 2100
    2019-08-19 2019-08-19 14:55:00+00:00 最后收盘卖出: Equity(157 [002800.SZA]) 002800.SZA 800
    
    
    大盘监控指标为: 2019-08-20 2019-08-20 09:31:00+00:00 1.025307523114971
    2019-08-20 2019-08-20 09:31:00+00:00 昨日持仓为: {Equity(149 [603383.SHA]): 200} 今日预买: ['600354.SHA', '600359.SHA'] 触发看多次数: 32 触发看跌次数: 2
    2019-08-20 2019-08-20 10:50:00+00:00 上穿买入: 600354.SHA
    2019-08-20 2019-08-20 14:35:00+00:00 上穿买入: 600359.SHA
    2019-08-20 2019-08-20 14:55:00+00:00 最后收盘卖出: Equity(149 [603383.SHA]) 603383.SHA 200
    
    
    大盘监控指标为: 2019-08-21 2019-08-21 09:31:00+00:00 1.0229182676179933
    2019-08-21 2019-08-21 09:31:00+00:00 昨日持仓为: {Equity(20 [600354.SHA]): 3600, Equity(129 [600359.SHA]): 2900} 今日预买: ['002234.SZA', '002815.SZA'] 触发看多次数: 34 触发看跌次数: 2
    2019-08-21 2019-08-21 14:55:00+00:00 最后收盘卖出: Equity(20 [600354.SHA]) 600354.SHA 3600
    2019-08-21 2019-08-21 14:55:00+00:00 最后收盘卖出: Equity(129 [600359.SHA]) 600359.SHA 2900
    
    • 收益率36.56%
    • 年化收益率73.17%
    • 基准收益率19.37%
    • 阿尔法0.63
    • 贝塔0.14
    • 夏普比率3.19
    • 胜率0.74
    • 盈亏比0.6
    • 收益波动率16.75%
    • 信息比率0.05
    • 最大回撤5.8%
    bigcharts-data-start/{"__type":"tabs","__id":"bigchart-327b52a37aa54baf9bd8726df7401043"}/bigcharts-data-end
    • 收益率27.09%
    • 年化收益率52.56%
    • 基准收益率19.37%
    • 阿尔法0.27
    • 贝塔0.78
    • 夏普比率1.13
    • 胜率0.49
    • 盈亏比1.3
    • 收益波动率42.88%
    • 信息比率0.03
    • 最大回撤18.53%
    bigcharts-data-start/{"__type":"tabs","__id":"bigchart-1287486057f44cb99a45b1a328ce9839"}/bigcharts-data-end