在工业硅2511 5分钟K线上,最下面是两张回测的图片,两张图的代码仅这一句不同“Bprice = MAX(n1, n2) + MinMove * PriceScale;”,
图一是Bprice = Min(n1, n2) + MinMove * PriceScale;
图二是Bprice = Max(n1, n2) + MinMove * PriceScale;
疑问点:从min 改为 max后(其他代码不修改),这个修改正常差异点是在0804日11:25的buy价格;但却出现了0812日 13:45的异常差异点,按照我的策略代码,仅修改这一句的话不应该有这个差异点的(即修改前用“min"的代码在0812日 13:45应该也要买入的;Max是对的)。为什么会这样的?部分代码如下(CDBL、LCDQJ为Params参数):
//计算价格的EMA值
PriceEMAF = EMA(Open, EMAFast);
PriceEMAS = EMA(Open, EMASlow);
// 买入条件:
Bool D1 = CrossOver(PriceEMAF, PriceEMAS);
Bool D21 = low / low[1] < CDBL;
Bool D22 = low / low[2] < CDBL;
Bool D2 = (D21 || D22) && (kValue < LCDQJ) && (PriceEMAF < PriceEMAS);
//买入价格:
if(D1 || D2)
{
if(D1) Bprice = open + MinMove * PriceScale;
Else if((low / low[1] < CDBL) && (low / low[2] >= CDBL))
{
n1 = IntPart(low[1] * CDBL / (MinMove * PriceScale)) * MinMove * PriceScale;
Bprice = n1 + MinMove * PriceScale;
}
Else if((low / low[2] < CDBL) && (low / low[1] >= CDBL))
{
n2 = IntPart(low[2]*CDBL / (MinMove * PriceScale)) * MinMove * PriceScale;
Bprice = n2 + MinMove * PriceScale;
}
Else
{
n1 = IntPart(low[1] * CDBL / (MinMove * PriceScale)) * MinMove * PriceScale;
n2 = IntPart(low[2]*CDBL / (MinMove * PriceScale)) * MinMove * PriceScale;
Bprice = MAX(n1, n2) + MinMove * PriceScale; //仅修改这一句存在0812 13:45的差异异常:按交易逻辑min是不对的,max是对的。
}
Buy(XDSS, Bprice);
}
图一:
图二:
怀疑是正常的,能自己排查出来原因也很不错了
我排查到原因了,谢谢!