| 1234567891011121314151617181920212223242526272829303132333435363738 |
- from pathlib import Path
- from okx_codex_trader.candles import align_candles_by_ts, load_candles_csv
- from okx_codex_trader.models import Candle
- def test_load_candles_csv(tmp_path: Path) -> None:
- symbol_dir = tmp_path / "ETH-USDT-SWAP"
- symbol_dir.mkdir()
- (symbol_dir / "15m.csv").write_text(
- "ts,open,high,low,close,volume\n"
- "1000,10,11,9,10.5,123\n"
- "2000,10.5,12,10,11.5,456\n",
- encoding="utf-8",
- )
- candles = load_candles_csv(tmp_path, "ETH-USDT-SWAP", "15m")
- assert candles == [
- Candle("ETH-USDT-SWAP", 1000, 10.0, 11.0, 9.0, 10.5, 123.0),
- Candle("ETH-USDT-SWAP", 2000, 10.5, 12.0, 10.0, 11.5, 456.0),
- ]
- def test_align_candles_by_ts_keeps_shared_timestamps() -> None:
- left = [
- Candle("ETH-USDT-SWAP", 1, 1.0, 1.0, 1.0, 1.0, 1.0),
- Candle("ETH-USDT-SWAP", 2, 2.0, 2.0, 2.0, 2.0, 2.0),
- ]
- right = [
- Candle("BTC-USDT-SWAP", 2, 20.0, 20.0, 20.0, 20.0, 20.0),
- Candle("BTC-USDT-SWAP", 3, 30.0, 30.0, 30.0, 30.0, 30.0),
- ]
- aligned_left, aligned_right = align_candles_by_ts(left, right)
- assert aligned_left == [left[1]]
- assert aligned_right == [right[0]]
|