我看帮助都关于HighestAfterEntry的计算代码如下:
OnBar(ArrayRef<Integer> indexs)
{
//...
If(BarsSinceEntry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);
}
}Else
{
HighestAfterEntry = Max(HighestAfterEntry,High);
LowestAfterEntry = Min(LowestAfterEntry,Low);
}
上面代码中为什么要加上 If(MarketPosition <> 0) ,在BarsSinceEntry == 0时,不就表示是当前开仓第一根吗?此时MarketPosition 就应该是不等于1的. 这里代码是不是不需要的,是不是可以改为下面这样?
If(BarsSinceEntry == 0)
{
HighestAfterEntry = Max(Close,AvgEntryPrice);
LowestAfterEntry = Min(Close,AvgEntryPrice);
}Else
{
HighestAfterEntry = Max(HighestAfterEntry,High);
LowestAfterEntry = Min(LowestAfterEntry,Low);
}