2 минуты назад, capteen сказал:Если вы сумеет такую "функцию" создать - весь Мартин будет носить Ваше имя!
У меня написано в челленджере.
Выглядит так:
if(DrawDownLimitCurrency > DBL_EPSILON) { double ddLimit = moneyManager.CalculateLot() / MM_StartLot * DrawDownLimitCurrency; logger.Debug("Calculated stoploss: " + DoubleToStr(Utils::CalculateBreakEven(_Symbol, tradeStats.GetTotalProfit(_type) + ddLimit, tradeStats.GetTotalLots(_type), _type, mqlTick, tradeStats.GetTickValue(_type)), Digits)); stopLoss = tradeUtils.NormalizeStopLoss(_type, Utils::CalculateBreakEven(_Symbol, tradeStats.GetTotalProfit(_type) + ddLimit, tradeStats.GetTotalLots(_type), _type, mqlTick, tradeStats.GetTickValue(_type)), true); logger.Debug("Lot=" + DoubleToStr(moneyManager.CalculateLot(), 2) + ", ddLimit=" + DoubleToStr(ddLimit, 2) + ", breakeven=" + DoubleToStr(tradeStats.GetBreakEven(_type), _Digits) + ", stop=" + DoubleToStr(stopLoss, _Digits) + " for a total lots of " + DoubleToStr(tradeStats.GetTotalLots(_type), 2)); }
это сразу с пересчетом в стоплосс, чтобы не жертвовать лишнего брокеру, закрывая десяток ордеров на движущейся цене. И чтобы на графике видно было.
А вся "функция" укладывается в одну строчку - вторую в тексте.

