Add support for Alpaca action fetch options.
This commit is contained in:
parent
158c92c4a5
commit
5b66bcd2c0
@ -1,5 +1,5 @@
|
|||||||
import Alpaca from '@alpacahq/alpaca-trade-api';
|
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 {
|
class AlpacaActivity {
|
||||||
id!: string;
|
id!: string;
|
||||||
@ -22,11 +22,11 @@ export class AlpacaActionProvider {
|
|||||||
readonly fetchActions = (options: ActionFetchOptions): Promise<ActionFetchResponse> => {
|
readonly fetchActions = (options: ActionFetchOptions): Promise<ActionFetchResponse> => {
|
||||||
return (this.alpaca.getAccountActivities({
|
return (this.alpaca.getAccountActivities({
|
||||||
activityTypes: "FILL",
|
activityTypes: "FILL",
|
||||||
until: undefined,
|
until: options.dateOptions?.dateType === ActionDateType.Before ? options.dateOptions.date : undefined,
|
||||||
after: undefined,
|
after: options.dateOptions?.dateType === ActionDateType.After ? options.dateOptions.date : undefined,
|
||||||
direction: "desc",
|
direction: "desc",
|
||||||
date: undefined,
|
date: options.dateOptions?.dateType === ActionDateType.On ? options.dateOptions.date : undefined,
|
||||||
pageSize: undefined,
|
pageSize: options.pageSize,
|
||||||
pageToken: undefined,
|
pageToken: undefined,
|
||||||
}) as Promise<AlpacaActivity[]>).then((activities) => {
|
}) as Promise<AlpacaActivity[]>).then((activities) => {
|
||||||
return new ActionFetchResponse(
|
return new ActionFetchResponse(
|
||||||
|
@ -3,6 +3,8 @@ import 'dotenv/config';
|
|||||||
import { ActionFetchOptions, AlpacaExchange } from '../src/index';
|
import { ActionFetchOptions, AlpacaExchange } from '../src/index';
|
||||||
import { createLogger, transports, format } from "winston";
|
import { createLogger, transports, format } from "winston";
|
||||||
|
|
||||||
|
const timeout = 10000;
|
||||||
|
|
||||||
const logger = createLogger({
|
const logger = createLogger({
|
||||||
transports: [new transports.Console()],
|
transports: [new transports.Console()],
|
||||||
format: format.combine(
|
format: format.combine(
|
||||||
@ -23,19 +25,24 @@ describe('Alpaca Tests', () => {
|
|||||||
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
|
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
|
||||||
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
|
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
|
||||||
await expect(exchange.portfolioProvider.fetchPortfolio()).resolves.toBeDefined();
|
await expect(exchange.portfolioProvider.fetchPortfolio()).resolves.toBeDefined();
|
||||||
}, 10000);
|
}, timeout);
|
||||||
|
|
||||||
test('quote fetch', async () => {
|
test('quote fetch', async () => {
|
||||||
expect(process.env.ALPACA_API_KEY).toBeDefined();
|
expect(process.env.ALPACA_API_KEY).toBeDefined();
|
||||||
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
|
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
|
||||||
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
|
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
|
||||||
await expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves.toBeDefined();
|
await expect(exchange.quoteProvider.fetchQuote("AAPL")).resolves.toBeDefined();
|
||||||
}, 10000);
|
}, timeout);
|
||||||
|
|
||||||
test('action fetch', async () => {
|
test('action fetch', async () => {
|
||||||
expect(process.env.ALPACA_API_KEY).toBeDefined();
|
expect(process.env.ALPACA_API_KEY).toBeDefined();
|
||||||
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
|
expect(process.env.ALPACA_SECRET_KEY).toBeDefined();
|
||||||
const exchange = new AlpacaExchange(process.env.ALPACA_API_KEY!, process.env.ALPACA_SECRET_KEY!, true);
|
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);
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user