【模拟交易信号问题】【严重问题】策略不产生买入信号
由bqv93dy2创建,最终由bqv93dy2 被浏览 5 用户
策略按照如下模板
from bigquant import bigtrader, dai
def initialize(context: bigtrader.IContext):
context.set_commission(bigtrader.PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
stock_num = 30
rebalance_days = 2
sql = f""" sql略,持仓数量为3只的同样策略能运行
"""
df = dai.query(
sql,
filters={"date": [context.add_trading_days(context.start_date, -80), context.end_date]},
).df()
df = bigtrader.TradingDaysRebalance(rebalance_days, context=context).select_rebalance_data(df)
context.data = df
print("initialize完成") ##模拟交易检查用
def handle_data(context: bigtrader.IContext, data: bigtrader.IBarData):
df_today = context.data[context.data["date"] == data.current_dt.strftime("%Y-%m-%d")]
print("非调仓日吗?") # #模拟交易检查用
if len(df_today) == 1 and df_today["instrument"].iloc[0] is None:
return # 非调仓日
print("卖出不再持有的股票") #模拟交易检查用
# 卖出不再持有的股票
for instrument in set(context.get_positions()) - set(df_today["instrument"]):
context.order_target_percent(instrument, 0)
# 检查是否止损
for _, position in context.get_positions().items():
loss_ratio = position.last_price / position.cost_price - 1
stop_loss=0.05
if loss_ratio <= -stop_loss:
print("INFO", f"{position.Symbol} loss {-loss_ratio:.2%}, triggering stop loss")
context.order_target_percent(position.Symbol, 0)
# 买入或调整目标持仓
for _, row in df_today.iterrows():
instrument = row["instrument"]
weight = row["weight"]
context.order_target_percent(instrument, weight)
performance = bigtrader.run(
market=bigtrader.Market.CN_STOCK,
frequency=bigtrader.Frequency.DAILY,
start_date="2025-10-03",
end_date="2025-11-25",
capital_base=1000000.00,
initialize=initialize,
handle_data= handle_data,
order_price_field_buy='open',
order_price_field_sell='open',
)
performance.render()
模拟交易服务器反馈如下:
df209451-8a92-492d-8dd0-583f6b7774ce-20251125091426.txt 48810
\