JSPM

  • Created
  • Published
  • Downloads 161
  • Score
    100M100P100Q91420F
  • License ISC

a TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams

Package Exports

  • @master-chief/alpaca

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@master-chief/alpaca) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

alpaca

version language maintenance prettier

a TypeScript Node.js library for the https://alpaca.markets REST API and WebSocket streams

Contents

Features

  • Fully asynchronous API.
  • Extensible Client and Stream classes.
  • Built-in rate limiting.
  • A 1:1 mapping of the official Alpaca docs.

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. 😁