// текущий профит 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)); }