onbar{
....
range{
....
Print("开仓之前=" + Text(Date) + ",方向="+Text(MarketPosition())+", 合约=" + codePro.symbol + ", 当前持仓品种数=" + Text(symbolCount) +"最大持仓数=" + Text(MaxOpenSymbols));
-------
Print("开空之前时间=" + Text(Date) + ",方向="+Text(MarketPosition())+", 合约=" + codePro.symbol + ", 当前持仓品种数=" + Text(symbolCount) +"最大持仓数=" + Text(MaxOpenSymbols));
tradeReturn=SellShort(Lots,Close);
if(tradeReturn)
{
if(MarketPosition() <> 0)
{
symbolCount = symbolCount + 1;
}
Print("[开空] 时间=" + Text(Date) + ",方向="+Text(MarketPosition())+", 合约=" + codePro.symbol + ", 当前持仓品种数=" + Text(symbolCount) +"最大持仓数=" + Text(MaxOpenSymbols));
} Else
{
Print("[开空] 失败 时间=" + Text(Date) + ",方向="+Text(MarketPosition())+", 合约=" + codePro.symbol + ", 当前持仓品种数=" + Text(symbolCount) +"最大持仓数=" + Text(MaxOpenSymbols));
}
代码 163行对应的LOG 327行的打印,可以看到 开空成功了 MarketPosition() 为-1,但是下一个onbar的时候 MarketPosition() 就变成0了,LOG 328之后的打印对应的代码100行。 中间没有平仓过程如果有的话会打印出来的
发可复现的代码demo
可以不是你的原文,你可以精简,但是必须是要能复现这个现象的
老师很厉害,在一个品种的时候 总是能正常运行,但是 多品种的情况下 就会有问题,我会写一个demo然后 说明复现路径
老师 demo已经 提供 一定会出现的问题 https://bbs.tbquant.net/thread/20250616152306846672
帮忙看一下 感谢
所以让你用全局数组自己统计
嘿嘿
这是底层机制
不合理
但
理解他接受他合理应用
什么意思, 是什么机制导致的不一样