Files
Encelado/Encelado/docs/QUESTIONS.md
T
Alby96andClaude Fable 5.1 4c26fd3209 Passa ai Correlation Baskets su eToro e rimuove i motori precedenti (4.0.0)
Perché: l'utente ha chiesto un bot che operi cinque basket di coppie forex
correlate su eToro, autonomo, con ledger, feed gratuiti e apprendimento
costruito da zero, e ha deciso di eliminare tutto ciò che restava delle
gestioni precedenti (Binance, cTrader/proba, ricerca con SQLite, GBDT, RL,
TA-Lib) e di non avere approvazioni manuali sui singoli ordini.

Cosa cambia:
- nuovo Core dei basket (cross sintetici, decisore, cost gate, sizing,
  esecutore leg-risk, backtest con PSR/DSR/PBO, livelli 0-3 di apprendimento),
  adattatore eToro Public API, motore autonomo con equity stop, kill-switch,
  riconciliazione, ledger append-only, calendario e notizie con sentiment;
- modalità Paper / Demo / Live (Live con flag e frase CONFERMO LIVE);
- interfaccia rifatta: barra in alto con tre schede, dashboard con i soli
  numeri principali, fuso orario selezionabile, test di rendering in PNG;
- corretto il parser dei costi eToro (campo "value"): markup e overnight
  non venivano letti;
- strumento di ricerca ridotto a ticks / baskets / falsify con due scenari di
  costo; risultati in results/ e reports/: nessuna configurazione è
  profittevole al netto dei costi (docs/STRATEGY.md lo dice con i numeri);
- documentazione completa (STRATEGY, ML_AND_LEARNING, RUNBOOK, GLOSSARY,
  KNOWN_ISSUES, ADR-0004, ADR-0005) e catena di rilascio aggiornata.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 15:45:55 +02:00

9.8 KiB
Raw Blame History

Domande e risposte

Ogni domanda è numerata per fase. Quando l'utente non ha risposto, è stato applicato il default più prudente e la scelta è segnata come default applicato: resta aperta finché non arriva una risposta.

Fase 0 — 2026-09-16

