Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGraziano Fontana Modificato 9 anni fa
1
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura Mat. 0000307464
2
Obiettivi del progetto Creare un ambiente che consenta di definire in modo semplice e rapido le operazione da svolgere sul proprio portafoglio azioni. Consentire di impostare regole per la gestione automatica del portafoglio, istruendo il programma ad acquistare o vendere azioni sotto determinate condizioni. Mantenere una visione costantemente aggiornata dell’andamento della borsa e dello stato del proprio portafoglio.
3
Grammatica-Sintassi (1/5) COSA POSSIAMO FARE CON ETORO: ::= ( | | | | ) Acquistare quote di valute o di beni da aggiungere al proprio portafoglio Vendere quote di valute o beni appartenenti al proprio portafoglio Visualizzare graficamente gli andamenti del mercato o dei movimenti del proprio portafoglio Impostare delle regole di gestione per automatizzare l’acquisto o la vendita di quote di valute o beni quando si verificano determinate condizioni Eliminare regole di gestione non più desiderate Non è prevista la stringa ε nello scopo della grammatica.
4
Grammatica-Sintassi (2/5) OPERAZIONI DI ACQUISTO: ::= “=” “BUY” “;” L’utente deve specificare l’identificativo dell’operazione di acquisto, indicare cosa intende comprare ed il numero di quote desiderate. OPERAZIONI DI VENDITA: ::= “SELL” [ ] “;” L’utente può vendere una parte o la totalità delle quote di un movimento presente nel proprio portafoglio. CONTROLLO SEMANTICO L’identificativo dell’operazione deve essere unico CONTROLLO SEMANTICO L’identificativo deve essere presente nel proprio portafoglio
5
Grammatica-Sintassi (3/5) OPERAZIONI DI VISUALIZZAZIONE: ::= “PLOT” (“MARKET” | ) [ ] “;” Consente all’utente di visualizzare l’andamento del mercato per la valuta o il bene di interesse o l’andamento di un movimento nel portafoglio. È possibile anche specificare un intervallo di tempo limitato. ::= | “-” ::= “-” CONTROLLO SEMANTICO L’identificativo deve essere presente nel proprio portafoglio CONTROLLO SEMANTICO Le due valute devono essere distinte CONTROLLO SEMANTICO L’intervallo temporale deve essere consistente. Il primo orario deve precedere il secondo, in modo coerente con gli orari di apertura della borsa
6
Grammatica-Sintassi (4/5) REGOLE DI GESTIONE: ::= “= ” “HANDLE” ( | ) “;” Consente all’utente di specificare delle regole di gestione per automatizzare operazioni di acquisto o di vendita. Possibilità di specificare delle regole composte, in relazione di AND od OR. ::= “BUY” ::= [ ( “AND” | “OR” ) ] ::= “(” “)” | ::= ( “>” | “>=” | “ | | “LAST” (“>” | “>=” | “ CONTROLLO SEMANTICO L’identificativo della regola di gestione deve essere unico Contiene self-embedding CONTROLLO SEMANTICO L’orario deve essere successivo al momento attuale CONTROLLO SEMANTICO Num deve essere inferiore al numero di dati finora raccolti
7
Grammatica-Sintassi (5/5) ::= “SELL” [ ] ::= [ ( “AND” | “OR” ) ] ::= “(” “)” | ::= | “AFTER” | ( “+” | “-” ) “%” ELIMINAZIONE DI REGOLE: ::= “DELETE” “;” CONTROLLO SEMANTICO L’identificativo deve essere presente nel proprio portafoglio CONTROLLO SEMANTICO L’orario non deve superare l’orario di chiusura della borsa CONTROLLO SEMANTICO L’identificativo deve essere presente tra le regole di gestione
8
Grammatica-Lessico > “.” ([“0” – “9”])*> “:” “:” > LESSICO Sottoparti del linguaggio descritte con grammatiche regolari di tipo 3. Il lessico viene trattato separatamente dagli strumenti per ottimizzare il processo di riconoscimento e di costruzione dell’APT
9
Espressioni di assegnamento Nel caso delle operazioni di BUY e per le regole di gestione HANDLE si ha l’assegnamento di un identificativo. È necessario un controllo semantico per garantire l’unicità degli ID ed una struttura per la loro memorizzazione ::= “=” “BUY” “;” ::= “= ” “HANDLE” ( | ) “;” IDOPMOVEMENTS OP1movement1 OP2movement2 IDRULERULES RULE1rule1 RULE4rule4 Realizzata con una Hashtable: La chiave è IDOP e il valore è un riferimento ad un oggetto Movement, una operazione nel portafoglio Realizzata con una Hashtable: La chiave è IDRULE e il valore è un riferimento ad un oggetto Rule, una regola di gestione delle operazioni
10
Classificazione Le produzioni sintattiche sono tutte riconducibili a: La grammatica è di TIPO 2 (context-free) secondo la classificazione di Chomsky Il linguaggio realizzato è di TIPO 2 per la presenza di self-embedding, si hanno produzioni del tipo: La grammatica è di tipo LL(1) → dimostrazione con Starter Symbol PDA (Push Down Automaton) deterministico, realizzabile con analisi ricorsiva discendente
11
Architettura - Packages Genarato da JavaCC Esegue l’analisi sintattica Genarato da JTB Classi necessarie per creare l’albero Genarato da JTB Contiene gli scheletri del visitor Pianifica l’aggiornamento dei dati e la verifica delle regole di gestione Interfaccia grafica e listener dei comandi Classi per la gestione delle operazioni richieste Gestore dei dati della borsa, ordinati cronologicamente Classi per il recupero periodico dei dati di borsa
12
DATA Architettura generale USER SCHEDULER RICHIEDI OPERAZIONE (Buy, Sell, Plot) GESTIONE RULES (Handle, Delete) VALUTA REGOLE DI GESTIONE AGGIORNA DATI PORTAFOGLIO OPERAZIONI CONTENITORE RULES INPUT STREAM evalRules updateData
13
Richiedi operazione (1/2)
14
Richiedi operazione (2/2)
15
Valuta regole
16
L’interfaccia grafica Valori attuali costantemente aggiornati Movimenti attivi presenti nel portafoglio Regole di gestione Movimenti già chiusi Casella in cui inserire i comandi Casella in cui inserire i comandi Casella di output
17
Linguaggio di programmazione: Java 1.6 – Libreria JFreeChart per il plot dei grafici Ambiente di sviluppo: Eclipse Galileo Strumenti automatici: – JavaCC 4.0: generazione del parser e dello scanner con analisi top- down discendente – JTB 1.3.2: generazione delle classi per l’APT e per il visitor – JJDoc: generazione della documentazione Strumenti utilizzati
18
POSSIBILI ESTENSIONI AL PROGETTO: Connessione a fonti di dati online per ottenere flussi di informazioni reali aggiornati dinamicamente; Definizione di regole di gestione più complesse e raffinate; Grafici aggiornati dinamicamente in tempo reale; Traduzioni delle informazioni derivanti dai mercati economici in regole di gestione. Sviluppi futuri Servirebbe un esperto finanziario…
19
Demo Let’s play and start gaining!
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.