{
  "generated_at_utc": "2026-06-29T14:08:17.499712+00:00",
  "exchange": "binance",
  "quote": "USDT",
  "timeframe": "4h",
  "strategy": {
    "name": "Breakout Strategy (range breakout + volume filter + ATR targets) + Pre-Setup",
    "lookback": 20,
    "atr_len": 14,
    "vol_ema_len": 20,
    "vol_mult": 1.2,
    "trend_ema_len": 200,
    "sl_atr": 1.5,
    "tp_atr": {
      "tp1": 1.5,
      "tp2": 2.5,
      "tp3": 3.5
    },
    "mode": "pre_setup_visible"
  },
  "best_pick": {
    "symbol": "ATOM/USDT",
    "timeframe": "4h",
    "bias": "SHORT",
    "score": 3.2,
    "entry": 1.53,
    "stop_loss": 1.58,
    "targets": {
      "tp1": 1.49,
      "tp2": 1.46,
      "tp3": 1.43
    },
    "breakout_level": 1.65,
    "breakdown_level": 1.55,
    "trailing_rule": "Trailing SHORT: dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
    "metrics": {
      "price": 1.53,
      "atr": 0.03,
      "atr_over_price_pct": 1.95,
      "breakout_level": 1.65,
      "breakdown_level": 1.55,
      "volume": 390346.52,
      "volume_ema": 207057.6,
      "volume_ok": true,
      "trend_ema": 1.81,
      "trend_up": false,
      "trend_down": true,
      "rsi": 31.03,
      "is_breakout": false,
      "is_breakdown": true
    },
    "notes": [
      "Range 20: high=1.647 low=1.554",
      "Vol filter: vol=390347 vs volEMA=207058 (x1.2) => OK",
      "ATR(14)=0.0298762 | Trend EMA(200)=1.80633 | RSI=31.0",
      "Breakdown confermato: close sotto supporto + volume ok + trend ok."
    ]
  },
  "ranking": [
    {
      "symbol": "ATOM/USDT",
      "timeframe": "4h",
      "bias": "SHORT",
      "score": 3.2,
      "entry": 1.53,
      "stop_loss": 1.58,
      "targets": {
        "tp1": 1.49,
        "tp2": 1.46,
        "tp3": 1.43
      },
      "breakout_level": 1.65,
      "breakdown_level": 1.55,
      "trailing_rule": "Trailing SHORT: dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 1.53,
        "atr": 0.03,
        "atr_over_price_pct": 1.95,
        "breakout_level": 1.65,
        "breakdown_level": 1.55,
        "volume": 390346.52,
        "volume_ema": 207057.6,
        "volume_ok": true,
        "trend_ema": 1.81,
        "trend_up": false,
        "trend_down": true,
        "rsi": 31.03,
        "is_breakout": false,
        "is_breakdown": true
      },
      "notes": [
        "Range 20: high=1.647 low=1.554",
        "Vol filter: vol=390347 vs volEMA=207058 (x1.2) => OK",
        "ATR(14)=0.0298762 | Trend EMA(200)=1.80633 | RSI=31.0",
        "Breakdown confermato: close sotto supporto + volume ok + trend ok."
      ]
    },
    {
      "symbol": "FIL/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 1.26,
      "entry": 0.7,
      "stop_loss": 0.73,
      "targets": {
        "tp1": 0.67,
        "tp2": 0.65,
        "tp3": 0.64
      },
      "breakout_level": 0.76,
      "breakdown_level": 0.7,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.71,
        "atr": 0.02,
        "atr_over_price_pct": 2.63,
        "breakout_level": 0.76,
        "breakdown_level": 0.7,
        "volume": 1605916.48,
        "volume_ema": 1218056.2,
        "volume_ok": true,
        "trend_ema": 0.81,
        "trend_up": false,
        "trend_down": true,
        "rsi": 39.18,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.758 low=0.702",
        "Vol filter: vol=1.60592e+06 vs volEMA=1.21806e+06 (x1.2) => OK",
        "ATR(14)=0.0188187 | Trend EMA(200)=0.811602 | RSI=39.2",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "SOL/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 1.25,
      "entry": 73.93,
      "stop_loss": 71.17,
      "targets": {
        "tp1": 76.69,
        "tp2": 78.53,
        "tp3": 80.37
      },
      "breakout_level": 73.93,
      "breakdown_level": 67.96,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 73.28,
        "atr": 1.84,
        "atr_over_price_pct": 2.51,
        "breakout_level": 73.93,
        "breakdown_level": 67.96,
        "volume": 938813.13,
        "volume_ema": 465329.19,
        "volume_ok": true,
        "trend_ema": 73.02,
        "trend_up": true,
        "trend_down": false,
        "rsi": 59.05,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=73.93 low=67.96",
        "Vol filter: vol=938813 vs volEMA=465329 (x1.2) => OK",
        "ATR(14)=1.83894 | Trend EMA(200)=73.0244 | RSI=59.0",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "ADA/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 1.23,
      "entry": 0.14,
      "stop_loss": 0.15,
      "targets": {
        "tp1": 0.14,
        "tp2": 0.13,
        "tp3": 0.13
      },
      "breakout_level": 0.15,
      "breakdown_level": 0.14,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.14,
        "atr": 0.0,
        "atr_over_price_pct": 2.26,
        "breakout_level": 0.15,
        "breakdown_level": 0.14,
        "volume": 24124040.4,
        "volume_ema": 17861511.46,
        "volume_ok": true,
        "trend_ema": 0.18,
        "trend_up": false,
        "trend_down": true,
        "rsi": 42.54,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.15 low=0.1412",
        "Vol filter: vol=2.4124e+07 vs volEMA=1.78615e+07 (x1.2) => OK",
        "ATR(14)=0.00326307 | Trend EMA(200)=0.176868 | RSI=42.5",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "ETH/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 1.18,
      "entry": 1521.54,
      "stop_loss": 1564.03,
      "targets": {
        "tp1": 1479.05,
        "tp2": 1450.72,
        "tp3": 1422.39
      },
      "breakout_level": 1611.02,
      "breakdown_level": 1521.54,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 1562.22,
        "atr": 28.33,
        "atr_over_price_pct": 1.81,
        "breakout_level": 1611.02,
        "breakdown_level": 1521.54,
        "volume": 55373.22,
        "volume_ema": 36702.8,
        "volume_ok": true,
        "trend_ema": 1761.52,
        "trend_up": false,
        "trend_down": true,
        "rsi": 40.43,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=1611.02 low=1521.54",
        "Vol filter: vol=55373.2 vs volEMA=36702.8 (x1.2) => OK",
        "ATR(14)=28.3281 | Trend EMA(200)=1761.52 | RSI=40.4",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "BTC/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 1.15,
      "entry": 58500.1,
      "stop_loss": 59863.45,
      "targets": {
        "tp1": 57136.75,
        "tp2": 56227.85,
        "tp3": 55318.95
      },
      "breakout_level": 60941.17,
      "breakdown_level": 58500.1,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 59239.02,
        "atr": 908.9,
        "atr_over_price_pct": 1.53,
        "breakout_level": 60941.17,
        "breakdown_level": 58500.1,
        "volume": 5082.92,
        "volume_ema": 2680.71,
        "volume_ok": true,
        "trend_ema": 65303.09,
        "trend_up": false,
        "trend_down": true,
        "rsi": 38.47,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=60941.2 low=58500.1",
        "Vol filter: vol=5082.92 vs volEMA=2680.71 (x1.2) => OK",
        "ATR(14)=908.899 | Trend EMA(200)=65303.1 | RSI=38.5",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "NEAR/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.32,
      "entry": 1.75,
      "stop_loss": 1.84,
      "targets": {
        "tp1": 1.66,
        "tp2": 1.6,
        "tp3": 1.54
      },
      "breakout_level": 1.95,
      "breakdown_level": 1.75,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 1.84,
        "atr": 0.06,
        "atr_over_price_pct": 3.25,
        "breakout_level": 1.95,
        "breakdown_level": 1.75,
        "volume": 2569249.2,
        "volume_ema": 2865586.16,
        "volume_ok": false,
        "trend_ema": 2.04,
        "trend_up": false,
        "trend_down": true,
        "rsi": 42.76,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=1.95 low=1.752",
        "Vol filter: vol=2.56925e+06 vs volEMA=2.86559e+06 (x1.2) => NO",
        "ATR(14)=0.0595994 | Trend EMA(200)=2.0436 | RSI=42.8",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "INJ/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.31,
      "entry": 4.34,
      "stop_loss": 4.56,
      "targets": {
        "tp1": 4.13,
        "tp2": 3.98,
        "tp3": 3.84
      },
      "breakout_level": 5.08,
      "breakdown_level": 4.34,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 4.69,
        "atr": 0.15,
        "atr_over_price_pct": 3.1,
        "breakout_level": 5.08,
        "breakdown_level": 4.34,
        "volume": 103765.25,
        "volume_ema": 232959.41,
        "volume_ok": false,
        "trend_ema": 5.03,
        "trend_up": false,
        "trend_down": true,
        "rsi": 51.87,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=5.077 low=4.345",
        "Vol filter: vol=103765 vs volEMA=232959 (x1.2) => NO",
        "ATR(14)=0.14559 | Trend EMA(200)=5.03107 | RSI=51.9",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "OP/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.29,
      "entry": 0.1,
      "stop_loss": 0.1,
      "targets": {
        "tp1": 0.09,
        "tp2": 0.09,
        "tp3": 0.09
      },
      "breakout_level": 0.11,
      "breakdown_level": 0.1,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.1,
        "atr": 0.0,
        "atr_over_price_pct": 2.9,
        "breakout_level": 0.11,
        "breakdown_level": 0.1,
        "volume": 3479441.07,
        "volume_ema": 3600216.5,
        "volume_ok": false,
        "trend_ema": 0.11,
        "trend_up": false,
        "trend_down": true,
        "rsi": 44.28,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.1085 low=0.0987",
        "Vol filter: vol=3.47944e+06 vs volEMA=3.60022e+06 (x1.2) => NO",
        "ATR(14)=0.00290829 | Trend EMA(200)=0.108019 | RSI=44.3",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "APT/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.28,
      "entry": 0.56,
      "stop_loss": 0.59,
      "targets": {
        "tp1": 0.54,
        "tp2": 0.52,
        "tp3": 0.51
      },
      "breakout_level": 0.61,
      "breakdown_level": 0.56,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.57,
        "atr": 0.02,
        "atr_over_price_pct": 2.8,
        "breakout_level": 0.61,
        "breakdown_level": 0.56,
        "volume": 933257.63,
        "volume_ema": 805683.89,
        "volume_ok": false,
        "trend_ema": 0.71,
        "trend_up": false,
        "trend_down": true,
        "rsi": 38.85,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.614 low=0.564",
        "Vol filter: vol=933258 vs volEMA=805684 (x1.2) => NO",
        "ATR(14)=0.0160899 | Trend EMA(200)=0.705963 | RSI=38.8",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "AVAX/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.27,
      "entry": 6.68,
      "stop_loss": 6.41,
      "targets": {
        "tp1": 6.94,
        "tp2": 7.11,
        "tp3": 7.29
      },
      "breakout_level": 6.68,
      "breakdown_level": 6.04,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 6.52,
        "atr": 0.18,
        "atr_over_price_pct": 2.68,
        "breakout_level": 6.68,
        "breakdown_level": 6.04,
        "volume": 397492.07,
        "volume_ema": 415974.85,
        "volume_ok": false,
        "trend_ema": 7.07,
        "trend_up": false,
        "trend_down": true,
        "rsi": 54.25,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=6.676 low=6.043",
        "Vol filter: vol=397492 vs volEMA=415975 (x1.2) => NO",
        "ATR(14)=0.175079 | Trend EMA(200)=7.06771 | RSI=54.3",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "UNI/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.27,
      "entry": 2.81,
      "stop_loss": 2.93,
      "targets": {
        "tp1": 2.69,
        "tp2": 2.61,
        "tp3": 2.53
      },
      "breakout_level": 3.06,
      "breakdown_level": 2.81,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 2.93,
        "atr": 0.08,
        "atr_over_price_pct": 2.74,
        "breakout_level": 3.06,
        "breakdown_level": 2.81,
        "volume": 551291.01,
        "volume_ema": 512006.53,
        "volume_ok": false,
        "trend_ema": 2.95,
        "trend_up": false,
        "trend_down": true,
        "rsi": 49.85,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=3.065 low=2.81",
        "Vol filter: vol=551291 vs volEMA=512007 (x1.2) => NO",
        "ATR(14)=0.0802877 | Trend EMA(200)=2.94757 | RSI=49.9",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "ARB/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.25,
      "entry": 0.08,
      "stop_loss": 0.07,
      "targets": {
        "tp1": 0.08,
        "tp2": 0.08,
        "tp3": 0.08
      },
      "breakout_level": 0.08,
      "breakdown_level": 0.07,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 0.07,
        "atr": 0.0,
        "atr_over_price_pct": 2.55,
        "breakout_level": 0.08,
        "breakdown_level": 0.07,
        "volume": 7093339.0,
        "volume_ema": 8978036.41,
        "volume_ok": false,
        "trend_ema": 0.09,
        "trend_up": false,
        "trend_down": true,
        "rsi": 49.01,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.0768 low=0.0706",
        "Vol filter: vol=7.09334e+06 vs volEMA=8.97804e+06 (x1.2) => NO",
        "ATR(14)=0.00191247 | Trend EMA(200)=0.0874656 | RSI=49.0",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "SUI/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.24,
      "entry": 0.67,
      "stop_loss": 0.69,
      "targets": {
        "tp1": 0.64,
        "tp2": 0.63,
        "tp3": 0.61
      },
      "breakout_level": 0.72,
      "breakdown_level": 0.67,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.69,
        "atr": 0.02,
        "atr_over_price_pct": 2.39,
        "breakout_level": 0.72,
        "breakdown_level": 0.67,
        "volume": 4617501.3,
        "volume_ema": 4537614.76,
        "volume_ok": false,
        "trend_ema": 0.78,
        "trend_up": false,
        "trend_down": true,
        "rsi": 47.74,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.7179 low=0.6678",
        "Vol filter: vol=4.6175e+06 vs volEMA=4.53761e+06 (x1.2) => NO",
        "ATR(14)=0.0164269 | Trend EMA(200)=0.779147 | RSI=47.7",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "TON/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.24,
      "entry": 1.64,
      "stop_loss": 1.58,
      "targets": {
        "tp1": 1.7,
        "tp2": 1.73,
        "tp3": 1.77
      },
      "breakout_level": 1.64,
      "breakdown_level": 1.53,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 1.59,
        "atr": 0.04,
        "atr_over_price_pct": 2.38,
        "breakout_level": 1.64,
        "breakdown_level": 1.53,
        "volume": 629932.17,
        "volume_ema": 619022.09,
        "volume_ok": false,
        "trend_ema": 1.68,
        "trend_up": false,
        "trend_down": true,
        "rsi": 54.05,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=1.64 low=1.534",
        "Vol filter: vol=629932 vs volEMA=619022 (x1.2) => NO",
        "ATR(14)=0.0378949 | Trend EMA(200)=1.68354 | RSI=54.1",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "ICP/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.24,
      "entry": 2.09,
      "stop_loss": 2.17,
      "targets": {
        "tp1": 2.01,
        "tp2": 1.96,
        "tp3": 1.91
      },
      "breakout_level": 2.25,
      "breakdown_level": 2.09,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 2.15,
        "atr": 0.05,
        "atr_over_price_pct": 2.4,
        "breakout_level": 2.25,
        "breakdown_level": 2.09,
        "volume": 172980.96,
        "volume_ema": 224457.26,
        "volume_ok": false,
        "trend_ema": 2.37,
        "trend_up": false,
        "trend_down": true,
        "rsi": 45.34,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=2.248 low=2.09",
        "Vol filter: vol=172981 vs volEMA=224457 (x1.2) => NO",
        "ATR(14)=0.0516316 | Trend EMA(200)=2.37186 | RSI=45.3",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "DOT/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.23,
      "entry": 0.8,
      "stop_loss": 0.82,
      "targets": {
        "tp1": 0.77,
        "tp2": 0.75,
        "tp3": 0.73
      },
      "breakout_level": 0.87,
      "breakdown_level": 0.8,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.81,
        "atr": 0.02,
        "atr_over_price_pct": 2.33,
        "breakout_level": 0.87,
        "breakdown_level": 0.8,
        "volume": 853591.28,
        "volume_ema": 942572.61,
        "volume_ok": false,
        "trend_ema": 0.99,
        "trend_up": false,
        "trend_down": true,
        "rsi": 36.22,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.868 low=0.795",
        "Vol filter: vol=853591 vs volEMA=942573 (x1.2) => NO",
        "ATR(14)=0.0189912 | Trend EMA(200)=0.989645 | RSI=36.2",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "SHIB/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.21,
      "entry": 0.0,
      "stop_loss": 0.0,
      "targets": {
        "tp1": 0.0,
        "tp2": 0.0,
        "tp3": 0.0
      },
      "breakout_level": 0.0,
      "breakdown_level": 0.0,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.0,
        "atr": 0.0,
        "atr_over_price_pct": 2.14,
        "breakout_level": 0.0,
        "breakdown_level": 0.0,
        "volume": 87484796856.0,
        "volume_ema": 85121074298.03,
        "volume_ok": false,
        "trend_ema": 0.0,
        "trend_up": false,
        "trend_down": true,
        "rsi": 40.65,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=4.39e-06 low=4.1e-06",
        "Vol filter: vol=8.74848e+10 vs volEMA=8.51211e+10 (x1.2) => NO",
        "ATR(14)=8.93623e-08 | Trend EMA(200)=4.84534e-06 | RSI=40.7",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "LINK/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.19,
      "entry": 7.06,
      "stop_loss": 7.26,
      "targets": {
        "tp1": 6.85,
        "tp2": 6.71,
        "tp3": 6.57
      },
      "breakout_level": 7.48,
      "breakdown_level": 7.06,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 7.24,
        "atr": 0.14,
        "atr_over_price_pct": 1.91,
        "breakout_level": 7.48,
        "breakdown_level": 7.06,
        "volume": 296227.59,
        "volume_ema": 272203.32,
        "volume_ok": false,
        "trend_ema": 8.06,
        "trend_up": false,
        "trend_down": true,
        "rsi": 41.98,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=7.478 low=7.056",
        "Vol filter: vol=296228 vs volEMA=272203 (x1.2) => NO",
        "ATR(14)=0.137977 | Trend EMA(200)=8.0647 | RSI=42.0",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "DOGE/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.19,
      "entry": 0.07,
      "stop_loss": 0.07,
      "targets": {
        "tp1": 0.07,
        "tp2": 0.07,
        "tp3": 0.07
      },
      "breakout_level": 0.08,
      "breakdown_level": 0.07,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.07,
        "atr": 0.0,
        "atr_over_price_pct": 1.92,
        "breakout_level": 0.08,
        "breakdown_level": 0.07,
        "volume": 76376029.0,
        "volume_ema": 69359081.58,
        "volume_ok": false,
        "trend_ema": 0.09,
        "trend_up": false,
        "trend_down": true,
        "rsi": 33.21,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.07644 low=0.07196",
        "Vol filter: vol=7.6376e+07 vs volEMA=6.93591e+07 (x1.2) => NO",
        "ATR(14)=0.00139093 | Trend EMA(200)=0.085684 | RSI=33.2",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "POL/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.19,
      "entry": 0.07,
      "stop_loss": 0.07,
      "targets": {
        "tp1": 0.07,
        "tp2": 0.07,
        "tp3": 0.07
      },
      "breakout_level": 0.08,
      "breakdown_level": 0.07,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 0.07,
        "atr": 0.0,
        "atr_over_price_pct": 1.95,
        "breakout_level": 0.08,
        "breakdown_level": 0.07,
        "volume": 2958521.5,
        "volume_ema": 5280350.13,
        "volume_ok": false,
        "trend_ema": 0.08,
        "trend_up": false,
        "trend_down": true,
        "rsi": 42.72,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.07541 low=0.07",
        "Vol filter: vol=2.95852e+06 vs volEMA=5.28035e+06 (x1.2) => NO",
        "ATR(14)=0.00138536 | Trend EMA(200)=0.0795031 | RSI=42.7",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "XRP/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.18,
      "entry": 1.08,
      "stop_loss": 1.05,
      "targets": {
        "tp1": 1.11,
        "tp2": 1.12,
        "tp3": 1.14
      },
      "breakout_level": 1.08,
      "breakdown_level": 1.01,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 1.05,
        "atr": 0.02,
        "atr_over_price_pct": 1.79,
        "breakout_level": 1.08,
        "breakdown_level": 1.01,
        "volume": 15412678.8,
        "volume_ema": 13173389.57,
        "volume_ok": false,
        "trend_ema": 1.17,
        "trend_up": false,
        "trend_down": true,
        "rsi": 42.94,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=1.0777 low=1.0113",
        "Vol filter: vol=1.54127e+07 vs volEMA=1.31734e+07 (x1.2) => NO",
        "ATR(14)=0.0187148 | Trend EMA(200)=1.1674 | RSI=42.9",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "LTC/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.18,
      "entry": 43.37,
      "stop_loss": 42.25,
      "targets": {
        "tp1": 44.49,
        "tp2": 45.24,
        "tp3": 45.99
      },
      "breakout_level": 43.37,
      "breakdown_level": 40.14,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 42.42,
        "atr": 0.75,
        "atr_over_price_pct": 1.77,
        "breakout_level": 43.37,
        "breakdown_level": 40.14,
        "volume": 38440.14,
        "volume_ema": 50675.73,
        "volume_ok": false,
        "trend_ema": 45.45,
        "trend_up": false,
        "trend_down": true,
        "rsi": 49.82,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=43.37 low=40.14",
        "Vol filter: vol=38440.1 vs volEMA=50675.7 (x1.2) => NO",
        "ATR(14)=0.749995 | Trend EMA(200)=45.4549 | RSI=49.8",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "BNB/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.14,
      "entry": 545.62,
      "stop_loss": 557.02,
      "targets": {
        "tp1": 534.22,
        "tp2": 526.62,
        "tp3": 519.01
      },
      "breakout_level": 570.34,
      "breakdown_level": 545.62,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = min(trail, close + 1.2*ATR)",
      "metrics": {
        "price": 548.25,
        "atr": 7.6,
        "atr_over_price_pct": 1.39,
        "breakout_level": 570.34,
        "breakdown_level": 545.62,
        "volume": 16269.49,
        "volume_ema": 16693.75,
        "volume_ok": false,
        "trend_ema": 597.87,
        "trend_up": false,
        "trend_down": true,
        "rsi": 36.43,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=570.34 low=545.62",
        "Vol filter: vol=16269.5 vs volEMA=16693.7 (x1.2) => NO",
        "ATR(14)=7.60199 | Trend EMA(200)=597.874 | RSI=36.4",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano SHORT (più vicino al prezzo attuale)."
      ]
    },
    {
      "symbol": "TRX/USDT",
      "timeframe": "4h",
      "bias": "NEUTRAL",
      "score": 0.05,
      "entry": 0.32,
      "stop_loss": 0.32,
      "targets": {
        "tp1": 0.33,
        "tp2": 0.33,
        "tp3": 0.33
      },
      "breakout_level": 0.32,
      "breakdown_level": 0.32,
      "trailing_rule": "Trailing (se attivato): dopo TP1 sposta SL a entry; poi trail = max(trail, close - 1.2*ATR)",
      "metrics": {
        "price": 0.32,
        "atr": 0.0,
        "atr_over_price_pct": 0.48,
        "breakout_level": 0.32,
        "breakdown_level": 0.32,
        "volume": 15665970.0,
        "volume_ema": 16291563.97,
        "volume_ok": false,
        "trend_ema": 0.33,
        "trend_up": false,
        "trend_down": true,
        "rsi": 46.01,
        "is_breakout": false,
        "is_breakdown": false
      },
      "notes": [
        "Range 20: high=0.3246 low=0.3186",
        "Vol filter: vol=1.5666e+07 vs volEMA=1.62916e+07 (x1.2) => NO",
        "ATR(14)=0.00154768 | Trend EMA(200)=0.328822 | RSI=46.0",
        "Setup pre-breakout: livelli calcolati ma rottura non confermata.",
        "Piano LONG: entry sul breakout level (preferibile conferma close+volume o retest).",
        "Piano SHORT: entry sul breakdown level (preferibile conferma close+volume o retest).",
        "Mostro piano LONG (più vicino al prezzo attuale)."
      ]
    }
  ],
  "errors": []
}