https://github.com/adiled/ohlc-resample
:candle: Resample (inter-convert) market trades, ticks or OHLCV data to different time frames.
https://github.com/adiled/ohlc-resample
candlestick candlestick-chart crypto ohlcv ohlcv-convert ohlcv-resample technical-analysis trading
Last synced: 2 months ago
JSON representation
:candle: Resample (inter-convert) market trades, ticks or OHLCV data to different time frames.
- Host: GitHub
- URL: https://github.com/adiled/ohlc-resample
- Owner: adiled
- License: lgpl-3.0
- Created: 2021-06-23T08:35:21.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-06-15T20:03:52.000Z (4 months ago)
- Last Synced: 2025-07-09T08:43:26.063Z (3 months ago)
- Topics: candlestick, candlestick-chart, crypto, ohlcv, ohlcv-convert, ohlcv-resample, technical-analysis, trading
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/ohlc-resample
- Size: 374 KB
- Stars: 25
- Watchers: 2
- Forks: 9
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
ohlc-resample 🕯️
Resample (inter-convert) trade, ticks or OHLCV data to different time frames
- Typescript support
- CCXT support
- Single dependency
- Low time complexity grouping based aggregations
- Optional gap filling## Install
```sh
npm install --save ohlc-resample
```## 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}]`
- Trade JSON `[{time: number, price: number, quantity: number}]`## Reference
```typescript
import {
resampleOhlcv,
resampleTicksByTime,
resampleTicksByCount,
} from "ohlc-resample";// OHLCV resampled from 1 minute to 5 minute
resampleOhlcv(objectOhlcv as IOHLCV[], {
baseTimeframe: 60,
newTimeframe: 5 * 60,
}); // return IOHLCV[]
resampleOhlcv(arrayOhlcv as OHLCV[], {
baseTimeframe: 60,
newTimeframe: 5 * 60,
}); // return OHLCV[]// Ticks grouped and resampled to 1m OHCLV
// option.includeLatestCandle is by default `true`
// options.fillGaps is by default `false`resampleTicksByTime(tickData as TradeTick[], {
timeframe: 60,
includeLatestCandle: false,
fillGaps: true,
}); // return IOHLCV[]// Ticks grouped and resampled by every 5 ticks
resampleTicksByCount(tickData as TradeTick[], { tickCount: 5 }); // return IOHLCV[]
```## Types
```typescript
export type IOHLCV = {
time: number;
open: number;
high: number;
low: number;
close: number;
volume: number;
};export type OHLCV = [number, number, number, number, number, number];
export type TradeTick = {
price: number;
quantity: number;
time: number;
};
```**Note:** Input time for all above types must be in milliseconds
## Examples
**Resample CCXT (Object) OHLCV based on timeframe**
```typescript
import { resampleOhlcv } from "ohlc-resample";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 baseTimeframe = 60; // 60 seconds
const newTimeframe = 120; // 120 seconds// Candles made up of ticks within 2 minute timeframes
const link_btc_2m = resampleOhlcv(link_btc_1m, {
baseTimeframe,
newTimeframe,
});
```**Resample ticks to OHLCV based on tick count**
```typescript
import { resampleTicksByCount, TradeTick } from "ohlc-resample";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",
},
];const airbnb_ticks: TradeTick[] = adabnb_trades.map((trade: any) => ({
time: Number(trade.time),
quantity: Number(trade.quantity),
price: Number(trade.price),
}));// Candles made up of two ticks
const tickChart = resampleTicksByCount(airbnb_ticks, {
tickCount: 2,
});
```## Contributors
👤 **Adil Shaikh (https://adils.me)**
- Website: https://adils.me
- Github: [@adiled](https://github.com/adiled)👤 Past authors of `candlestick-convert`
## 🤝 Contributing
Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/adiled/ohlc-resample/issues). You can also take a look at the [contributing guide](https://github.com/adiled/ohlc-resample/blob/master/CONTRIBUTING.md).### Run tests
```sh
yarn test
```## Show your support
Give a ⭐️ if this project helped you!
## 📝 License
Copyright © 2022 [Adil Shaikh (https://adils.me)](https://github.com/adiled).
This project is [LGPL--3.0](https://github.com/adiled/ohlc-resample/blob/master/LICENSE) licensed.