Crate crypto_crawler
source ·Expand description
A rock-solid cryprocurrency crawler.
Crawl realtime trades
use crypto_crawler::{crawl_trade, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl realtime trades for all symbols of binance inverse_swap markets
crawl_trade("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl realtime level2 orderbook incremental updates
use crypto_crawler::{crawl_l2_event, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl realtime level2 incremental updates for all symbols of binance inverse_swap markets
crawl_l2_event("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl level2 orderbook full snapshots from RESTful API
use crypto_crawler::{crawl_l2_snapshot, MarketType};
let (tx, rx) = std::sync::mpsc::channel();
std::thread::spawn(move || {
// Crawl level2 full snapshots for all symbols of binance inverse_swap markets
crawl_l2_snapshot("binance", MarketType::InverseSwap, None, tx);
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
Crawl realtime level2 orderbook top-K snapshots
use crypto_crawler::{crawl_l2_topk, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl realtime level2 top-k snapshots for all symbols of binance inverse_swap markets
crawl_l2_topk("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl realtime level3 orderbook incremental updates
use crypto_crawler::{crawl_l3_event, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl realtime level3 updates for all symbols of CoinbasePro spot market
crawl_l3_event("coinbase_pro", MarketType::Spot, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl level3 orderbook full snapshots from RESTful API
use crypto_crawler::{crawl_l3_snapshot, MarketType};
let (tx, rx) = std::sync::mpsc::channel();
std::thread::spawn(move || {
// Crawl level3 orderbook full snapshots for all symbols of CoinbasePro spot markets
crawl_l3_snapshot("coinbase_pro", MarketType::Spot, None, tx);
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
Crawl realtime BBO
use crypto_crawler::{crawl_bbo, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl realtime best bid and ask messages for all symbols of binance COIN-margined perpetual markets
crawl_bbo("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl 24hr rolling window tickers
use crypto_crawler::{crawl_ticker, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl 24hr rolling window tickers for all symbols of binance COIN-margined perpetual markets
crawl_ticker("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl candlesticks(i.e., OHLCV)
use crypto_crawler::{crawl_candlestick, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl candlesticks from 1 minute to 3 minutes for all symbols of binance COIN-margined perpetual markets
crawl_candlestick("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Crawl funding rates
use crypto_crawler::{crawl_funding_rate, MarketType};
#[tokio::main(flavor = "multi_thread")]
async fn main() {
let (tx, rx) = std::sync::mpsc::channel();
tokio::task::spawn(async move {
// Crawl funding rates for all symbols of binance COIN-margined perpetual markets
crawl_funding_rate("binance", MarketType::InverseSwap, None, tx).await;
});
let mut messages = Vec::new();
for msg in rx {
messages.push(msg);
break;
}
assert!(!messages.is_empty());
}
Structs
- Message represents messages received by crawlers.
Enums
- Market type.
- Crypto message types.
Functions
- Crawl best bid and ask.
- Crawl candlestick(i.e., OHLCV) data.
- Crawl perpetual swap funding rates.
- Crawl level2 orderbook update events.
- Crawl level2 orderbook snapshots through RESTful APIs.
- Crawl level2 orderbook top-k snapshots through websocket.
- Crawl level3 orderbook update events.
- Crawl level3 orderbook snapshots through RESTful APIs.
- Crawl all open interest.
- Crawl 24hr rolling window ticker.
- Crawl realtime trades.
- Subscribe to multiple message types of one symbol.