alpaca
A TypeScript Node.js library for the https://alpaca.markets REST API and
WebSocket streams.
Contents
Features
Install
From NPM:
> npm i @master-chief/alpaca
Client
Creating a new client
If you wish to use env vars, populate these fields with process.env
on your
own.
import { Client } from "@master-chief/alpaca";
const client = new Client({
credentials: {
key: "...",
secret: "...",
},
paper: true,
rate_limit: true,
});
Examples
The following methods are available on the client.
isAuthenticated
await client.isAuthenticated();
getAccount
await client.getAccount();
getOrder
await client.getOrder({
order_id: "6187635d-04e5-485b-8a94-7ce398b2b81c",
});
getOrders
await client.getOrders({
limit: 25,
status: "all",
});
placeOrder
await client.placeOrder({
symbol: "SPY",
qty: 1,
side: "buy",
type: "market",
time_in_force: "day",
});
replaceOrder
await client.replaceOrder({
order_id: "69a3db8b-cc63-44da-a26a-e3cca9490308",
limit_price: 9.74,
});
cancelOrder
await client.cancelOrder({
order_id: "69a3db8b-cc63-44da-a26a-e3cca9490308",
});
cancelOrders
await client.cancelOrders();
getPosition
await client.getPosition({ symbol: "SPY" });
getPositions
await client.getPositions();
closePosition
await client.closePosition({ symbol: "SPY" });
closePositions
await client.closePositions();
getAsset
await client.getAsset({ asset_id_or_symbol: "SPY" });
getAssets
await client.getAssets({ status: "active" });
getWatchlist
await client.getWatchlist({ uuid: "2000e463-6f87-41c0-a8ba-3e40cbf67128" });
getWatchlists
await client.getWatchlists();
createWatchlist
await client.createWatchlist({
name: "my watchlist",
symbols: ["SPY", "DIA", "EEM", "XLF"],
});
updateWatchlist
await client.updateWatchlist({
uuid: "2000e463-6f87-41c0-a8ba-3e40cbf67128",
name: "new watchlist name",
symbols: ["TSLA", "AAPL"],
});
addToWatchlist
await client.addToWatchlist({
uuid: "2000e463-6f87-41c0-a8ba-3e40cbf67128",
symbol: "F",
});
removeFromWatchlist
await client.removeFromWatchlist({
uuid: "2000e463-6f87-41c0-a8ba-3e40cbf67128",
symbol: "F",
});
deleteWatchlist
await client.deleteWatchlist({
uuid: "2000e463-6f87-41c0-a8ba-3e40cbf67128",
});
getCalender
await client.getCalendar({ start: new Date(), end: new Date() });
getClock
await client.getClock();
getAccountConfigurations
await client.getAccountConfigurations();
updateAccountConfigurations
await client.updateAccountConfigurations({
no_shorting: true,
suspend_trade: true,
});
getAccountActivities
await client.getAccountActivities({
activity_type: "FILL",
});
getPortfolioHistory
await client.getPortfolioHistory({
period: "1D",
timeframe: "1Min",
});
getBars
await client.getBars({
symbols: ["SPY", "DIA", "XLF"],
});
getLastTrade
await client.getLastTrade({
symbol: "SPY",
});
getLastQuote
await client.getLastQuote({
symbol: "SPY",
});
Stream
Creating a new stream
If you wish to use env vars, populate these fields with process.env
on your
own.
import { Stream } from "@master-chief/alpaca";
const stream = new Stream({
credentials: {
key: "...",
secret: "...",
},
stream: "market_data",
});
Events
Event | Stream |
---|
aggregate_minute | market_data |
quote | market_data |
trade | market_data |
trade_updates | account |
account_updates | account |
Examples
The following methods are available on the stream.
subscribe
stream.subscribe(["AM.SPY"]);
unsubscribe
stream.unsubscribe(["AM.SPY"]));
on
stream.on("aggregate_minute", ...)
Contributing
Pull requests are encouraged. 😁