private List <EntIndicador> Popular(DbDataReader dtrDados)
        {
            List <EntIndicador> listEntReturn = new List <EntIndicador>();
            EntIndicador        entReturn;

            try
            {
                while (dtrDados.Read())
                {
                    entReturn = new EntIndicador();

                    entReturn.IdIndicador   = ObjectUtils.ToInt(dtrDados["CDA_INDICADOR"]);
                    entReturn.Indicador     = ObjectUtils.ToString(dtrDados["TX_INDICADOR"]);
                    entReturn.Data          = ObjectUtils.ToDate(dtrDados["DT_DATA"]);
                    entReturn.Valor         = ObjectUtils.ToDecimal(dtrDados["NU_VALOR"]);
                    entReturn.Moeda.IdMoeda = ObjectUtils.ToInt(dtrDados["CEA_MOEDA"]);
                    entReturn.Moeda.Moeda   = ObjectUtils.ToString(dtrDados["TX_MOEDA"]);
                    entReturn.Ativo         = ObjectUtils.ToBoolean(dtrDados["FL_ATIVO"]);
                    listEntReturn.Add(entReturn);
                }

                dtrDados.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(listEntReturn);
        }
 public EntIndicador Remover(EntIndicador objIndicador, Int32 IdUsuario)
 {
     using (DbConnection connection = db.CreateConnection())
     {
         connection.Open();
         DbTransaction transaction = connection.BeginTransaction();
         try
         {
             objIndicador.Ativo = !objIndicador.Ativo;
             dalIndicador.Remover(objIndicador, transaction, db);
             SaveLog(IdUsuario, EntLog.LOG_REMOVER, "Indicador", objIndicador.IdIndicador, objIndicador, transaction, db);
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             SaveLog(IdUsuario, EntLog.LOG_ERRO, "Indicador", objIndicador.IdIndicador, objIndicador, ex.Message, db, connection);
             throw;
         }
         finally
         {
             connection.Close();
         }
     }
     return objIndicador;
 }
        public void Remover(EntIndicador objIndicador, DbTransaction transaction, Database db)
        {
            DbCommand dbCommand = db.GetStoredProcCommand("STP_IndicadorRemover");

            dbCommand.CommandTimeout = BdConfig.CommmandTimeout;

            db.AddInParameter(dbCommand, "@CDA_INDICADOR", DbType.Int32, objIndicador.IdIndicador);
            db.AddInParameter(dbCommand, "@FL_ATIVO", DbType.Boolean, objIndicador.Ativo);

            db.ExecuteNonQuery(dbCommand, transaction);
        }
        public void Alterar(EntIndicador objIndicador, DbTransaction transaction, Database db)
        {
            DbCommand dbCommand = db.GetStoredProcCommand("STP_IndicadorAlterar");

            dbCommand.CommandTimeout = BdConfig.CommmandTimeout;

            db.AddInParameter(dbCommand, "@CDA_INDICADOR", DbType.Int32, objIndicador.IdIndicador);
            db.AddInParameter(dbCommand, "@TX_INDICADOR", DbType.String, objIndicador.Indicador);
            db.AddInParameter(dbCommand, "@DT_DATA", DbType.DateTime, objIndicador.Data);
            db.AddInParameter(dbCommand, "@NU_VALOR", DbType.Decimal, objIndicador.Valor);
            db.AddInParameter(dbCommand, "@CEA_MOEDA", DbType.Int32, IntUtils.ToIntNullProc(objIndicador.Moeda.IdMoeda));
            db.AddInParameter(dbCommand, "@FL_ATIVO", DbType.Boolean, objIndicador.Ativo);

            db.ExecuteNonQuery(dbCommand, transaction);
        }
        private decimal calculateRSIValues(List <BinanceSpotKline> prices, int periodLength, Int32 IdMoeda)
        {
            try
            {
                int lastBar  = prices.Count - 1;
                int firstBar = lastBar - periodLength + 1;
                if (firstBar < 0)
                {
                    String msg = "Quote history length " + prices.Count + " is insufficient to calculate the indicator.";
                    throw new Exception(msg);
                }

                decimal aveGain = 0, aveLoss = 0;
                for (int bar = firstBar + 1; bar <= lastBar; bar++)
                {
                    decimal change = prices[bar].Close - prices[bar - 1].Close;
                    if (change >= 0)
                    {
                        aveGain += change;
                    }
                    else
                    {
                        aveLoss += change;
                    }
                }

                decimal rs    = aveGain / Math.Abs(aveLoss);
                decimal value = 100 - 100 / (1 + rs);

                EntIndicador objIndicador = new EntIndicador();
                objIndicador.Ativo         = true;
                objIndicador.Data          = DateTime.Now;
                objIndicador.Indicador     = "RSI";
                objIndicador.Moeda.IdMoeda = IdMoeda;
                objIndicador.Valor         = value;
                new BllIndicador().Inserir(objIndicador, EntUsuario.USUARIO_PADRAO);

                return(value);
            }
            catch { }
            return(50);
        }
 public void Alterar(EntIndicador objIndicador, Int32 IdUsuario)
 {
     using (DbConnection connection = db.CreateConnection())
     {
         connection.Open();
         DbTransaction transaction = connection.BeginTransaction();
         try
         {
             dalIndicador.Alterar(objIndicador, transaction, db);
             SaveLog(IdUsuario, EntLog.LOG_EDITAR, "Indicador", objIndicador.IdIndicador, objIndicador, transaction, db);
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             SaveLog(IdUsuario, EntLog.LOG_ERRO, "Indicador", objIndicador.IdIndicador, objIndicador, ex.Message, db, connection);
             throw;
         }
         finally
         {
             connection.Close();
         }
     }
 }
 public EntIndicador ObterPorId(Int32 IdIndicador)
 {
     EntIndicador objIndicador = new EntIndicador();
     using (DbConnection connection = db.CreateConnection())
     {
         connection.Open();
         DbTransaction transaction = connection.BeginTransaction();
         try
         {
             objIndicador = dalIndicador.ObterPorId(IdIndicador, transaction, db);
             transaction.Commit();
         }
         catch
         {
             transaction.Rollback();
             throw;
         }
         finally
         {
             connection.Close();
         }
     }
     return objIndicador;
 }