Resolve "Implement action fetching for Alpaca" #31

Merged
clbertolini merged 12 commits from 14-implement-action-fetching-for-alpaca into main 2023-11-10 21:36:43 +00:00
2 changed files with 16 additions and 9 deletions
Showing only changes of commit 5b66bcd2c0 - Show all commits

View File

@ -1,5 +1,5 @@
import Alpaca from '@alpacahq/alpaca-trade-api';
import { Action, ActionSide, ActionFetchOptions, ActionFetchResponse } from '../interface/actions';
import { Action, ActionSide, ActionFetchOptions, ActionFetchResponse, ActionDateType } from '../interface/actions';
class AlpacaActivity {
id!: string;
@ -22,11 +22,11 @@ export class AlpacaActionProvider {
readonly fetchActions = (options: ActionFetchOptions): Promise<ActionFetchResponse> => {
return (this.alpaca.getAccountActivities({
activityTypes: "FILL",
until: undefined,
after: undefined,
until: options.dateOptions?.dateType === ActionDateType.Before ? options.dateOptions.date : undefined,
after: options.dateOptions?.dateType === ActionDateType.After ? options.dateOptions.date : undefined,
direction: "desc",
date: undefined,
pageSize: undefined,
date: options.dateOptions?.dateType === ActionDateType.On ? options.dateOptions.date : undefined,
pageSize: options.pageSize,
pageToken: undefined,
}) as Promise<AlpacaActivity[]>).then((activities) => {
return new ActionFetchResponse(

View File

@ -3,6 +3,8 @@ import 'dotenv/config';
import { ActionFetchOptions, AlpacaExchange } from '../src/index';
import { createLogger, transports, format } from "winston";
const timeout = 10000;
const logger = createLogger({
transports: [new transports.Console()],
format: format.combine(
@ -23,19 +25,24 @@ describe('Alpaca Tests', () => {
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
await expect(exchange.portfolioProvider.fetchPortfolio()).resolves.toBeDefined();
}, 10000);
}, timeout);
test('quote fetch', async () => {
expect(process.env.ALPACA_API_KEY).toBeDefined();
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
await expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves.toBeDefined();
}, 10000);
}, timeout);
test('action fetch', async () => {
expect(process.env.ALPACA_API_KEY).toBeDefined();
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
await expect(exchange.actionProvider.fetchActions(new ActionFetchOptions)).resolves.toBeDefined();
}, 10000);
const response = await exchange.actionProvider.fetchActions(new ActionFetchOptions());
logger.info(JSON.stringify(response));
await expect(exchange.actionProvider.fetchActions(new ActionFetchOptions())).resolves.toBeDefined();
}, timeout);
});