From 2b5da4d1fc353447bb5eecefe87041e40e1d79c7 Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Fri, 15 May 2026 17:58:03 +0000 Subject: [PATCH] refactor(strategies): move JSON freezate sotto strategy_crypto + patch runner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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) --- scripts/run_paper_trading.py | 21 ++++++++++--------- .../strategies}/btc_fb63e851.json | 0 .../strategies}/eth_facd6af85d5d.json | 0 3 files changed, 11 insertions(+), 10 deletions(-) rename {strategies => src/strategy_crypto/strategy_crypto/strategies}/btc_fb63e851.json (100%) rename {strategies => src/strategy_crypto/strategy_crypto/strategies}/eth_facd6af85d5d.json (100%) diff --git a/scripts/run_paper_trading.py b/scripts/run_paper_trading.py index 6eb0d6a..a31a581 100644 --- a/scripts/run_paper_trading.py +++ b/scripts/run_paper_trading.py @@ -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} diff --git a/strategies/btc_fb63e851.json b/src/strategy_crypto/strategy_crypto/strategies/btc_fb63e851.json similarity index 100% rename from strategies/btc_fb63e851.json rename to src/strategy_crypto/strategy_crypto/strategies/btc_fb63e851.json diff --git a/strategies/eth_facd6af85d5d.json b/src/strategy_crypto/strategy_crypto/strategies/eth_facd6af85d5d.json similarity index 100% rename from strategies/eth_facd6af85d5d.json rename to src/strategy_crypto/strategy_crypto/strategies/eth_facd6af85d5d.json