| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- from __future__ import annotations
- import argparse
- import json
- import sys
- from pathlib import Path
- ROOT_DIR = Path(__file__).resolve().parents[1]
- if str(ROOT_DIR) not in sys.path:
- sys.path.insert(0, str(ROOT_DIR))
- from scripts.explore_ultrashort import CANDLE_CACHE_DIR, load_cached_candles
- PAIR_FILENAMES = {
- "BTC-USDT-SWAP": "BTC_USDT_USDT",
- "ETH-USDT-SWAP": "ETH_USDT_USDT",
- }
- def export_ohlcv_json(*, symbol: str, bar: str, output_dir: Path, cache_dir: Path = CANDLE_CACHE_DIR) -> Path:
- candles, _ = load_cached_candles(cache_dir, symbol, bar)
- if not candles:
- raise RuntimeError(f"missing cached candles: {symbol} {bar}")
- output_dir.mkdir(parents=True, exist_ok=True)
- output_file = output_dir / f"{PAIR_FILENAMES[symbol]}-{bar}-futures.json"
- rows = [
- [candle.ts, candle.open, candle.high, candle.low, candle.close, candle.volume]
- for candle in candles
- ]
- output_file.write_text(json.dumps(rows, separators=(",", ":")), encoding="utf-8")
- return output_file
- def main() -> int:
- parser = argparse.ArgumentParser()
- parser.add_argument("--symbol", choices=tuple(PAIR_FILENAMES), default="BTC-USDT-SWAP")
- parser.add_argument("--bar", default="15m")
- parser.add_argument("--cache-dir", type=Path, default=CANDLE_CACHE_DIR)
- parser.add_argument("--output-dir", type=Path, default=Path("freqtrade/user_data/data/okx/futures"))
- args = parser.parse_args()
- output_file = export_ohlcv_json(
- symbol=args.symbol,
- bar=args.bar,
- cache_dir=args.cache_dir,
- output_dir=args.output_dir,
- )
- print(output_file)
- return 0
- if __name__ == "__main__":
- raise SystemExit(main())
|