Added documentation for Alpaca

This commit is contained in:
2023-10-20 17:28:06 -04:00
parent 7ceb69e9d5
commit ad27d7280b
3 changed files with 47 additions and 0 deletions

View File

@@ -1,6 +1,10 @@
import Alpaca from '@alpacahq/alpaca-trade-api'
import { PortfolioProvider, Portfolio, Position } from '../interface/portfolio';
/**
* The position object returned by Alpaca.
* @see https://alpaca.markets/docs/api-references/trading-api/positions/#properties
*/
class AlpacaPosition {
asset_id!: string;
symbol!: string;
@@ -22,9 +26,18 @@ class AlpacaPosition {
asset_marginable!: string;
}
/**
* Provides a portfolio using the Alpaca API client.
*/
export class AlpacaPortfolioProvider implements PortfolioProvider {
/**
* The Alpaca API client.
*/
readonly alpaca: Alpaca;
/**
* Fetches the portfolio.
*/
readonly fetchPortfolio = (): Promise<Portfolio> => {
return (this.alpaca.getPositions() as Promise<AlpacaPosition[]>).then((positions) => {
return new Portfolio(positions.map((position) => {
@@ -39,6 +52,11 @@ export class AlpacaPortfolioProvider implements PortfolioProvider {
});
}
/**
* Creates a new AlpacaPortfolioProvider instance.
* @constructor
* @param {Alpaca} alpaca - The Alpaca API client.
*/
constructor(alpaca: Alpaca) {
this.alpaca = alpaca;
}