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
|
from __future__ import annotations
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import importlib.resources
|
||||||
import time
|
import time
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import UTC, datetime, timedelta
|
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.cerbero.client import CerberoClient
|
||||||
from multi_swarm_core.config import load_settings
|
from multi_swarm_core.config import load_settings
|
||||||
from multi_swarm_core.data.cerbero_ohlcv import CerberoOHLCVLoader, OHLCVRequest
|
from multi_swarm_core.data.cerbero_ohlcv import CerberoOHLCVLoader, OHLCVRequest
|
||||||
from multi_swarm_core.paper_trading.executor import PaperExecutor
|
from strategy_crypto.backend import PaperExecutor, PaperRepository, Portfolio
|
||||||
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
|
|
||||||
|
|
||||||
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
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)
|
@dataclass(frozen=True)
|
||||||
class AssetConfig:
|
class AssetConfig:
|
||||||
symbol: str # es. "BTC-PERPETUAL"
|
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("--lookback-bars", type=int, default=500, help="Quante bar fetchare per indicatori")
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--strategies-dir",
|
"--strategies-dir",
|
||||||
default=str(PROJECT_ROOT / "strategies"),
|
default=str(_default_strategies_dir()),
|
||||||
help="Cartella contenente btc_*.json e eth_*.json",
|
help="Cartella contenente btc_*.json e eth_*.json (default: package strategy_crypto/strategies)",
|
||||||
)
|
)
|
||||||
return p.parse_args()
|
return p.parse_args()
|
||||||
|
|
||||||
@@ -77,9 +80,6 @@ def main() -> None:
|
|||||||
args = parse_args()
|
args = parse_args()
|
||||||
settings = load_settings()
|
settings = load_settings()
|
||||||
|
|
||||||
# Inizializza schema (idempotente).
|
|
||||||
Repository(settings.db_path).init_schema()
|
|
||||||
|
|
||||||
token = (
|
token = (
|
||||||
settings.cerbero_mainnet_token.get_secret_value()
|
settings.cerbero_mainnet_token.get_secret_value()
|
||||||
if settings.cerbero_mainnet_token
|
if settings.cerbero_mainnet_token
|
||||||
@@ -105,7 +105,8 @@ def main() -> None:
|
|||||||
fees_bp=args.fees_bp,
|
fees_bp=args.fees_bp,
|
||||||
n_sleeves=len(assets),
|
n_sleeves=len(assets),
|
||||||
)
|
)
|
||||||
repo = PaperRepository(settings.db_path)
|
repo = PaperRepository(settings.strategy_crypto_db_path)
|
||||||
|
repo.init_schema()
|
||||||
config = {
|
config = {
|
||||||
"assets": [
|
"assets": [
|
||||||
{"symbol": a.symbol, "strategy": a.strategy_file.name, "exchange": a.exchange}
|
{"symbol": a.symbol, "strategy": a.strategy_file.name, "exchange": a.exchange}
|
||||||
|
|||||||
Reference in New Issue
Block a user