# Domanda Default proposto Stato / risposta
D-01 Il bot è già in C#? Quale target framework? quello del repo Risposto dal repo: C#, net10.0 (Bot e test net10.0-windows), SDK 10.0.301. Nessuna proposta di cambio.
D-02 UI attuale: console, WinForms o WPF? Posso aggiungere un progetto WPF? nuovo progetto WPF + headless Risposto dal repo: è già WPF (Encelado.Bot, tema scuro proprio). Non si aggiunge un progetto: si aggiungono pagine alla shell esistente e la modalità --headless nello stesso eseguibile.
D-03 Valuta del conto eToro e disponibilità di chiavi demo? USD, demo Verificato via API (collegamento MCP dell'utente, sola lettura): conto in USD; demoCid e realCid esistono. Le chiavi long-lived (x-api-key + x-user-key) non sono ancora state fornite al bot: la finestra di accesso le chiede e le salva cifrate (DPAPI). Default applicato: USD, demo.
D-04 Regola di approvazione: automatismo consentito già in demo? DemoApprove Default applicato: DemoApprove. DemoAuto richiede etoro.allowDemoAuto = true in encelado.json e la conferma all'avvio (finestra, o --confirm-demo-auto in headless). Le modalità Live richiedono etoro.allowLive = true e la frase CONFERMO LIVE. L'utente ha chiesto una lunga sessione di test "sperando di piazzare trade": senza risposta il test lungo gira in Paper (simulatore locale sopra le quote reali) o in DemoApprove con approvazione manuale.
D-05 Gli 8 strumenti sono disponibili sul conto? Spread tipici? verifica via API Verificato via API il 2026-09-16 07:23 UTC: tutti e 8 disponibili (id: EURUSD 1, USDCHF 6, AUDUSD 7, USDCAD 4, NZDUSD 3, EURNZD 49, EURAUD 12, AUDCAD 47; anche EURCHF 9 ed EURCAD 13 per PreferDirectCross). Spread di mercato osservati senza markup: 0,1 pip sulle majors, 0,3-0,7 pip sui cross. Il markup di eToro si legge dall'endpoint dei costi e viene sommato nel cost gate. Esposizione minima 1000 USD per posizione, leva fino a 30 (majors) / 20 (minors). Attenzione: il conto reale vale 193,18 USD; con RiskPerBasket 0,5 % e esposizione minima 1000 USD il reale non è operabile senza leva alta: il passaggio a LiveApprove resta comunque subordinato ai cancelli di §9.4.
D-06 Dove gira il bot (PC locale Windows, VPS Windows)? PC locale + headless pronto per VPS Default applicato: Windows 11 locale (questa macchina); --headless disponibile per un VPS Windows.
D-07 Esiste già uno storage/log da riusare? nuovi file in data/ Default applicato con una precisazione: il log applicativo (Log, file ;) e CsvTable vengono riusati; il ledger, i dati di mercato, i modelli e la base di conoscenza vanno in file (data/, knowledge/, reports/, results/) sotto Documenti\Encelado\, come richiesto. Il database SQLite esistente resta per il motore proba e non viene usato dal modulo basket.
D-08 Se una fonte news/calendario risulta irraggiungibile: sostituire o omettere? omettere e annotare Verificato il 2026-09-16: calendario FairEconomy (JSON e XML), FXStreet, ForexLive, Fed, ECB (https://www.ecb.europa.eu/rss/press.html), BoE (https://www.bankofengland.co.uk/rss/news), RBA (https://www.rba.gov.au/rss/rss-cb-media-releases.xml), BoC (https://www.bankofcanada.ca/content_type/press-releases/feed/) e Google News rispondono 200. SNB (/en/rss/press-releases → 404) e RBNZ (403 "website unavailable") no: default applicato: omesse, coperte da Google News con query mirate (SNB, RBNZ). Annotato in docs/DATA_SOURCES.md.
D-09 Che fare del motore cTrader/ProbaBot trovato a metà e non committato? mantenerlo selezionabile Default applicato: resta nel repo, rimesso in compilazione (riferimento di progetto e piccoli fix) e selezionabile con engine.strategy = "proba"; il predefinito diventa "baskets". Nessun comportamento esistente viene cambiato. Se l'utente preferisce eliminarlo, basta rimuovere src/Encelado.CTrader e Engine/ProbaEngine.cs.
D-10 Dove stanno i parametri della strategia: in encelado.json o in un file separato? config/strategy.json come da specifica Default applicato: strategy.json separato (copia di fabbrica in config/, copia dell'utente in Documenti\Encelado\), letto con JsonDocument; instruments.json scritto dal bot all'avvio nella stessa cartella. encelado.json riceve solo le sezioni etoro e engine.strategy.
D-11 Fuso orario dei tick MT5 in A:\Download\Trading? verificare sul fine settimana Verificato: la chiusura del venerdì cade alle 20:53-20:57 in estate e alle 21:53-21:57 in inverno, la riapertura alle 21:05 (estate) / 22:05 (inverno) della domenica: è UTC. Nessuna conversione. Formato: tab-separato <DATE> <TIME> <BID> <ASK> <LAST> <VOLUME> <FLAGS>; le righe con solo bid o solo ask (flag 2/4) aggiornano un solo lato.
D-12 Lo storico M15 via API eToro si può scaricare paginando? sì, 1000 barre per richiesta Verificato: no. L'endpoint delle candele accetta solo count ≤ 1000 e la direzione, senza data di partenza: fornisce al massimo ~10 giorni di M15. Il backtest usa i tick forniti dall'utente; l'API serve per riscaldamento (ultime 1000 barre) e riconciliazione.
D-13 Il TP di basket "in pip" con lotti diversi fra le gambe: pip lordi sommati come Titany, o P&L netto? come da specifica Default applicato: Pips di basket = somma dei pip delle due gambe (UI e ExitMode = FixedPips); ogni decisione di stop usa il P&L netto in USD; entrambi finiscono nel ledger.
D-14 Le credenziali eToro per il bot: quando? attendere L'utente ha scritto: «Aspetta l'input per le credenziali per la prima volta e poi potrai aprirlo in autonomia quando memorizzerò la password». La finestra di accesso chiede x-api-key e x-user-key e li salva in %LOCALAPPDATA%\Encelado\etoro.dat (DPAPI). Finché non ci sono, il bot in headless resta in sola lettura e lo dice.

Fase 1 — 2026-09-16

# Domanda Default proposto Stato / risposta
D-15 Leva da usare su ogni gamba (l'API la richiede per ordine)? 10 Default applicato: orderLeverage = 10 (ammessa su tutte le 8 coppie); l'esposizione complessiva resta comunque ≤ 10:1 sul nozionale (MaxEffectiveLeverage) e lo stop nativo di eToro viene messo alla distanza coerente con MaxLossPerBasket%, dentro i limiti di eligibility.
D-16 Overnight: usare il valore dell'endpoint dei costi o una tabella? endpoint Default applicato: l'endpoint dei costi (overnightFee, overWeekendFee) quando disponibile; in backtest una tabella configurabile per coppia (overnightPipsPerDay, default 0,3 pip/gamba/giorno, ×3 nel fine settimana).

Fasi 2-7 — 2026-09-16

# Domanda Default proposto Stato / risposta
D-17 Lo spread anomalo (> 3 × mediana) deve chiudere il basket alla prima barra o dopo una persistenza? persistenza Default applicato: chiusura forzata solo dopo 3 barre chiuse consecutive sopra la soglia. Nel backtest la chiusura immediata scattava sui picchi di spread e perdeva sistematicamente (BasketPosition.BarsWithSpreadAnomaly).
D-18 Nel backtest l'equity stop blocca tutto per sempre o riparte? riparte Default applicato: dopo lo stop il picco riparte dall'equity corrente e il numero di stop viene contato (EquityStops nel riepilogo); altrimenti il primo stop del 2019 avrebbe fermato sette anni di prova. Dal vivo lo stop richiede il reset manuale.
D-19 Fed risponde 404 e RBA "Access Denied" con lo User-Agent minimale: cambiare UA? UA esplicito del bot Applicato: Encelado/4.0 (+correlation baskets; contact: operator). La Fed risponde; RBA (Akamai) a intermittenza. Dopo due errori consecutivi il feed logga solo a debug e ritenta con attese crescenti.
D-20 Per il test lungo in demo: DemoAuto (bot autonomo) o DemoApprove? DemoAuto Risposta dell'utente (2026-09-16 15:00): «tutti gli Approve devono sparire, almeno per il momento. Il bot deve girare in completa autonomia aprendo e chiudendo le posizioni senza il mio consenso». Modalità ridotte a Paper, Demo, Live; coda delle approvazioni rimossa (ADR-0005). Il Live conserva flag e frase CONFERMO LIVE.
D-21 La pulizia delle «vecchie gestioni» deve includere anche cTrader/proba e la pipeline di ricerca? sì, tutto Risposta dell'utente: «Tutto: resta solo eToro + basket». Rimossi Encelado.CTrader, Encelado.Storage, ricerca, indicatori, RL, TA-Lib e i test relativi (ADR-0004).
D-22 Versione del rilascio su Gitea? 4.0.0 Risposta dell'utente: 4.0.0 (nuovo broker, nuova strategia, configurazione incompatibile).
D-23 Fuso orario della finestra: quello del computer o selezionabile? computer, selezionabile Applicato: ui.timeZone = computer di fabbrica; elenco dei fusi di Windows in Impostazioni; ENCELADO_TIME_ZONE da ambiente. Solo la finestra cambia: il log porta l'offset, il ledger è UTC.
D-24 L'endpoint dei costi restituiva markup e overnight a zero: era davvero zero? verificare Verificato via API il 2026-09-16 12:45 UTC: il campo si chiama value, non amount. EURUSD 10 000 unità leva 10: markup 0,0, spread di mercato 0,1 USD (0,1 pip), overnight 0,91 USD/giorno (≈ 0,9 pip/gamba/giorno). Parser corretto; aggiunto lo scenario di costi api al backtest.
D-25 Google News vieta /rss/search nel robots.txt: forzare, sostituire o omettere? omettere Default applicato: omettere (il bot rispetta il robots.txt). SNB e RBNZ restano senza fonte; documentato in KNOWN_ISSUES.md.