public static decimal OcoStopLimitWithPercent(int symbolID, decimal LimitPriece, decimal Percent) { var FilterRepo = new FiltersRepository(); var filtro = FilterRepo.GetBySymbol_Type("PRICE_FILTER", symbolID); var numerocasas = filtro.tickSize.ToString().IndexOf("1") - 1; var umporcento = (LimitPriece / 100); var Limitaceito = LimitPriece - (umporcento * Percent); return(Math.Round(Limitaceito, numerocasas)); }
public static decimal ArredondarQuantidadeVenda(List <OrdemComission> Comissoes, Ordem MainOrdem) { using (var FilterRepo = new FiltersRepository()) { var filtro = FilterRepo.GetBySymbol_Type("LOT_SIZE", MainOrdem.Chamada.Symbol_id); if (Comissoes.Count == 1) { var asset = Comissoes.FirstOrDefault(); if (asset.ComissionAsset != "BNB") { if (filtro.stepSize == 1) { return((int)(MainOrdem.Quantidade - asset.ComissionAmount)); } else { var numerocasas = filtro.stepSize.ToString().IndexOf("1") - 1; var multiplicador = Math.Pow(10, numerocasas); var n1 = (MainOrdem.Quantidade - asset.ComissionAmount) * (decimal)multiplicador; return(Math.Floor(n1) / (decimal)multiplicador); } } else { return(MainOrdem.Quantidade); } } else { var symbol = MainOrdem.Chamada.Symbol.symbol; var symbolAsset = symbol.Substring(0, symbol.Length - 3).ToUpper(); var group = Comissoes.GroupBy(x => x.ComissionAsset); //var ComissoesBNB = Comissoes.Where(x => x.ComissionAsset == "BNB").Sum(x => x.ComissionAmount); var ComissoesMoedaCorrente = Comissoes.Where(x => x.ComissionAsset == symbolAsset).Sum(x => x.ComissionAmount); if (ComissoesMoedaCorrente > 0) { if (filtro.stepSize == 1) { return((int)(MainOrdem.Quantidade - ComissoesMoedaCorrente)); } else { var numerocasas = filtro.stepSize.ToString().IndexOf("1") - 1; var multiplicador = Math.Pow(10, numerocasas); var n1 = (MainOrdem.Quantidade - ComissoesMoedaCorrente) * (decimal)multiplicador; return(Math.Floor(n1) / (decimal)multiplicador); } } else { return(MainOrdem.Quantidade); } } } }