Skip to content

Cross-platform desktop app visualizing basic orderflow in crypto markets

License

Notifications You must be signed in to change notification settings

akenshaw/flowsurface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

overview-layout

Some of the features:

  • Customizable and savable grid layouts, selectable themes
  • Supports most of the spot(USDT) and linear/inverse perp pairs from Binance & Bybit
  • Tick size multipliers for price grouping on FootprintChart & HeatmapChart
  • Alongside traditional Time-based charts, CandlestickChart & FootprintChart supports "ticks"(based on aggregated trade streams) to be used as intervals to create Tick-based charts
layout-manager expanded-ticker-card
User receives market data directly from exchanges' public REST APIs & Websockets over TLS
  • Orderbook total bid/ask levels: 1000 for Binance Perp/Spot; 500 for Bybit Perps, 200 for Bybit Spot
  • Binance perp/spot & Bybit perp pairs streams @100ms; Bybit spot pairs streams @200ms
  • As historical data, it can fetch OHLCV, open interest and partially, trades:

Historical trades on footprint chart:

Optionally, you can enable trade fetching from settings menu, experimental because of unreliability:

  • Binance connector supports downloading historical trades from data.binance.vision, fast and easy way to get trades, but they dont support intraday data. Intraday trades fetched by pagination using Binance's public REST APIs: /fapi/v1/aggTrades & api/v3/aggTrades, which might be slow because of rate-limits

  • Bybit itself doesnt have a similar purpose public REST API

Flowsurface can use those ends with Binance tickers to visualize historical public trades while being independent of a 'middleman' database between exchange and the user

So, when a chart instance signal the exchange connector after a data integrity check, about missing trades in the visible range; it tries via fetching, downloading and/or loading from cache, whichever suitable to get desired historical data

Build from source

Requirements:

  • Rust toolchain
  • Git version control system
  • System dependencies:
    • Linux:
      • Debian/Ubuntu: sudo apt install build-essential pkg-config libasound2-dev
      • Arch: sudo pacman -S base-devel alsa-lib
      • Fedora: sudo dnf install gcc make alsa-lib-devel
    • macOS: Install Xcode Command Line Tools: xcode-select --install
    • Windows: No additional dependencies required
# Clone the repository
git clone https://github.com/akenshaw/flowsurface

cd flowsurface

# Build and run
cargo build --release
cargo run --release