SDK não oficial para negociação de ações da Halifax, negociação de ações da IWeb, negociação de ações do Bank of Scotland e o Serviço de Investimentos Diretos do Lloyds Bank
Raspa o Internet Banking, por isso pode ser quebrado por atualizações no front -end
import halifaxShareDealingSdk from 'halifax-share-dealing-sdk'
// Alternatively:
// const halifaxShareDealingSdk = require('halifax-share-dealing-sdk').default
const sd = halifaxShareDealingSdk ( {
site : 'halifax' , // one of 'halifax', 'iweb', 'bos', 'lloyds'
USERNAME : 'username' ,
PASSWORD : 'password' ,
MEMORABLE_INFORMATION : {
"Your mother's FIRST name" : 'Jane' ,
"Your father's FIRST name" : 'John' ,
'Your place/town of birth' : 'Anytown' ,
'The name of your first school' : 'Anyschool'
}
} )
Isso é necessário antes de fazer outras chamadas
Retorna um objeto contabilizado com a conta padrão
sd . login ( )
. then ( console . dir )
// { accountId: '000123456ABCD' }
Lista todas as contas
Retorna uma variedade de objetos de conta com nomes e saldos de contas
sd . login ( )
. then ( sd . getAccounts )
. then ( console . dir )
// [ { accountId: '000123456',
// name: 'Share Dealing Account',
// availableToInvest: { asFloat: 1.23, asText: '£1.23', asRawText: '£1.23' },
// totalSecurities: { asFloat: 4.56, asText: '£4.56', asRawText: '£4.56' },
// totalValue: { asFloat: 5.79, asText: '£5.79', asRawText: '£5.79' } },
// { accountId: '000123456ABCD',
// name: 'Stocks and Shares ISA',
// availableToInvest: { asFloat: 1.23, asText: '£1.23', asRawText: '£1.23' },
// totalSecurities: { asFloat: 4.56, asText: '£4.56', asRawText: '£4.56' },
// totalValue: { asFloat: 5.79, asText: '£5.79', asRawText: '£5.79' } } ]
Obtém o conta da conta padrão da página 'Set Padrics'.
Retorna um objeto contabilizado com a conta padrão
sd . login ( )
. then ( sd . getDefaultAccount )
. then ( console . dir )
// { accountId: '000123456ABCD' }
Define a conta padrão
Requer um objeto de conta para a conta que você deseja definir como padrão
Retorna um objeto de conta com a nova conta padrão
sd . login ( )
. then ( ( ) => sd . setDefaultAccount ( { accountId : '000123456' } ) )
. then ( console . dir )
// { accountId: '000123456' }
sd . login ( )
. then ( sd . getAccounts )
. then ( accounts => accounts . find ( account => account . name == 'Share Dealing Account' ) )
. then ( sd . setDefaultAccount )
. then ( console . dir )
// { accountId: '000123456' }
Retorna as opções de dividendos para todas as contas
Retorna uma variedade de objetos de responsabilidade com dados de opção de dividendos
sd . login ( )
. then ( sd . getDividendOptions )
. then ( console . dir )
// [ { accountId: '000123456',
// dividendOptionCode: 'H',
// dividendOptionName: 'Hold In Account' },
// { accountId: '000123456ABCD',
// dividendOptionCode: 'R',
// dividendOptionName: 'Automatic Dividend Reinvestment' } ]
Define as opções de dividendos para todas as contas
Requer uma matriz de objetos de responsabilidade com dividendOptionCode
s. Requer apenas os dados para as contas que você deseja alterar. dividendOptionName
S são opcionais, mas se fornecidos, a solicitação falhará se o dividendOptionCode
S e dividendOptionName
S não corresponderem. accountId
S deve ser exclusivo na matriz de entrada.
Retorna uma variedade de objetos de responsabilidade com os dados da opção de dividendos atualizados
sd . login ( )
. then ( ( ) => [
{
accountId : '000123456ABCD' ,
dividendOptionCode : 'P6'
}
] )
. then ( sd . setDividendOptions )
. then ( console . dir )
// [ { accountId: '000123456',
// dividendOptionCode: 'H',
// dividendOptionName: 'Hold In Account' },
// { accountId: '000123456ABCD',
// dividendOptionCode: 'P6',
// dividendOptionName: 'Pay Away 6-Monthly' } ]
Recebe todas as declarações
Retorna uma variedade de declarações
sd . login ( )
. then ( sd . getStatements )
. then ( console . dir )
// [ { statementId: '1', statementDate: '01 Jan 1970' } ]
Recebe avaliação de uma conta
Requer um objeto de conta para a conta que você deseja obter a avaliação
Retorna um objeto contabilizado com dados de avaliação
sd . login ( )
. then ( sd . getValuation )
. then ( console . dir )
// { accountId: '000123456ABCD',
// stocks:
// [ { TIDM: 'LLOY',
// fullName: 'LLOYDS BANKING GP ORD GBP0.1',
// holding: { asFloat: 100, asText: '100.000', asRawText: '100.000' },
// avgCostPerShare: { asFloat: 0.495, asText: '49.50p', asRawText: '49.50p' },
// bookCost: { asFloat: 49.5, asText: '£49.50', asRawText: '£49.50' },
// latestPricePerShare: { asFloat: 0.555, asText: '55.50p', asRawText: '*55.50p' },
// valuation: { asFloat: 55.5, asText: '£55.50', asRawText: '£55.50' },
// change:
// { absolute: { asFloat: 6, asText: '£6.00', asRawText: '£6.00' },
// percentage: { asFloat: 0.1212, asText: '12.12%', asRawText: '12.12%' } } } ],
// cash: { asFloat: 1000, asText: '£1000.00', asRawText: '£ 1,000.00' },
// availableToInvest: { asFloat: 1000, asText: '£1000.00', asRawText: '£ 1,000.00' },
// totalSecurities: { asFloat: 55.5, asText: '£55.50', asRawText: '£ 55.50' },
// totalValue: { asFloat: 1055.5, asText: '£1055.50' } }
Obtém história de dividendos para uma conta
Requer um objeto de conta para a conta que você deseja obter o histórico de dividendos
Retorna uma variedade de dividendos históricos relacionados à conta
sd . login ( )
. then ( sd . getDividendHistory )
. then ( console . dir )
// [ { issueDate: '09 Oct 2019',
// fullName: 'VANGUARD FUNDS PLC FTSE 250 UCITS ETF GBP DIS',
// exDividendDate: '26 Sep 2019',
// sharesHeldOnExDividendDate: { asFloat: 1, asText: '1', asRawText: '1' },
// amountPayable: { asFloat: 0.26, asText: '£0.26', asRawText: '£0.26' },
// handlingOperation:
// { dividendOptionCode: 'Hold In Account',
// dividendOptionName: 'H' },
// cashRef: 'ABCDXYZ123' } ]
accountId
: equivalente ao que eu acho que o Halifax chama um PortCode
. Geralmente o código da conta com potencialmente algumas letras depois dele. As contas com diferentes accountId
podem compartilhar o mesmo código da conta. Eu acho que eles são únicos nos logins.statementId
: ID da declaração, acho que é um número incrementador a partir de 1
- não exclusivo entre os logins. As declarações são anexadas a um login (em oposição à conta) e statementId
S é único em um login.accounty object
: um objeto com uma propriedade accountId
Solicitações de tração são bem -vindas no Github! Para começar:
npm install
npm run test
para executar testes com JESTnpm run build
Um gancho de pré-compromisso útil (salve como .git/hooks/pre-commit
) para garantir que os testes passem, o código é formatado corretamente e você não deixou acidentalmente seus dados pessoais é (altere 000123456 para o código da sua conta ou outro Dados pessoais que você deseja pesquisar):
#! /bin/sh
npm run test && npm run lint && ! grep --exclude=pre-commit -r ' 000123456 ' .
AVISO: ainda é possível cometer seus dados se você o encenar, excluí -los e depois se comprometer. Por favor, tenha cuidado!
As versões seguem as especificações de versão semântica.
Para lançar:
npm version <major | minor | patch>
para esbarrar na versãogit push --follow-tags
para empurrar com tags