New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

candlestick-convert

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

candlestick-convert

OHLCV Candlestick converter and batcher with Typescript support

latest
Source
npmnpm
Version
7.0.0
Version published
Maintainers
1
Created
Source

candlestick-convert

Coverage Status DeepScan grade npm

This package allows you to batch OHLCV candlesticks or create them from trade (tick) datasets.

Breaking Changes

Version 7.x introduces many breaking changes compared to version 6.x.x.

Supported formats:

  • OHLCV (CCXT format) [[time,open,high,low,close,volume]]
  • OHLCV JSON [{time: number,open: number, high: number, low: number close: number, volume: number}]
  • Tick JSON [{price: number, quantity: number, time:number}]
  • Trade JSON [{price: number, quantity: number, time:number, side: number}]

Features:

  • Typescript
  • CCXT support
  • No Dependencies
  • Performance single loop used
  • Skip missing candles

Important!:

  • Intervals are only supported as integers in seconds (1 minute = 60, 2 minutes = 120...).
  • Only positive integer multiples are allowed between the base interval and the new interval, e.g., 60->120, 60->180.

Install:

npm install candlestick-convert

Available functions:

import {batchCandles, batchCandlesWithCustomInterval, batchCandlesJSON, batchTicksToCandle, ticksToTickChart} from "candlestick-convert";

batchCandles(candledata: OHLCV[], baseInterval = 60, targetInterval = 300, includeOpenCandle = false)
//return OHLCV[]

batchCandlesWithCustomInterval(candleData: OHLCV[], intervalFunction: IntervalFunction, includeOpenCandle = false)
//return OHLCV[]

batchCandlesJSON(candledata: IOHLCV [], baseInterval = 60, argetInterval = 300)
// return IOHLCV[]

batchTicksToCandle(tradedata: TradeTick[], interval = 60,  includeOpenCandle = false)
// return IOHLCV[]

ticksToTickChart(tradedata: TradeTick[], numberOfTicks = 5)
// return IOHLCV[]

batchTradeToExtCandle(tradedata: Trade[], interval = 60,  includeOpenCandle = false)
// return ExtIOHLCV[]

** includeOpenCandle allow non-complete candles in the result, useful for not normalized input data

Types

export type IOHLCV = {
  time: number,
  open: number,
  high: number,
  low: number,
  close: number,
  volume: number,
};

export type ExtIOHLCV = {
  time: number,
  open: number,
  high: number,
  low: number,
  close: number,
  volume: number,
  buyVolume: number,
  tx: number,
  buyTx: number,
};

export const TradeSide = {
  BUY: 0,
  SELL: 1,
};

export type TradeTick = {
  price: number;
  quantity: number;
  time: number;
};

export type Trade = {
  price: number;
  quantity: number;
  time: number;
  side: number;
};

export enum OHLCVField {
  TIME = 0,
  OPEN = 1,
  HIGH = 2,
  LOW = 3,
  CLOSE = 4,
  VOLUME = 5,
}

Examples

CCXT OHLCV:

import { batchCandleJSON } from "candlestick-convert";

const link_btc_1m = [
  {
    time: 1563625680000,
    open: 0.00024824,
    high: 0.00024851,
    low: 0.00024798,
    close: 0.00024831,
    volume: 2264,
  },
  {
    time: 1563625740000,
    open: 0.00024817,
    high: 0.00024832,
    low: 0.00024795,
    close: 0.00024828,
    volume: 3145,
  },
];

const baseFrame = 60; // 60 seconds
const newFrame = 120; // 120 seconds

// Convert to 2m Candles

const link_btc_2m = batchCandleJSON(link_btc_1m, baseFrame, newFrame);

Extended Candles from Trades:

import { batchTradeToExtCandle, Trade } from "candlestick-convert";

const adabnb_trades = [
  {
    time: "1564502620356",
    side: "sell",
    quantity: "4458",
    price: "0.00224",
    tradeId: "1221272",
  },
  {
    time: "1564503133949",
    side: "sell",
    quantity: "3480",
    price: "0.002242",
    tradeId: "1221273",
  },
  {
    time: "1564503134553",
    side: "buy",
    quantity: "51",
    price: "0.002248",
    tradeId: "1221274",
  },
  // ... more data
];

const filtered_adabnb_trades: Trade[] = adabnb_trades.map((trade: any) => ({
  time: trade.time,
  quantity: trade.quantity,
  price: trade.price,
  side: trade.side === "buy" ? 0 : 1,
}));

// 1 minute (60 second) Candles
const candles1m = batchTradeToExtCandle(filtered_adabnb_trades, 60);

/* Result:
[
  {
    time: 1564502580000, // 2019-07-30T16:03:00.000Z
    open: 0.00224,
    high: 0.00224,
    low: 0.00224,
    close: 0.00224,
    volume: 4458,
    buyVolume: 0,
    tx: 1,
    buyTx: 0,
  },
  {
    time: 1564503120000,
    open: 0.00224,
    high: 0.002248,
    low: 0.002242,
    close: 0.002248,
    volume: 4949,
    buyVolume: 103,
    tx: 3,
    buyTx: 2,
  }
]


Keywords

ohlc

FAQs

Package last updated on 14 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts