In questo articolo, analizzeremo alcuni esempi di realizzazione di un bot di trading con l’obiettivo di leggerne l’architettura costituente. Una volta discente gli elementi, e costruito lo schema dei componenti, potremmo realizzarne uno nuovo, ma soltanto dopo aver capito quali sono, e come funzionano. Tale approccio fa parte di un analisi prettamente progettuale che nel tempo, adottando un modello evolutivo, ci permetterà di raggiungere una buona definizione del prodotto.
Leggi tutto: Analisi dell’architettura dei componenti di un sistema di Trading.Senza anticipare o scrivere dell’altro, iniziamo con un esempio molto semplice, presente al seguente indirizzo: TradingBot series — Architecture for a trading bot | by Matt Gosden | Medium.
Nell’articolo, l’autore, Matt Gosden propone la seguente architettura per la realizzazione di un bot di trading.
Come si vede, si tratta di una visione sintetica dell’architettura del bot proposto. In questo schema, sembra che il cuore del progetto sia rappresentato dal DBMS PostgreSQL, in grado di archiviare tutte le informazioni riguardanti i dati delle transazioni dagli Exchanges relative alle pair (Asset/Currency), quelle degli indicatori tecnici e non, altri dati legati agli ordini di vendita e acquisto, le informazioni delle strategie di trading e via dicendo. In questo “bot”, il cuore del progetto è il DBMS PostgreSQL, in altri potrebbe essere un qualsiasi altro componente. Di fatto, il DBMS risulta importante per la gestione dei dati, ma è pur sempre di supporto agli altri componenti. Realizzare, l’architettura del DBMS, da una progettazione concettuale per poi approdare a una realizzazione logica è essenziale, ma non può, a mio avviso, essere considerato l’elemento più importante. Il cuore, nello schema in oggetto, ritengo personalmente che sia il componente identificato con il nome “Trading algorithms and order management”, nel quale viene “disegnato” il comportamento del bot e la gestione degli ordini di acquisto e di vendita degli assets. Il bot, senza quest’ultima parte risulta depauperato della sua funzione, mentre non è così se si toglie il DBMS dallo schema.
Al posto di PostGreSQL avremmo potuto scegliere altri DBMS come ad esempio MYSQL, MariaDB, SQL Server, quello che li accomuna, è l’approccio nella costruzione del database per la gestione del bot di trading come descritto nell’immagine seguente.
In pratica, si parte da un processo di realizzazione del database del bot di trading composto in tre fasi. Una prima fase, chiamata raccolta dei requisiti, in cui si definiscono in linguaggio naturale, gli oggetti che compongono il database. In questa fase, si definiscono anche tutte le funzionalità che saranno previste, così da far emergere tutti gli altri oggetti da includere nel database. Una seconda fase prevede la realizzazione di un schema E-R (Entità-Relazione) in cui si disegnano gli oggetti, i loro attributi e le loro relazioni in una logica top-down o bottom-up. Infine, si passa alla terza fase nella quale lo schema Entità Relazione diventa schema logico in cui si costruiscono tabelle, campi e relazioni direttamente nel database.
Sicuramente, un altro elemento importante dell’architettura di questo esempio è il componente che si occupa di eseguire il download dei dati delle transazioni delle varie Pair(Asset/Currency) appartenenti ai diversi Exchanges. Tale elemento, risulta fondamentale per poter definire delle strategie basate o sui dati storici consolidati o sui dati reali correnti. Nello schema di Gosden, questo componente, è chiamato “Market Data” e viene associato all’utilizzo della API (Application Programming Interface) offerte dagli Exchanges. Così, gli Exchanges attraverso le API mettono a disposizione degli sviluppatori diversi metodi che consentono operazioni di scrittura o lettura di quasi tutte le informazioni di interesse. Per tale motivo, il componente, indicato nell’esempio come “Market Data”, risulta importante ed è uno degli elementi fondamentali del bot di trading.
Dallo schema di Gosden, si legge che la libreria che ha previsto per comunicare con gli Exchanges è CCXT ossia la “CryptoCurrency eXchange Trading Library”. Scritta in Python, CCXT permette un supporto a molti CryptoCurrency Exchanges, esponendo i metodi pubblici e privati delle loro APIs e rappresenta ad oggi la migliore libreria in circolazione. Quindi, se avete intenzione di sviluppare il vostro bot di trading utilizzatela.
Per quanto concerne il mondo non Crypto vi sono altre librerie, ma in linea di massima, sarebbe opportuno, sviluppare il primo bot di trading nell’ambito Crypto, soprattutto per i bassi “costi” da affrontare.
Oltre, al componente appena menzionato, nello schema, è stato introdotto un altro elemento chiamato “Calculate Indicators and triggers” che si occupa del calcolo automatico degli indicatori e dell’applicazione dei vari triggers ai dati scaricati dal “Market Data”. Tale componente risulta interessante sia per il calcolo del valore degli indicatori tecnici, e sia l’applicazione di alcuni triggers in grado di comunicare, al verificarsi di certi eventi, con il componente principale il “Trading algorithms and orders management”. In sintesi, è qui che si calcola il valore degli indicatori come le medie mobili semplici (SMA), le medie mobili pesate (WMA), le medie mobili esponenziali (EMA), le bande di bollinger, Il relative Strenght Index (RSI) e via dicendo. Godsen ha indicato come libreria per il calcolo degli indicatori la “Backtrader”, ma ve ne sono altre che potete utilizzare, come ad esempio la “Talib”. Di seguito ho riportato i links alle due librerie appena indicate.
TA-Lib : Technical Analysis Library – Home
Come già premesso, l’elemento più importante in questo schema è quello relativo alla gestione delle operazioni di trading e della gestione degli ordini. Tale elemento, in questo esempio di bot di trading è chiamato “Trading algorithms and order management” e si occupa principalmente di eseguire le operazioni di vendita e di acquisto sulla valutazione delle strategie scelte, di impostarne alcuni parametri e di gestire gli ordini nei vari Exchange. In generale un bot di trading o Trading System è un insieme di tutti i componenti proposti da Gosden. La scelta vincente è poterlo “governare” in modo semplice e quindi iniziare, in un primo momento da una soluzione “lite” adottando alcune strategie “semplici”, non complesse, formate da alcuni indicatori in grado di fornire un quadro omogeno di informazioni e non in contraddizione tra loro. Per ogni strategia, dobbiamo sapere se verrà originato un segnale di acquisto o di vendita, e dovremmo disegnare ogni comportamento di uscita dal mercato, di entrata dal mercato e di interazione con altri indicatori. Non dovremmo trovarci nella situazione in cui, a seconda di alcune condizioni di mercato, non sappiamo cosa fare!
Infine, l’ultimo elemento è rappresentato dal “frontend”, in questo caso “web” con cui l’utente ha la possibilità di gestire tutti gli elementi del bot trading direttamente da un’interfaccia visuale. In questo progetto, è stata proposta una applicazione web basata sul framework Python Django. Quest’ultima scelta è condivisibile sia per la verticalizzazione del linguaggio Python e sia per la scalabilità che Django offre rispetto ad altre soluzioni di tipo Enterprise.