Added documentation for Alpaca
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user