1.0.0-beta.1 • Published 2 years ago

@coinset/ftx v1.0.0-beta.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@coinset/ftx

Universal FTX API client

:children_crossing: This is not official

Public API

A request for an entry point that does not require authentication.

fetchMarket

Return type of market on FTX: spot, perpetual future, expiring future, and MOVE contract. Examples for each type are BTC/USD, BTC-PERP, BTC-0626, and BTC-MOVE-1005. For future that expired in 2019, prepend a 2019 to the date, like so: BTC-20190628 or BTC-MOVE-20190923. Docs

example:

import { fetchMarket } from "https://deno.land/x/ftx@$VERSION/mod.ts";
await fetchMarket("BTC/USD");

parameter:

nametyperequireddescription
marketNamestring*e.g. "BTC/USD" for spot, "BTC-PERP" for futures

returns:

type BaseMarketData = {
  quoteVolume24h: number;
  change1h: number;
  change24h: number;
  changeBod: number;
  highLeverageFeeExempt: boolean;
  minProvideSize: number;
  enabled: boolean;
  ask: number | null;
  bid: number | null;
  last: number | null;
  price: number | null;
  postOnly: boolean;
  priceIncrement: number;
  sizeIncrement: number;
  restricted: boolean;
  volumeUsd24h: number;
  tokenizedEquity?: boolean | undefined;
};

type MarketResponse = {
  success: true;
  result: (
    & BaseMarketData
    & ({
      name: `${string}/${string}`;
      baseCurrency: string;
      quoteCurrency: string;
      underlying: null;
      type: "spot";
    } | {
      name: string;
      baseCurrency: null;
      quoteCurrency: null;
      underlying: string;
      type: "future";
    })
  );
};

fetchMarkets

This section covers all types of markets on FTX: spot, perpetual futures, expiring futures, and MOVE contracts. Examples for each type are BTC/USD, BTC-PERP, BTC-0626, and BTC-MOVE-1005. For futures that expired in 2019, prepend a 2019 to the date, like so: BTC-20190628 or BTC-MOVE-20190923. Docs

example:

import { fetchMarkets } from "https://deno.land/x/ftx@$VERSION/mod.ts";
await fetchMarkets();

returns:

type BaseMarketData = {
  quoteVolume24h: number;
  change1h: number;
  change24h: number;
  changeBod: number;
  highLeverageFeeExempt: boolean;
  minProvideSize: number;
  enabled: boolean;
  ask: number | null;
  bid: number | null;
  last: number | null;
  price: number | null;
  postOnly: boolean;
  priceIncrement: number;
  sizeIncrement: number;
  restricted: boolean;
  volumeUsd24h: number;
  tokenizedEquity?: boolean | undefined;
};

type MarketsResponse = {
  success: true;
  result: (
    & BaseMarketData
    & ({
      name: `${string}/${string}`;
      baseCurrency: string;
      quoteCurrency: string;
      underlying: null;
      type: "spot";
    } | {
      name: string;
      baseCurrency: null;
      quoteCurrency: null;
      underlying: string;
      type: "future";
    })
  )[];
};

fetchOrderBook

Retrieve order book of market name. Docs

example:

import { fetchOrderBook } from "https://deno.land/x/ftx@$VERSION/mod.ts";
await fetchOrderBook("BTC/USD");

parameter:

nametyperequireddescription
marketNamestring*e.g. "BTC/USD" for spot, "BTC-PERP" for futures
options{ depth?: number }order book options

returns:

type OrderBookResponse = {
  success: true;
  result: {
    asks: [number, number][];
    bids: [number, number][];
  };
};

fetchTrades

Retrieve list of trade history. Docs

example:

import { fetchTrades } from "https://deno.land/x/ftx@$VERSION/mod.ts";
await fetchTrades("BTC/USD");

parameter:

nametyperequireddescription
marketNamestring*e.g. "BTC/USD" for spot, "BTC-PERP" for futures
options{ startTime?: number, endTime?: number }trades options

returns:

type TradesResponse = {
  success: true;
  result: {
    id: number;
    liquidation: boolean;
    price: number;
    side: "buy" | "sell";
    size: number;
    time: Date;
  }[];
};

fetchCandles

Historical prices of expired futures can be retrieved with this end point but make sure to specify start time and end time. Docs

example:

import { fetchCandles } from "https://deno.land/x/ftx@$VERSION/mod.ts";
await fetchCandles({ marketName: "BTC/USD", resolution: 300 });

parameter:

nametyperequireddescription
candleArgsFetchCandles*required candle args
options{ startTime?: number, endTime?: number }candle options
type FetchCandles = {
  marketName: string;
  resolution: (15 | 60 | 300 | 900 | 3600 | 14400 | 86400) | ({} & number);
};

returns:

type CandlesResponse = {
  success: true;
  result: {
    open: number;
    high: number;
    low: number;
    close: number;
    startTime: Date;
    volume: number;
    time: number;
  }[];
};