老师,帮忙看看,老是提示这样的问题
由bqwomz4e创建,最终由bqwomz4e 被浏览 12 用户
from bigmodule import M
<aistudiograph>
@param(id="m2", name="initialize")
def m2_initialize_bigquant_run(context): from bigtrader.finance.commission import PerOrder context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
@param(id="m2", name="handle_data")
def m2_handle_data_bigquant_run(context, data): # 过滤非调仓日 if not context.rebalance_period.is_signal_date(data.current_dt.date()): return
# 获取当日数据
today_df = context.data[context.data["date"] == data.current_dt.strftime("%Y-%m-%d")]
if len(today_df) == 0:
return
# 当前持仓
positions = context.get_account_positions()
# 获取信号数据
for stock in context.instruments:
hold_num = positions[stock].current_qty if stock in positions else 0
try:
entry_condi = today_df[today_df["instrument"] == stock].entry_condi.values[0]
exit_condi_1 = today_df[today_df["instrument"] == stock].exit_condi_1.values[0]
exit_condi_2 = today_df[today_df["instrument"] == stock].exit_condi_2.values[0]
except:
continue
weight = 1 / len(context.instruments)
# 满足买入条件
if entry_condi and hold_num == 0:
context.order_target_percent(stock, weight)
# 卖出条件1,减仓一半
if exit_condi_1 and hold_num > 0:
context.order_target_percent(stock, hold_num / 2)
# 卖出条件2,清仓
if exit_condi_2 and hold_num > 0:
context.order_target_percent(stock, 0)
@module(comment="表达式构建因子")
m1 = M.input_features_dai.v30( expr=""" m_ta_sma(close, 21) > m_ta_sma(close, 60) as ma21_bigger_ma60, close > m_ta_sma(close, 21) and close > m_ta_sma(close, 60) as price_above_mas, m_ta_macd_hist(close, 12, 26, 9) > 0 as daily_macd_red, m_ta_macd_hist(m_weekly(close), 12, 26, 9) > 0 as weekly_macd_red, ma21_bigger_ma60 and price_above_mas and daily_macd_red and weekly_macd_red as entry_condi, close < m_ta_sma(close, 10) as exit_condi_1, close < m_ta_sma(close, 20) as exit_condi_2 """, expr_filters="instrument = '300033.SZ'", expr_tables="cn_stock_prefactors", expr_drop_na=True, extra_fields="date,instrument" )
@module(comment="数据抽取")
m4 = M.extract_data_dai.v18( sql=m1.data, start_date="2022-01-01", start_date_bound_to_trading_date=True, end_date="2024-12-31", end_date_bound_to_trading_date=True, before_start_days=60 )
@module(comment="回测执行")
m2 = M.bigtrader.v35( data=m4.data, initialize=m2_initialize_bigquant_run, handle_data=m2_handle_data_bigquant_run, capital_base=1000, frequency="daily", product_type="股票", rebalance_period_type="交易日", rebalance_period_days="1", order_price_field_buy="open", order_price_field_sell="open", benchmark="沪深300指数" )
</aistudiograph>
日志 6 条 ▼
- [2025-03-08 01:11:24] INFO: input_features_dai.v30 开始运行 ..
- [2025-03-08 01:11:24] INFO: expr mode
- [2025-03-08 01:11:24] INFO: input_features_dai.v30 运行完成 [0.100s].
- [2025-03-08 01:11:24] INFO: extract_data_dai.v18 开始运行 ..
- [2025-03-08 01:11:24] WARNING: start_date='2022-01-01', end_date='2024-12-31', query_start_date='2021-11-02 00:00:00' (支持加速 升级资源) ..
- 您可以去社区论坛问答交流板块反馈咨询 去发帖>> --------------------------------------------------------------------------- ParserException Traceback (most recent call last) Cell In[2], line 66 49 m1 = M.input_features_dai.v30( 50 expr=""" 51 m_ta_sma(close, 21) > m_ta_sma(close, 60) as ma21_bigger_ma60, (...) 62 extra_fields="date,instrument" 63 ) 65 # @module(comment="数据抽取") ---> 66 m4 = M.extract_data_dai.v18( 67 sql=m1.data, 68 start_date="2022-01-01", 69 start_date_bound_to_trading_date=True, 70 end_date="2024-12-31", 71 end_date_bound_to_trading_date=True, 72 before_start_days=60 73 ) 75 # @module(comment="回测执行") 76 m2 = M.bigtrader.v35( 77 data=m4.data, 78 initialize=m2_initialize_bigquant_run, (...) 87 benchmark="沪深300指数" 88 ) File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/modules.py:28, in call(self, **kwargs) File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:203, in module_invoke(name, version, kwargs) File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:169, in _module_invoke(name, version, kwargs) File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:41, in _module_run(module, kwargs) File dist/build/extract_data_dai/v18/init.py:78, in v18.run() File /var/app/enabled/dai/_telemetry.py:127, in wrapper(*args, **kwargs) File /var/app/enabled/dai/_functions.py:278, in query(sql, udf_list, full_db_scan, filters, bind_relations) ParserException: Parser Error: syntax error at or near ","
\n