老师你好,我最近在研究怎么让策略在涨跌停的时候不开仓。
我用了这段代码
// ========== 第二步:涨跌停异常校验(关键) ==========
IsLimitPrice = False; // 默认非涨跌停
// 仅当涨跌停价有效(涨停>跌停),且收盘价确实封死涨跌停,才标记为涨跌停
If(myuplimit > mydnlimit)
{
// 严格判断:收盘价封死涨停/跌停(避免误判)
IsLimitPrice = ((Close == myuplimit) && (myuplimit > 0)) Or ((Close == mydnlimit) && (mydnlimit > 0));
}
// 调试:查看涨跌停判断结果
Commentary("是否涨跌停:"+iifstring(IsLimitPrice,"是","否"));
实际上这段代码是有效的,但是,我发现个问题,就是在代码中要是加入除权换月的代码
OnInit()
{
Range[0:DataCount-1]
{
AddDataFlag(Enum_Data_RolloverBackWard()); //后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //忽略换仓信号
}
}
会导致涨跌停价格跟上面的代码计算出来的涨跌停不一致,导致上面写的涨跌停的代码在开仓条件中起不到作用,
If(MarketPosition == 0 && High >= UpLine[1] && ATRDOWN[1] && Not IsLimitPrice)
{
Buy(Lost,Max(Open,UpLine[1]));
}
就是这个Not IsLimitPrice不起作用了。这个有什么办法解决吗?
没问题了,已经搞定了