Originally Posted By: jhgjrht
С большой долей уверенности, могу сказать, что проблема из-за некорректной работы какого-то индикатора. Точнее индикатор не привязывается к таймфрейму и при оптимизации берет из кеша несоответствующие данные.
Вот пример, в контексте проблемы


Спасибо огромное за помощь, вы просто волшебник!!
Прочитал тему по вашей ссылке, подправил свой скрипт и все заработало как надо.
Если не сложно посмотрите грамотно ли я все прописал из индикаторов в скрипте только канал для стопов, оптимизирую:
- Compress_time
- Stop_S
- Stop_L

Code:
var compressed = source.CompressTo(new Interval(Compress_time, DataIntervals.MINUTE));

IList<double> cStop_S = ctx.GetData("cStop_S", new string[] {Stop_S .ToString(),Compress_time.ToString()},
delegate { return Series.Highest(compressed.HighPrices, Stop_S); });
		    
 IList<double> cStop_L = ctx.GetData("cStop_L", new[] {Stop_L .ToString(),Compress_time.ToString() },
delegate { return Series.Lowest(compressed.LowPrices, Stop_L); });

var DStop_L = compressed.Decompress(cStop_L, DecompressMethodWithDef.Default); 
var DStop_S = compressed.Decompress(cStop_S, DecompressMethodWithDef.Default); 

Exit_Short = DStop_S[bar];
Exit_Long = DStop_L[bar];

else
{
LongPos.CloseAtStop(bar+1,Exit_Long, "Stop_Long"); 
}
// Здесь идет другой блок видения короткой позиции а не два else подряд
else 
{
ShortPos.CloseAtStop(bar+1,Exit_Short,"Stop_Short_2"); 
}