/// <summary> /// для Открытого! ордера посчитать его профит в валюте депозита /// </summary> /// <param name="order">собственно ордер</param> /// <param name="quotes">словарь котировок - могут понадобиться 1..2 котировки</param> /// <param name="accountCurrency">валюта депозита</param> public float?CalculateProfitInDepoCurrency(MarketOrder order, Dictionary <string, QuoteData> quotes, string accountCurrency) { var curDepo = accountCurrency; if (string.IsNullOrEmpty(curDepo)) { return(null); } // посчитать профит в контрвалюте QuoteData quote; if (!quotes.TryGetValue(order.Symbol, out quote)) { return(null); } var profitInCounter = order.CalculateProfit(quote); // пересчет в валюту депо bool inverseRate, pairsAreEqual; var smbCounterDepo = FindSymbol(order.Symbol, false, curDepo, out inverseRate, out pairsAreEqual); if (pairsAreEqual) { return(profitInCounter); } if (!quotes.TryGetValue(smbCounterDepo, out quote)) { return(null); } var price = ((profitInCounter > 0 && inverseRate) || (profitInCounter < 0 && !inverseRate)) ? quote.ask : quote.bid; return(inverseRate ? profitInCounter / price : profitInCounter *price); }