cei-bot v1.0.2
cei-bot 💸
Bot para ler dados do Canal Eletrônico do Investidor, a principal funcionalidade desse projeto é obter dados do CEI - Canal Eletrônico do Investidor e tranformá-lo em informações que possam ser consumidos por outras aplicações.
- Dependências
- Instalação
- Utilização
- Settings
- 1. Obtenção dos Rendimentos
- 2. Obtenção carteira de ativos
- 3. Negociação de ativos
- 4. Tesouro Direto
- Tecnologias
- Features
- Contribuidores
- Licença
Dependências
O cei-bot
utiliza a seguinte dependência:
- puppeteer API de alto nível para controlar o Chrome ou Chromium
Instalação
Basta instalar utilizando o NPM:
npm i cei-bot
ou
yarn add cei-bot
Utilização
- Crie uma instância do
CeiService
passando com os seguintes parametros:
login
: Usuário de entrada no CEI que pode ser o CPF ou CNPJ;password
: Senha de acesso ao CEI;settings
: Configurações para controle da interação com a página do CEI;
a - Typescript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
(async () => {
const data = await ceiService.getIncomeAsync();
console.log(JSON.stringify(data, null, 2));
})();
b - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getIncomeAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});
c - Settings
import { CeiService } from 'cei-bot';
const ceiService = new CeiService(
{
login: 'username',
password: 'password',
},
{
headless: false,
delay: 200,
timeout: 400,
},
);
(async () => {
const data = await ceiService.getIncomeAsync();
console.log(JSON.stringify(data, null, 2));
})();
Settings
Propriedade | Tipo | Default | Descrição |
---|---|---|---|
headless | Boolean | true | Se true , o navegador interno do Puppeteer será executado pode ser observado as acões. |
delay | Number | 300 | Tempo, em ms, usado para adicionar valores nos inputs para evitar problemas de digitação muito rápida. |
timeout | Number | 300 | Tempo, em ms, de resposta de uma ação, para evitar obtenção de informações nulas ou vazias espera um tempo para a respsosta do navegador. |
1. Obtenção dos Rendimentos
Serviço para obtenção dos rendimentos.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getIncomeAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});
b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getIncomeAsync();
console.log(JSON.stringify(data, null, 2));
1.1. Get Income
Retorna os dados os rendiementos do mês.
const resuls = await ceiService.getIncomeAsync();
Resultado:
[
{
brokerName: '100 - Corretora 100',
brokerCode: '100',
status: 'S',
errors: [],
incomeList: [
{
active: 'Ação 01',
specification: 'ON NM',
code: 'ACAO01',
paymentDate: '01/01/2020',
eventType: 'DIVIDENDO',
quantity: 100,
quotationFactor: 1,
grossValue: 50.06,
netValue: 50,
},
{
active: 'Ação 02',
specification: 'ON NM',
code: 'ACAO02',
paymentDate: '05/01/2020',
eventType: 'DIVIDENDO',
quantity: 118,
quotationFactor: 1,
grossValue: 80.01,
netValue: 80,
},
{
active: 'Ação 03',
specification: 'ON NM',
code: 'ACAO03',
paymentDate: '10/01/2020',
eventType: 'JUROS SOBRE CAPITAL PRÓPRIO',
quantity: 118,
quotationFactor: 1,
grossValue: 25.04,
netValue: 21.13,
},
{
active: 'Ação 04',
specification: 'CI',
code: 'ACAO04',
paymentDate: '15/01/2020',
eventType: 'RENDIMENTO',
quantity: 29,
quotationFactor: 1,
grossValue: 34.87,
netValue: 34.06,
},
],
},
{
brokerName: '200 - Corretora 200',
brokerCode: '200',
status: 'N',
errors: [],
incomeList: [],
},
{
brokerName: '300 - Corretora 300',
brokerCode: '300',
status: 'N',
errors: [],
incomeList: [],
},
];
brokerName = Nome da corretora;
brokerCode = Código da corretora;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- incomeList = Lista com todos os rendimentos encontrado no CEI;
Income List
Propriedade | Tipo | Descrição |
---|---|---|
active | String | Nome completo da ação. |
specification | String | Especificação da ação se é Ações ordinárias (ON) ou preferenciais (PN). |
code | String | Código de negociação do ativo. |
paymentDate | String | Data de pagamento ou previsão de pagamento do ativo. |
eventType | String | Tipo de evento do ativo que pode ser: Dividendo, Juros sobre capital, Rendimento, etc. |
quantity | Number | Quantidade do ativo na carteira. |
quotationFactor | Number | Fator da cotação. |
grossValue | Number | Valor Bruto (R$) do rendimento do ativo. |
netValue | Number | Valor líquido (R$) do rendimento do ativo. |
2. Obtenção carteira de ativos
Serviço para obtenção dos ativos disponíveis no CEI.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getPortfolioAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});
b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getPortfolioAsync();
console.log(JSON.stringify(data, null, 2));
2.1. Get Portfolio
Retorna os dados da carteira de ativos do mês no CEI.
const resuls = await ceiService.getPortfolioAsync();
Resultado:
[
{
status: 'S',
errors: [],
brokerName: "100 - Corretora 100'",
brokerCode: '100',
portfolioList: [
{
company: 'Empresa 01',
specification: 'CI',
code: 'ABC01',
codISIN: 'BRBABC01',
price: '110,10',
quantity: '60',
quotationFactor: 1,
grossValue: '2.100,10',
},
{
company: 'Empresa 02',
specification: 'ON NM',
code: 'CCC02',
codISIN: 'BRECCC02',
price: '40,60',
quantity: '200',
quotationFactor: 1,
grossValue: '5.000,70',
},
{
company: 'Empresa 03',
specification: 'ON NM',
code: 'CCC03',
codISIN: 'BRECCC03',
price: '60,60',
quantity: '700',
quotationFactor: 1,
grossValue: '1.000,10',
},
{
company: 'Empresa 04',
specification: 'ON NM',
code: 'CCC04',
codISIN: 'BRECCC04',
price: '15,60',
quantity: '600',
quotationFactor: 1,
grossValue: '10.000,70',
},
],
},
{
status: 'N',
errors: [],
brokerName: 'Empresa 02',
brokerCode: '200',
portfolioList: [],
},
{
status: 'N',
errors: [],
brokerName: 'Empresa 03',
brokerCode: '300',
portfolioList: [],
},
];
brokerName = Nome da corretora;
brokerCode = Código da corretora;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- portfolioList = Lista com todos os ativos da sua carteira encontrado no CEI;
Portfolio List
Propriedade | Tipo | Descrição |
---|---|---|
company | String | Nome da empresa . |
specification | String | Especificação da ação se é Ações ordinárias (ON) ou preferenciais (PN). |
code | String | Código de negociação do ativo. |
codISIN | String | International Securities Identification Number. |
price | Number | Preço do ativo. |
quantity | Number | Quantidade do ativo na carteira. |
quotationFactor | Number | Fator da cotação. |
grossValue | Number | Valor Bruto (R$) do rendimento do ativo. |
3. Negociação de ativos
Serviço para a obtenção das negociações de ativos.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getActiveTradesAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});
b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getActiveTradesAsync();
console.log(JSON.stringify(data, null, 2));
3.1. Get Active Trades
Retorna os dados das negociações de ativos no período disponivel.
const resuls = await ceiService.getActiveTradesAsync();
Resultado:
[
{
"status": "S",
"errors": [],
"brokerName": "01 - Corretora 01",
"brokerCode": "01",
"startDate": "01/01/2020",
"endDate" : "01/01/2021",
"tradedAssetList": [
{
"businessDate": "01/01/2021",
"buyOrSell": "C",
"marketplace": "Mercado a Vista",
"termMaturity": "",
"code": "COD001",
"specification": "FII COD001",
"quantity": 10,
"price": 100.10,
"totalAmount": 1001,
"quotationFactor": 1
},
{
"businessDate": "01/01/2021",
"buyOrSell": "C",
"marketplace": "Mercado a Vista",
"termMaturity": "",
"code": "COD002",
"specification": "ON",
"quantity": 5,
"price": 0.94,
"totalAmount": 4.7,
"quotationFactor": 1
},
{
"businessDate": "01/01/2020",
"buyOrSell": "C",
"marketplace": "Merc. Fracionário",
"termMaturity": "",
"code": "COD003",
"specification": "ON",
"quantity": 9,
"price": 0.97,
"totalAmount": 8.73,
"quotationFactor": 1
}
],
"negociatedSummaryList": [
{
"code": "COD001",
"period": "01/01/2020 a 01/01/2021",
"purchaseAmount": 50,
"saleAmount": 0,
"averagePurchasePrice": 102.8,
"averageSalePrice": 0,
"liquidity": 0,
"position": "-"
},
{
"code": "COD002",
"period": "01/01/2020 a 01/01/2021",
"purchaseAmount": 100,
"saleAmount": 0,
"averagePurchasePrice": 42.381,
"averageSalePrice": 0,
"liquidity": 0,
"position": "-"
},
{
"code": "COD003",
"period": "01/01/2020 a 01/01/2021",
"purchaseAmount": 28,
"saleAmount": 0,
"averagePurchasePrice": 26.831,
"averageSalePrice": 0,
"liquidity": 0,
"position": "-"
}
]
},
{
"status": "S",
"errors": [],
"brokerName": "02 - Corretora 02",
"brokerCode": "02",
"tradedAssetList": [],
"negociatedSummaryList": []
},
{
"status": "S",
"errors": [],
"brokerName": "03 - Corretora 03",
"brokerCode": "03",
"tradedAssetList": [],
"negociatedSummaryList": []
}
]
brokerName = Nome da corretora;
brokerCode = Código da corretora;
startDate = Período inicial disponível;
endDate = Período final disponível;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- tradedAssetList = Lista de todos ativos negociados;
- negociatedSummaryList = Lista do resumo dos negócios no período;
TradedAsset List
Propriedade | Tipo | Descrição |
---|---|---|
businessDate | String | Data de negócio. |
buyOrSell | String | Compra/Venda. |
marketplace | String | Mercado, Mercado a Vista, Merc. Fracionário, etc. |
termMaturity | String | Prazo/Vencimento. |
code | String | Código negociação do ativo. |
specification | String | Especificação do ativo. |
quantity | Number | Quantidade de ativos. |
price | Number | Preço unitário (R$) do ativo. |
totalAmount | Number | Valor total da quantidade vezes preço unitário. |
quotationFactor | Number | Fator de cotação. |
3.2. Negociated Summary List
Propriedade | Tipo | Descrição |
---|---|---|
code | String | Código do ativo. |
period | String | período da negociação dos ativos. |
purchaseAmount | Number | Quantidade de compra. |
saleAmount | Number | Quantidade de venda. |
averagePurchasePrice | Number | Preço médio de compra. |
averageSalePrice | Number | Preço médio de venda. |
liquidity | Number | Quantidade liquída. |
position | Number | Posição. |
4. Tesouro Direto
Serviço para obtenção dos investimentos em tesouro direto.
a - Javascript
const CeiService = require('cei-bot').CeiService;
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
ceiService.getTreasureAsync().then(data => {
console.log(JSON.stringify(data, null, 2));
});
b - TypeScript
import { CeiService } from 'cei-bot';
const ceiService = new CeiService({
login: 'username',
password: 'password',
});
const data = await ceiService.getTreasureAsync();
console.log(JSON.stringify(data, null, 2));
4.1. Get Treasure
Retorna os dados dos investimentos em tesouro direto.
const resuls = await ceiService.getTreasureAsync();
Resultado:
[
{
"status": "S",
"errors": [],
"brokerName": "100 - Corretora 01",
"brokerCode": "100",
"treasureList": [
{
"Title": "Tesouro IPCA+ 2055",
"maturity": "15/05/2055",
"Extrato Analítico": "15.330,03",
"invested": "19.204,41",
"currentGross": "18.262,37",
"currentNet": "10,80",
"total": "0,00",
"blocked": ""
},
{
"Title": "Tesouro IPCA+ 2035",
"maturity": "15/05/2035",
"Extrato Analítico": "3.997,44",
"invested": "4.133,27",
"currentGross": "4.096,96",
"currentNet": "3,14",
"total": "0,00",
"blocked": ""
}
]
},
{
"status": "N",
"errors": [],
"brokerName": "200 - Corretora 02",
"brokerCode": "200",
"treasureList": []
},
{
"status": "N",
"errors": [],
"brokerName": "300 - Corretora 03",
"brokerCode": "300",
"treasureList": []
},
]
brokerName = Nome da corretora;
brokerCode = Código da corretora;
status = Situação do retorno que pode ser S para Sucesso, E para situação de erro e N para situação de resposta não encontrada. Quando S representa que obteve dados do CEI se N significa não existem informações para a corretora;
errors = Lista de erros em formato de String;
- treasureList = Lista com todos os investimentos em tesouro direto;
Treasure List
Propriedade | Tipo | Descrição |
---|---|---|
Title | String | Título do tesouro direto. |
maturity | String | Data de vencimento. |
invested | Number | Valor investido. |
currentGross | Number | Bruto total. |
currentNet | Number | Líquido atual. |
total | Number | Quatidade total comprado. |
blocked | Number | Quantidade bloqueada. |
🛠 Tecnologias
As seguintes ferramentas foram usadas na construção do projeto:
Features
- Rendiemntos
- Carteira de ações
- Negociação de ativos
- Tesouro direto
Contribuidores
Licença
MIT
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago