Files
Encelado/Encelado/docs/QUESTIONS.md
T
Alby96andClaude Fable 5.1 9c1bab5224 5.0 Fase 9: documenti, screenshot, risposte D-28/29/36/37, piano concluso
README con gli screenshot e l'avvio rapido Docker; CLAUDE.md, architettura, runbook,
problemi noti, glossario, fonti dei dati e apprendimento riscritti per il container e
l'interfaccia web; il post-mortem spiega gli accrediti del demo (uno per ordine
ridotto, dal ledger ricevuto); le skill seguono la catena nuova. Lo stato dice che il
piano 5.0 è completo e che il rilascio 5.0.0 resta una decisione dell'utente.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-23 13:24:30 +02:00

15 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.

Fase 0 della 5.0 — 2026-09-23

Domande del prompt «Encelado 5.0» (§15) più quelle emerse dalla verifica. D-26 e D-27 sono state verificate via API (sola lettura, collegamento MCP dell'utente) e non aspettano risposta. Le Fasi 1-5 hanno usato i default; D-28, D-29, D-36 e D-37 hanno avuto risposta il 2026-09-23 e le Fasi 6-9 sono state eseguite.

# Domanda Default proposto Stato / risposta
D-26 Endpoint per leggere un ordine per orderId e mappa degli stati? verifica sul portale Verificato via API il 2026-09-23: GET api/v2/trading/info/{demo/}orders:lookup?orderId=<id> (stessa risposta del lookup per riferimento) e GET api/v1/trading/info/{demo/}orders/{orderId} (risposta v1: statusID, positions[]). Stati: 1 Received, 2 Placed, 3 Filled, 4 Rejected, 5 PartiallyFilled, 6 PendingCancel, 7 Canceled, 8 Expired, 9 CanceledPartiallyFilled, 10 RejectedPartiallyFilled, 11 WaitingForMarket, 12 PendingTriggeredRate. Eseguito = 3 o 5; rifiutato = 4, 7, 8, 9, 10; in corso = 1, 2, 6, 11, 12. Il lookup per referenceId non funziona per gli ordini v2: il server ha registrato referenceID = 00000000-… per gli ordini del bot (verificato su 381739181). Scritto in docs/DATA_SOURCES.md.
D-27 Esiste un endpoint di cancellazione ordini? no Sì, verificato: DELETE api/v2/trading/execution/{demo/}orders/{orderId} (quota 20/min condivisa con gli ordini). Il 200 conferma solo la richiesta; l'esito si legge con il lookup: 7 o 9 = annullato, 6 = in corso. Il kill-switch lo usa e poi attende la risoluzione (≤ 30 s).
D-28 Confermi il ritiro del progetto WPF a favore della web UI servita dal bot? sì (ADR-0007) Risposta dell'utente (2026-09-23): «Sì, confermo: il bot deve essere eseguito SOLO tramite container. Elimina tutta la parte della grafica Windows». Applicata: progetto WPF rimosso, Encelado.Engine + Encelado.Server, interfaccia web Material 3, chiavi in file cifrato al posto di DPAPI, VS Code con F5 sul server (ADR-0007, ADR-0008).
D-29 Registry per l'immagine e URL dell'icona del template Unraid? Gitea (build/gitea.example.json), icona nel repo Risposta dell'utente (2026-09-23): «Per il registro useremo Gitea per il momento. L'icona non si può pubblicare da qualche parte su Gitea?». Applicata: immagine 192.168.30.23:3000/alby96/encelado:<versione> sul registro dei container di Gitea (stesso token della release); icona assets/encelado.png servita da Gitea come file raw del repository (Icon del template).
D-30 Confermi la disattivazione a runtime di MLP, bandit e ciclo settimanale? sì (ADR-0006) Default applicato (ADR-0006, 2026-09-23): il bandit propone e non applica (Fase 1); learning.enabled = false di fabbrica spegne ciclo settimanale e challenger e impedisce al cancello ML di attivarsi; la logistica resta in ombra. Il comando learn dello strumento arriva con la Fase 6. Resta aperta solo se vuoi il contrario.
D-31 Token e chat ID Telegram via variabili d'ambiente? Comandi in ingresso o solo notifiche? env; comandi attivi Default applicato (Fase 5).
D-32 Le posizioni esterne vanno chiuse dal kill-switch di default? no Default applicato: risk.closeForeignOnKill = false; la conferma del kill-switch ha la spunta «chiudi anche le esterne», deselezionata.
D-33 Valute del selettore oltre USD/EUR? USD, EUR, GBP, CHF, JPY, AUD, CAD, NZD Default applicato (Fase 7). Per GBP e JPY il polling aggiunge GBPUSD e USDJPY.
D-34 Soglie di margine (40 % totale, 12 % per basket, buffer 25 %) e soglia di inattività (10 min)? Default applicato (Fasi 2 e 4), tutte in strategy.json e cambiabili dall'operatore.
D-35 Le orfane sul demo: bonifica con conferma o chiusura manuale? bonifica con conferma Superata dai fatti: il 2026-09-23 il conto demo ha 0 posizioni e 0 ordini; le 21 gambe del bot sono state chiuse in blocco il 21/9 alle 13:26 UTC (chiusura manuale, non del bot). La bonifica resta come comando (--bonifica, e pulsante in Diagnostica) per il futuro e non ha niente da chiudere oggi.
D-36 Il ledger delle sessioni 16-21/9 (65 segnale_ingresso/rifiuto) non è su questa macchina: Documenti\Encelado\data\ledger\decisions.jsonl ha solo il 16/9. Su quale macchina o profilo ha girato il bot? Puoi copiare qui decisions.jsonl, baskets_state.json e learning_state.json di quella sessione? procedere con le evidenze dell'API Risposta dell'utente (2026-09-23): allegato il bundle della cartella dati dell'installazione 4.0.0. Letto: 1 813 righe dal 16/9 15:55 al 22/9 08:01, 65 segnale_ingresso e 65 rifiuto con motivazione «esito non ancora noto», preset AGGRESSIVE impostato dalla finestra, quattro run; baskets_state.json con killSwitched = true («kill-switch dalla finestra») e picco 149 552. L'equity registrata sale da 109 228 a 149 517 USD in circa ventuno scatti di ≈ +2 000 USD, uno per ogni esecuzione ridotta dal server: gli «accrediti» erano crediti virtuali del demo per ordine, non depositi. Post-mortem aggiornato.
D-37 Confermi che la chiusura in blocco del 21/9 alle 13:26 UTC l'hai fatta tu dalla piattaforma? Risposta dell'utente (2026-09-23): «Sì, l'ho fatta io». Chiuso.