【代码报错】ParserException: Parser Error: syntax error at or near ","
由bquauib3创建,最终由hxgre 被浏览 10 用户
chat了N遍还是这个错,实在是找不到这个‘,’请大佬帮帮忙。
- [2025-02-16 00:03:08] INFO: cn_stock_basic_selector.v8 开始运行 ..
- [2025-02-16 00:03:08] INFO: cn_stock_basic_selector.v8 命中缓存
- [2025-02-16 00:03:08] INFO: cn_stock_basic_selector.v8 运行完成 [0.078s].
- [2025-02-16 00:03:08] INFO: input_features_dai.v30 开始运行 ..
- [2025-02-16 00:03:08] INFO: expr mode
- [2025-02-16 00:03:08] INFO: input_features_dai.v30 运行完成 [0.205s].
- [2025-02-16 00:03:08] INFO: extract_data_dai.v18 开始运行 ..
- [2025-02-16 00:03:08] WARNING: start_date='2019-01-01', end_date='2024-04-29', query_start_date='2018-10-03 00:00:00' (支持加速 升级资源) ..
- 您可以去社区论坛问答交流板块反馈咨询 去发帖>> --------------------------------------------------------------------------- ParserException Traceback (most recent call last) Cell In[3], line 108 78 m2 = M.input_features_dai.v30( 79 input_1=m1.data, 80 mode="""表达式""", (...) 104 m_name="""m2""" 105 ) 107 # @module(position="-503,-507", comment="""抽取预测数据""") --> 108 m4 = M.extract_data_dai.v18( 109 sql=m2.data, 110 start_date="""2019-01-01""", 111 start_date_bound_to_trading_date=True, 112 end_date="""2024-04-29""", 113 end_date_bound_to_trading_date=True, 114 before_start_days=90, 115 keep_before=False, 116 debug=False, 117 m_name="""m4""" 118 ) 120 # @module(position="-210,-364", comment="""交易,日线,设置初始化函数和K线处理函数,以及初始资金、基准等""") 121 m5 = M.bigtrader.v35( 122 data=m4.data, 123 start_date="""""", (...) 147 m_name="""m5""" 148 ) 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
from bigmodule import M
# <aistudiograph>
# @param(id="m5", name="initialize")
# 交易引擎:初始化函数,只执行一次
def m5_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="m5", name="before_trading_start")
# 交易引擎:每个单位时间开盘前调用一次。
def m5_before_trading_start_bigquant_run(context, data):
# 盘前处理,订阅行情等
pass
# @param(id="m5", name="handle_tick")
# 交易引擎:tick数据处理函数,每个tick执行一次
def m5_handle_tick_bigquant_run(context, tick):
pass
# @param(id="m5", name="handle_data")
def m5_handle_data_bigquant_run(context, data):
import pandas as pd
# 下一个交易日不是调仓日,则不生成信号
if not context.rebalance_period.is_signal_date(data.current_dt.date()):
return
# 从传入的数据 context.data 中读取今天的信号数据
today_df = context.data[context.data["date"] == data.current_dt.strftime("%Y-%m-%d")]
target_instruments = list(today_df["instrument"])
# 获取当前已持有股票
holding_instruments = list(context.get_account_positions().keys())
# 卖出不在目标持有列表中的股票
for instrument in holding_instruments:
if instrument not in target_instruments:
context.order_target_percent(instrument, 0)
# 买入目标持有列表中的股票
for i, x in today_df.iterrows():
# 处理 null 或者 decimal.Decimal 类型等
position = 0.0 if pd.isnull(x.position) else float(x.position)
context.order_target_percent(x.instrument, position)
# @param(id="m5", name="handle_trade")
# 交易引擎:成交回报处理函数,每个成交发生时执行一次
def m5_handle_trade_bigquant_run(context, trade):
pass
# @param(id="m5", name="handle_order")
# 交易引擎:委托回报处理函数,每个委托变化时执行一次
def m5_handle_order_bigquant_run(context, order):
pass
# @param(id="m5", name="after_trading")
# 交易引擎:盘后处理函数,每日盘后执行一次
def m5_after_trading_bigquant_run(context, data):
pass
# @module(position="-346,-871", comment="""使用基本信息对股票池过滤""")
m1 = M.cn_stock_basic_selector.v8(
exchanges=["""上交所""", """深交所"""],
list_sectors=["""主板""", """创业板"""],
indexes=["""中证500""", """上证指数""", """创业板指""", """深证成指""", """上证50""", """科创50""", """沪深300""", """中证1000""", """中证100""", """深证100"""],
st_statuses=["""正常"""],
margin_tradings=["""两融标的""", """非两融标的"""],
sw2021_industries=["""农林牧渔""", """采掘""", """基础化工""", """钢铁""", """有色金属""", """建筑建材""", """机械设备""", """电子""", """汽车""", """交运设备""", """信息设备""", """家用电器""", """食品饮料""", """纺织服饰""", """轻工制造""", """医药生物""", """公用事业""", """交通运输""", """房地产""", """金融服务""", """商贸零售""", """社会服务""", """信息服务""", """银行""", """非银金融""", """综合""", """建筑材料""", """建筑装饰""", """电力设备""", """国防军工""", """计算机""", """传媒""", """通信""", """煤炭""", """石油石化""", """环保""", """美容护理"""],
drop_suspended=True,
m_name="""m1"""
)
# @module(position="-524,-731", comment="""""", comment_collapsed=True)
m2 = M.input_features_dai.v30(
input_1=m1.data,
mode="""表达式""",
expr="""
greatest(close - m_lag(close, 1), 0) AS diff_pos,
abs(close - m_lag(close, 1)) AS diff_abs,
m_ta_ewm(greatest(close - m_lag(close, 1), 0), 2)
/ m_ta_ewm(abs(close - m_lag(close, 1)), 2) * 100 AS ema_ratio,
m_lag(ema_ratio, 1) < 25 AND ema_ratio >= 25 AS entry_condi,
m_lag(ema_ratio, 1) > 85 AND ema_ratio <= 85 AS exit_condi
-- cn_stock_bar1d.close / cn_stock_bar1d.open
""",
expr_filters="""
instrument = '600354.SH'
""",
expr_tables="""cn_stock_bar1d""",
extra_fields="""date, instrument""",
order_by="""date, instrument""",
expr_drop_na=True,
extract_data=False,
m_name="""m2"""
)
# @module(position="-503,-507", comment="""抽取预测数据""")
m4 = M.extract_data_dai.v18(
sql=m2.data,
start_date="""2019-01-01""",
start_date_bound_to_trading_date=True,
end_date="""2024-04-29""",
end_date_bound_to_trading_date=True,
before_start_days=90,
keep_before=False,
debug=False,
m_name="""m4"""
)
# @module(position="-210,-364", comment="""交易,日线,设置初始化函数和K线处理函数,以及初始资金、基准等""")
m5 = M.bigtrader.v35(
data=m4.data,
start_date="""""",
end_date="""""",
initialize=m5_initialize_bigquant_run,
before_trading_start=m5_before_trading_start_bigquant_run,
handle_tick=m5_handle_tick_bigquant_run,
handle_data=m5_handle_data_bigquant_run,
handle_trade=m5_handle_trade_bigquant_run,
handle_order=m5_handle_order_bigquant_run,
after_trading=m5_after_trading_bigquant_run,
capital_base=1000000,
frequency="""daily""",
product_type="""股票""",
rebalance_period_type="""交易日""",
rebalance_period_days="""5""",
rebalance_period_roll_forward=True,
backtest_engine_mode="""标准模式""",
before_start_days=0,
volume_limit=0.1,
order_price_field_buy="""close""",
order_price_field_sell="""close""",
benchmark="""沪深300指数""",
plot_charts=True,
debug=False,
backtest_only=False,
m_name="""m5"""
)
# </aistudiograph>
\