问答交流

【平台使用】有没有帮忙看下代码问题出在哪里了

由bqbkm8ac创建,最终由bqbkm8ac 被浏览 3 用户

from bigmodule import M

<aistudiograph>

@module(comment="选股模块")

m1 = M.cn_stock_basic_selector.v8( exchanges=["上交所", "深交所"], list_sectors=["主板", "科创板", "创业板"], indexes=["中证1000"], st_statuses=["正常"], sw2021_industries=[], drop_suspended=True )

@module(comment="因子特征构建")





m2 = M.input_features_dai.v30( expr="volume / m_avg(volume, 5) as volume_ratio, " "m_lead(volume / m_avg(volume, 5), 1) as volume_ratio_prev1, " "m_lead(volume / m_avg(volume, 5), 2) as volume_ratio_prev2", expr_filters="volume_ratio > 1.2 AND volume_ratio < 2 " "AND volume_ratio_prev1 > 1.2 AND volume_ratio_prev1 < 2 " "AND volume_ratio_prev2 > 1.2 AND volume_ratio_prev2 < 2", expr_tables="cn_stock_prefactors", sql=m1.data, expr_drop_na=True )

@module(comment="仓位分配")

m3 = M.score_to_position.v4( input_1=m2.data, score_field="volume_ratio DESC", hold_count=5, total_position=1, position_expr="1 AS position" )

@module(comment="数据抽取模块")

m4 = M.extract_data_dai.v18( sql=m3.data, start_date="2023-01-01", start_date_bound_to_trading_date=True, end_date="2024-12-31", end_date_bound_to_trading_date=True, before_start_days=10 )

@param(id="m5", name="initialize")

def m5_initialize_bigquant_run(context): pass

@param(id="m5", name="handle_data")

def m5_handle_data_bigquant_run(context, data): # 从当前持仓中获取所有股票 current_hold_instruments = set(context.get_account_positions().keys())

# 获得当前信号数据
today_df = context.data[context.data['date'] == data.current_dt.strftime('%Y-%m-%d')]

# 将当前目标股票调整为持仓状态
for i, row in today_df.iterrows():
    instrument = row['instrument']
    position = row['position']
    context.order_target_percent(instrument, position)
    
# 卖出不在目标清单中的股票
for instrument in current_hold_instruments - set(today_df['instrument']):
    context.order_target_percent(instrument, 0)

@module(comment="回测模块")

m5 = M.bigtrader.v35( data=m4.data, initialize=m5_initialize_bigquant_run, handle_data=m5_handle_data_bigquant_run, capital_base=1000000, frequency="daily", product_type="股票", start_date="2023-01-01", end_date="2024-12-31", rebalance_period_type="周度交易日", rebalance_period_days="1", order_price_field_buy="open", order_price_field_sell="close", benchmark="中证1000指数" )

</aistudiograph>

{link}