вот код, отвечающий за расчётную цену в трейле:
Code:
// текущий профит
var curProfit = pos.OpenMFE(barNum);
// реальная цена входа
var entryPrice = pos.EntryPrice;
// если включена опция "Use Calc Price"
if (UseCalcPrice)
{
   // получаем цену заявки
   var ep2 = CalcEntryPrice.EntryPrice(pos, barNum);
   // вычисляем разницу заявки и факта
   var diff = (entryPrice - ep2) * (pos.IsLong ? 1 : -1);
   // корректируем текущий профит на эту разницу
   curProfit += diff;
   // в дальнейшем используем расчётную цену
   entryPrice = ep2;
}
// тут мудрёный перерасчёт профита, извините, не вникал :)
curProfit *= 100/entryPrice*pos.Security.Margin;
// если дошли - включаем трейл
if (curProfit > TrailEnable)
{
   // смещение от цены входа
   double shift = (curProfit - TrailLoss) / 100;
   // расчёт стопа (используется расчётная цена - т.е. фикция)
   stop = entryPrice * (1 + (pos.IsLong ? shift : -shift));
}
else
{  // тут расчёт начального стопа, до включения трейла
   double shift = (0 - StopLoss) / 100;
   stop = entryPrice * (1 + (pos.IsLong ? shift : -shift));
}


по хорошему, тут надо проверить соответствие расч. цены входа и профита, вдруг чего не так
stop = entryPrice * (1 + (pos.IsLong ? shift : -shift));