refactor(strategies): move JSON freezate sotto strategy_crypto + patch runner
- git mv strategies/{btc,eth}_*.json → src/strategy_crypto/strategy_crypto/strategies/
- Cancellata directory root strategies/ (ora package data del member strategy_crypto)
- I JSON sono inclusi nella wheel via force-include nel pyproject del member
- scripts/run_paper_trading.py:
* Import paper_trading.* → strategy_crypto.backend
* Default --strategies-dir letto da importlib.resources.files('strategy_crypto') / 'strategies'
* PaperRepository(settings.strategy_crypto_db_path) + init_schema()
* Rimosso Repository(settings.db_path).init_schema() (GA init non e' responsabilita' del paper)
- Verifica: importlib.resources trova i 2 JSON nel package
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,7 @@ Esempio:
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import importlib.resources
|
||||
import time
|
||||
from dataclasses import dataclass
|
||||
from datetime import UTC, datetime, timedelta
|
||||
@@ -28,14 +29,16 @@ from pathlib import Path
|
||||
from multi_swarm_core.cerbero.client import CerberoClient
|
||||
from multi_swarm_core.config import load_settings
|
||||
from multi_swarm_core.data.cerbero_ohlcv import CerberoOHLCVLoader, OHLCVRequest
|
||||
from multi_swarm_core.paper_trading.executor import PaperExecutor
|
||||
from multi_swarm_core.paper_trading.persistence import PaperRepository
|
||||
from multi_swarm_core.paper_trading.portfolio import Portfolio
|
||||
from multi_swarm_core.persistence.repository import Repository
|
||||
from strategy_crypto.backend import PaperExecutor, PaperRepository, Portfolio
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
def _default_strategies_dir() -> Path:
|
||||
"""Cartella JSON shippata col package strategy_crypto."""
|
||||
return Path(str(importlib.resources.files("strategy_crypto") / "strategies"))
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class AssetConfig:
|
||||
symbol: str # es. "BTC-PERPETUAL"
|
||||
@@ -54,8 +57,8 @@ def parse_args() -> argparse.Namespace:
|
||||
p.add_argument("--lookback-bars", type=int, default=500, help="Quante bar fetchare per indicatori")
|
||||
p.add_argument(
|
||||
"--strategies-dir",
|
||||
default=str(PROJECT_ROOT / "strategies"),
|
||||
help="Cartella contenente btc_*.json e eth_*.json",
|
||||
default=str(_default_strategies_dir()),
|
||||
help="Cartella contenente btc_*.json e eth_*.json (default: package strategy_crypto/strategies)",
|
||||
)
|
||||
return p.parse_args()
|
||||
|
||||
@@ -77,9 +80,6 @@ def main() -> None:
|
||||
args = parse_args()
|
||||
settings = load_settings()
|
||||
|
||||
# Inizializza schema (idempotente).
|
||||
Repository(settings.db_path).init_schema()
|
||||
|
||||
token = (
|
||||
settings.cerbero_mainnet_token.get_secret_value()
|
||||
if settings.cerbero_mainnet_token
|
||||
@@ -105,7 +105,8 @@ def main() -> None:
|
||||
fees_bp=args.fees_bp,
|
||||
n_sleeves=len(assets),
|
||||
)
|
||||
repo = PaperRepository(settings.db_path)
|
||||
repo = PaperRepository(settings.strategy_crypto_db_path)
|
||||
repo.init_schema()
|
||||
config = {
|
||||
"assets": [
|
||||
{"symbol": a.symbol, "strategy": a.strategy_file.name, "exchange": a.exchange}
|
||||
|
||||
Reference in New Issue
Block a user