test_candles.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from pathlib import Path
  2. from okx_codex_trader.candles import align_candles_by_ts, load_candles_csv
  3. from okx_codex_trader.models import Candle
  4. def test_load_candles_csv(tmp_path: Path) -> None:
  5. symbol_dir = tmp_path / "ETH-USDT-SWAP"
  6. symbol_dir.mkdir()
  7. (symbol_dir / "15m.csv").write_text(
  8. "ts,open,high,low,close,volume\n"
  9. "1000,10,11,9,10.5,123\n"
  10. "2000,10.5,12,10,11.5,456\n",
  11. encoding="utf-8",
  12. )
  13. candles = load_candles_csv(tmp_path, "ETH-USDT-SWAP", "15m")
  14. assert candles == [
  15. Candle("ETH-USDT-SWAP", 1000, 10.0, 11.0, 9.0, 10.5, 123.0),
  16. Candle("ETH-USDT-SWAP", 2000, 10.5, 12.0, 10.0, 11.5, 456.0),
  17. ]
  18. def test_align_candles_by_ts_keeps_shared_timestamps() -> None:
  19. left = [
  20. Candle("ETH-USDT-SWAP", 1, 1.0, 1.0, 1.0, 1.0, 1.0),
  21. Candle("ETH-USDT-SWAP", 2, 2.0, 2.0, 2.0, 2.0, 2.0),
  22. ]
  23. right = [
  24. Candle("BTC-USDT-SWAP", 2, 20.0, 20.0, 20.0, 20.0, 20.0),
  25. Candle("BTC-USDT-SWAP", 3, 30.0, 30.0, 30.0, 30.0, 30.0),
  26. ]
  27. aligned_left, aligned_right = align_candles_by_ts(left, right)
  28. assert aligned_left == [left[1]]
  29. assert aligned_right == [right[0]]