{"description":"实验创建于2023/2/10","graph":{"edges":[{"to_node_id":"-71:instruments","from_node_id":"-5:data"},{"to_node_id":"-127:instruments","from_node_id":"-5:data"},{"to_node_id":"-62:features","from_node_id":"-13:data"},{"to_node_id":"-71:features","from_node_id":"-13:data"},{"to_node_id":"-97:input_data","from_node_id":"-62:data"},{"to_node_id":"-62:input_data","from_node_id":"-71:data"},{"to_node_id":"-127:options_data","from_node_id":"-97:data"}],"nodes":[{"node_id":"-5","module_id":"BigQuantSpace.instruments.instruments-v2","parameters":[{"name":"start_date","value":"2021-02-17","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2021-11-26","type":"Literal","bound_global_parameter":null},{"name":"market","value":"CN_FUTURE","type":"Literal","bound_global_parameter":null},{"name":"instrument_list","value":"JM2201.DCE","type":"Literal","bound_global_parameter":null},{"name":"max_count","value":0,"type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"rolling_conf","node_id":"-5"}],"output_ports":[{"name":"data","node_id":"-5"}],"cacheable":true,"seq_num":4,"comment":"","comment_collapsed":true},{"node_id":"-13","module_id":"BigQuantSpace.input_features.input_features-v1","parameters":[{"name":"features","value":"# #号开始的表示注释,注释需单独一行\n# 多个特征,每行一个,可以包含基础特征和衍生特征,特征须为本平台特征\nbbands_up = ta_bbands_u(close, 20)\nbbands = ta_bbands_m(close, 20)\nbbands_low = ta_bbands_l(close, 20)","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"features_ds","node_id":"-13"}],"output_ports":[{"name":"data","node_id":"-13"}],"cacheable":true,"seq_num":5,"comment":"","comment_collapsed":true},{"node_id":"-62","module_id":"BigQuantSpace.derived_feature_extractor.derived_feature_extractor-v3","parameters":[{"name":"date_col","value":"date","type":"Literal","bound_global_parameter":null},{"name":"instrument_col","value":"instrument","type":"Literal","bound_global_parameter":null},{"name":"drop_na","value":"False","type":"Literal","bound_global_parameter":null},{"name":"remove_extra_columns","value":"False","type":"Literal","bound_global_parameter":null},{"name":"user_functions","value":"{}","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"input_data","node_id":"-62"},{"name":"features","node_id":"-62"}],"output_ports":[{"name":"data","node_id":"-62"}],"cacheable":true,"seq_num":6,"comment":"","comment_collapsed":true},{"node_id":"-71","module_id":"BigQuantSpace.use_datasource.use_datasource-v1","parameters":[{"name":"datasource_id","value":"bar1d_CN_FUTURE","type":"Literal","bound_global_parameter":null},{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-71"},{"name":"features","node_id":"-71"}],"output_ports":[{"name":"data","node_id":"-71"}],"cacheable":true,"seq_num":7,"comment":"","comment_collapsed":true},{"node_id":"-97","module_id":"BigQuantSpace.dropnan.dropnan-v2","parameters":[],"input_ports":[{"name":"input_data","node_id":"-97"},{"name":"features","node_id":"-97"}],"output_ports":[{"name":"data","node_id":"-97"}],"cacheable":true,"seq_num":8,"comment":"","comment_collapsed":true},{"node_id":"-127","module_id":"BigQuantSpace.hftrade.hftrade-v1","parameters":[{"name":"start_date","value":"2021-05-14","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2021-10-18","type":"Literal","bound_global_parameter":null},{"name":"initialize","value":"# 交易引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n context.all_data = context.options[\"data\"].read()\n \n","type":"Literal","bound_global_parameter":null},{"name":"before_trading_start","value":"# 交易引擎:每个单位时间开盘前调用一次。\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_tick","value":"# 交易引擎:tick数据处理函数,每个tick执行一次\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_data","value":"# 交易引擎:bar数据处理函数,每个时间单位执行一次\ndef bigquant_run(context, data):\n import pandas as pd \n today = data.current_dt.strftime('%Y-%m-%d') # 当前交易日期\n all_data = context.all_data[context.all_data.date == today]\n all_data = pd.DataFrame(all_data)\n if len(all_data) == 0:#过滤没有指标的数据\n return\n \n price = all_data['close'].iloc[0]\n high_line = all_data['bbands_up'].iloc[0]\n low_line = all_data['bbands_low'].iloc[0]\n instrument = context.future_symbol(context.instruments[0]) # 交易标的\n long_position = context.get_account_position(instrument, direction=Direction.LONG).avail_qty#多头持仓\n short_position = context.get_account_position(instrument, direction=Direction.SHORT).avail_qty#空头持仓\n curr_position = short_position + long_position#总持仓\n if short_position > 0:\n if price > high_line:\n context.buy_close(instrument, short_position, price, order_type=OrderType.MARKET)\n context.buy_open(instrument, 4, price, order_type=OrderType.MARKET)\n print(today,'先平空再开多')\n elif long_position > 0:\n if price < low_line:\n context.sell_close(instrument, long_position, price, order_type=OrderType.MARKET)\n context.sell_open(instrument, 4, price, order_type=OrderType.MARKET)\n print(today,'先平多再开空',curr_position)\n elif curr_position==0:\n if price > high_line:\n context.buy_open(instrument, 4, price, order_type=OrderType.MARKET)\n print('空仓开多')\n elif price<low_line:\n context.sell_open(instrument, 4, price, order_type=OrderType.MARKET)\n print('空仓开空')","type":"Literal","bound_global_parameter":null},{"name":"handle_trade","value":"# 交易引擎:成交回报处理函数,每个成交发生时执行一次\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_order","value":"# 交易引擎:委托回报处理函数,每个委托变化时执行一次\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"after_trading","value":"# 交易引擎:盘后处理函数,每日盘后执行一次\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"capital_base","value":1000000,"type":"Literal","bound_global_parameter":null},{"name":"frequency","value":"daily","type":"Literal","bound_global_parameter":null},{"name":"price_type","value":"真实价格","type":"Literal","bound_global_parameter":null},{"name":"product_type","value":"期货","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.HIX","type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"disable_cache","value":"False","type":"Literal","bound_global_parameter":null},{"name":"show_debug_info","value":"False","type":"Literal","bound_global_parameter":null},{"name":"backtest_only","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"instruments","node_id":"-127"},{"name":"history_ds","node_id":"-127"},{"name":"benchmark_ds","node_id":"-127"},{"name":"options_data","node_id":"-127"}],"output_ports":[{"name":"raw_perf","node_id":"-127"}],"cacheable":false,"seq_num":9,"comment":"","comment_collapsed":true}],"node_layout":"<node_postions><node_position Node='-5' Position='293,113,200,200'/><node_position Node='-13' Position='602,109,200,200'/><node_position Node='-62' Position='420,280,200,200'/><node_position Node='-71' Position='258,194,200,200'/><node_position Node='-97' Position='406,357,200,200'/><node_position Node='-127' Position='350,452,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
[2023-05-24 18:13:35.774940] INFO moduleinvoker: instruments.v2 开始运行..
INFO:moduleinvoker:instruments.v2 开始运行..
[2023-05-24 18:13:35.783077] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:35.786808] INFO moduleinvoker: instruments.v2 运行完成[0.011875s].
INFO:moduleinvoker:instruments.v2 运行完成[0.011875s].
[2023-05-24 18:13:35.794403] INFO moduleinvoker: input_features.v1 开始运行..
INFO:moduleinvoker:input_features.v1 开始运行..
[2023-05-24 18:13:35.802062] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:35.805765] INFO moduleinvoker: input_features.v1 运行完成[0.011345s].
INFO:moduleinvoker:input_features.v1 运行完成[0.011345s].
[2023-05-24 18:13:35.815227] INFO moduleinvoker: use_datasource.v1 开始运行..
INFO:moduleinvoker:use_datasource.v1 开始运行..
[2023-05-24 18:13:35.823086] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:35.825880] INFO moduleinvoker: use_datasource.v1 运行完成[0.010658s].
INFO:moduleinvoker:use_datasource.v1 运行完成[0.010658s].
[2023-05-24 18:13:35.837408] INFO moduleinvoker: derived_feature_extractor.v3 开始运行..
INFO:moduleinvoker:derived_feature_extractor.v3 开始运行..
[2023-05-24 18:13:35.846364] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:35.851578] INFO moduleinvoker: derived_feature_extractor.v3 运行完成[0.014142s].
INFO:moduleinvoker:derived_feature_extractor.v3 运行完成[0.014142s].
[2023-05-24 18:13:35.869063] INFO moduleinvoker: dropnan.v2 开始运行..
INFO:moduleinvoker:dropnan.v2 开始运行..
[2023-05-24 18:13:35.877525] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:35.881349] INFO moduleinvoker: dropnan.v2 运行完成[0.012295s].
INFO:moduleinvoker:dropnan.v2 运行完成[0.012295s].
[2023-05-24 18:13:35.893332] WARNING moduleinvoker: 此模块版本 M.hftrade.v1 已不再维护。你仍然可以使用,但建议升级到最新版本:请更新到 hftrade 最新版本
WARNING:moduleinvoker:此模块版本 M.hftrade.v1 已不再维护。你仍然可以使用,但建议升级到最新版本:请更新到 hftrade 最新版本
[2023-05-24 18:13:35.917281] INFO moduleinvoker: hfbacktest.v1 开始运行..
INFO:moduleinvoker:hfbacktest.v1 开始运行..
[2023-05-24 18:13:35.924136] INFO hfbacktest: biglearning V1.4.21
INFO:hfbacktest:biglearning V1.4.21
[2023-05-24 18:13:35.928490] INFO hfbacktest: bigtrader v1.10.2 2023-05-18
INFO:hfbacktest:bigtrader v1.10.2 2023-05-18
[2023-05-24 18:13:35.951933] INFO moduleinvoker: cached.v2 开始运行..
INFO:moduleinvoker:cached.v2 开始运行..
[2023-05-24 18:13:35.959159] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:35.962078] INFO moduleinvoker: cached.v2 运行完成[0.01022s].
INFO:moduleinvoker:cached.v2 运行完成[0.01022s].
[2023-05-24 18:13:36.075972] INFO moduleinvoker: cached.v2 开始运行..
INFO:moduleinvoker:cached.v2 开始运行..
[2023-05-24 18:13:36.084166] INFO moduleinvoker: 命中缓存
[2023-05-24 18:13:36.086814] INFO moduleinvoker: cached.v2 运行完成[0.010881s].
INFO:moduleinvoker:cached.v2 运行完成[0.010881s].
2023-05-24 18:13:36.309464 init history datas...
2023-05-24 18:13:36.313229 init history datas done.
2023-05-24 18:13:36.318151 run_backtest() capital_base:1000000, frequency:1d, product_type:future, date:2021-05-14 ~ 2021-10-18
2023-05-24 18:13:36.321194 run_backtest() running...
2023-05-24 18:13:36.331095 initial contracts len=0
2023-05-24 18:13:36.334330 backtest inited.
2023-05-24 18:13:36.433310 backtest transforming 1d, bars=1...
2023-05-24 18:13:36.439869 transform start_trading_day=2021-05-14 00:00:00, simulation period=2021-05-14 ~ 2021-10-18
2023-05-24 18:13:36.443326 transform before_start_days=0
2023-05-24 18:13:36.446396 transform replay_func=<cyfunction BacktestEngine.transform.<locals>.replay_bars_dt at 0x7f0e9047f380>
空仓开空
2021-07-16 先平空再开多
2023-05-24 18:13:36.818118 backtest run end!
/usr/local/python3/lib/python3.8/site-packages/empyrical/stats.py:710: RuntimeWarning: divide by zero encountered in divide
np.divide(
/usr/local/python3/lib/python3.8/site-packages/empyrical/stats.py:799: RuntimeWarning: invalid value encountered in divide
np.divide(average_annual_return, annualized_downside_risk, out=out)
2023-05-24 18:13:37.121934 run_backtest() finished! time cost 0.798s!
/usr/local/python3/lib/python3.8/site-packages/pandas/core/generic.py:2605: PerformanceWarning:
your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->mixed,key->block3_values] [items->Index(['orders', 'transactions', 'positions', 'POS_FAC', 'TRA_FAC', 'LOG'], dtype='object')]
pytables.to_hdf(
[2023-05-24 18:13:38.481640] INFO hfbacktest: backtest done, raw_perf_ds:DataSource(b582eea494694f818d5d27e5b5aaa540T)
INFO:hfbacktest:backtest done, raw_perf_ds:DataSource(b582eea494694f818d5d27e5b5aaa540T)
/usr/local/python3/lib/python3.8/site-packages/pandas/core/indexing.py:1637: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
self._setitem_single_block(indexer, value, name)
[2023-05-24 18:13:39.455264] INFO: bigcharts.impl.render:render.py:407:render_chart Data is None, skip loading it to chart.
- 收益率40.96%
- 年化收益率122.31%
- 基准收益率-4.61%
- 阿尔法1.35
- 贝塔0.15
- 夏普比率3.26
- 胜率0.0
- 盈亏比0.0
- 收益波动率25.61%
- 最大回撤7.21%
成交时间 |
合约代码 |
合约名称 |
买/卖 |
开/平 |
数量 |
成交价 |
交易金额 |
交易佣金 |
Loading... (need help?) |
日期 |
合约代码 |
合约名称 |
持仓均价 |
收盘价 |
数量 |
持仓保证金 |
浮动盈亏 |
平仓盈亏 |
Loading... (need help?) |
时间 |
级别 |
内容 |
Loading... (need help?) |
[2023-05-24 18:13:39.931284] INFO moduleinvoker: hfbacktest.v1 运行完成[4.014003s].
INFO:moduleinvoker:hfbacktest.v1 运行完成[4.014003s].
[2023-05-24 18:13:39.935331] INFO moduleinvoker: hftrade.v1 运行完成[4.038216s].
INFO:moduleinvoker:hftrade.v1 运行完成[4.038216s].