Trading libero dalle emozioni

0
27

Introduzione al mondo dei sistemi di trading automatico

La psicologia dei partecipanti al mercato gioca un ruolo importante in ciò che accade in borsa. Molte decisioni di trading vengono prese per avidità e paura, sebbene ogni trader sappia che esse non dovrebbero essere guidate dai sentimenti. I sistemi di trading automatico possono essere utilizzati per rimuovere le emozioni dal trading. Oltre al vantaggio di agire sempre secondo parametri fissi, i trader automatici sono superiori ai trader umani per velocità e complessità.

La domanda su quale piattaforma sia più adatta per un sistema di trading automatico non può essere risolta facilmente, poiché giocano un ruolo molti fattori influenzanti come l’approccio personale o i dati offerti. In questo articolo cercheremo quindi di classificare le varie opzioni ed evidenziarne vantaggi e svantaggi.

Piattaforme integrate
Molti trader fanno i primi passi con i sistemi automatici nelle loro solite applicazioni di trading. Hanno familiarità con queste e, oltre alle funzionalità classiche come la creazione di grafici e la creazione di ordini, spesso offrono la possibilità di fare trading automaticamente con l’aiuto di indicatori e sistemi di trading.

Alcuni noti rappresentanti sono MetaTrader, MetaStock, TradeSignal Online o il veterano TradeStation di Omega Research. Inoltre, esiste una vasta gamma di applicazioni simili che differiscono funzionalmente, tra le altre cose, negli strumenti finanziari e nei mercati tradabili, nella qualità dei dati e nei broker gestibili.

Nelle applicazioni di trading è integrato un ambiente di sviluppo per la programmazione di sistemi di trading automatico. Questi ambienti servono principalmente come editor per il codice del programma del sistema di trading. A seconda della piattaforma, vengono offerti ausili di programmazione aggiuntivi, come il completamento del codice, gli output degli sviluppatori o le funzioni di debug per individuare gli errori di programmazione. Un ambiente di sviluppo ben progettato è essenziale se si vule capire come funziona il sistema di trading in dettaglio, soprattutto se esso non funziona come previsto.

I linguaggi speciali sviluppati internamente vengono utilizzati principalmente come linguaggi di programmazione: ad esempio, su TradeStation questo si chiama Easy Language, su MetaTrader MQL. Essi offrono costrutti speciali per i sistemi di trading, in particolare la memorizzazione dei dati di borsa in serie temporali e ulteriori operazioni basate su di esse.

Esempi di codice per più serie di dati
TradeStation
High2 = High of Data2
TradeSignal
High2 = High of Data2
MetaTrader
High2 = iHigh(“USDCHF”,PERIOD_H1,0)
NinjaTrader
High2 = High[1][0]

Ciò che questi ambienti hanno in comune è che sono dotati di una serie di indicatori già pronti in modo che i calcoli semplici come le medie mobili o le bande di Bollinger non debbano essere programmati dall’utente. Se gli indicatori che stai cercando non sono disponibili, ci sono comunità attive per tutte le applicazioni di trading citate, in cui vengono offerti indicatori già pronti (tabella 1).

Tutti i punti menzionati assicurano che con l’aiuto di piattaforme integrate, i principianti della programmazione possano scrivere sistemi di trading di successo con poco sforzo.

Lo svantaggio di queste piattaforme è che sono chiuse. Se la piattaforma scelta non offre determinate funzionalità, espanderla da soli è spesso un’impresa complessa.

I requisiti spesso visti sono l’invio di e-mail durante la creazione di un ordine o il collegamento di varianti di dati alternative. Quindi bisogna pensare a tutti i requisiti di sistema fin dall’inizio per non dover convivere con inadeguatezze in termini di trading.

Soluzioni ibride
Un modo per uscire dalle funzioni di retrofitting che non sono disponibili è accedere a componenti esterni, possibilmente auto-programmati, dai sistemi di trading. Queste cosiddette soluzioni ibride combinano i vantaggi della piattaforma integrata con la flessibilità degli sviluppi interni.

Per fare ciò, viene richiamato un file esterno (le cosiddette librerie di programmi) nel codice di programma di un sistema di trading per ricevere dati o eseguire azioni. Tra le altre cose, è possibile inviare notifiche a smartphone o integrare informazioni di Google o Yahoo Finance, ad esempio, nel sistema di trading. I segnali di trading possono anche essere inoltrati a più account con diversi broker, il che consente una varietà di soluzioni ibride. A differenza delle piattaforme integrate, queste librerie di programmi non sono scritte nei linguaggi speciali sopra menzionati, ma in linguaggi di programmazione universali come C#, ++ o Java. Ovviamente, questo significa che è necessaria la familiarizzazione con i concetti di programmazione orientata agli oggetti e in particolare con uno dei linguaggi sopra menzionati (e le loro curve di apprendimento non dovrebbero essere sottovalutate). Particolare attenzione deve essere posta al riferimento temporale dei dati ricevuti durante il backtesting. Quindi è inutile se per il test vengono forniti i dati correnti invece dei valori storici richiesti. Le soluzioni ibride sono quindi adatte per espandere i confini di una piattaforma di trading all’interno di un dato framework, connettere le proprie fonti di informazione o innescare attività esterne. Lo sforzo di programmazione è spesso gestibile, per cui ovviamente il periodo di formazione nel linguaggio di programmazione scelto è un aspetto molto importante.

In un successivo articolo mostreremo come i messaggi possono essere inviati a un telefono cellulare da un MetaTrader Expert Advisor (EA) tramite il servizio di messaggi brevi Telegram.

API proprietarie
Se le soluzioni sopra menzionate non sono sufficienti per implementare l’idea di trading, molti grandi broker e fornitori di dati offrono interfacce per collegare soluzioni software completamente sviluppate individualmente. Tali interfacce sono chiamate interfacce di programmazione dell’applicazione o API (tabella 2). Ciò significa che le piattaforme di trading vengono bypassate completamente o utilizzate solo come punto di connessione per l’interfaccia.

Una soluzione che viene spesso utilizzata si basa sul DDE (Dynamic Data Exchange) in collaborazione con Excel. Il protocollo sviluppato da Microsoft nel 1987 e pubblicato con Windows 2.0 consente a Excel di visualizzare le informazioni in tempo reale nelle tabelle e di utilizzarle. Inoltre, Excel offre un gran numero di funzioni matematiche che consentono la valutazione individuale e l’ulteriore elaborazione dei dati (figura 1).

I limiti di una tale soluzione sono dovuti alle limitate possibilità di Excel, in particolare l’elaborazione di grandi quantità di dati in tempo reale e il difficile apprendimento del linguaggio di programmazione VBA (Visual Basic for Applications). Ciò significa che una soluzione Excel che inizialmente è facile da usare dovrà prima o poi essere sostituita da uno sviluppo completamente indipendente (“Excel trap”).

Un gran numero di linguaggi e ambienti di programmazione sono disponibili per una tale soluzione, la cui semplice enumerazione andrebbe oltre lo scopo di questo articolo, motivo per cui si fa riferimento solo ai rappresentanti più noti C++, C#, Java e Python. Inoltre, vengono spesso utilizzati MATLAB o R, il cui principale campo di applicazione nell’area matematico-statistica è in questo caso vantaggioso.

Ciò che accomuna tutte le soluzioni è che puoi utilizzarle per accedere a tutte le funzioni del linguaggio di programmazione, ovvero puoi progettare le tue finestre di programma, sistemi di notifica o sequenze di programma. Non ci sono quasi limiti alla progettazione del software. Questa libertà rappresenta naturalmente anche il più grande ostacolo perché tutti i processi e i dialoghi devono essere programmati individualmente. Affinché le funzioni utilizzate di frequente non debbano essere sviluppate da soli, esiste un gran numero di librerie software con soluzioni già pronte, come:

TALib: Fornitura di funzioni matematiche finanziarie, comprese le bande MACD o Bollinger.

LiveCharts: creazione di grafici interattivi complessi.

Interfaccia utente di Telerik: libreria completa con elementi di layout complessi (inclusi grafici, tabelle interattive e notifiche).

Oltre alle librerie, che semplificano notevolmente il lavoro di programmazione, è disponibile un gran numero di ambienti di sviluppo, la cui complessità spazia da semplici editor come Notepad++ ad ambienti di sviluppo integrato (IDE) altamente complessi come Visual Studio di Microsoft. È necessario assicurarsi che le seguenti funzionalità siano incluse per consentire un lavoro produttivo:

Completamento automatico: vengono visualizzati e inseriti i nomi delle variabili e delle funzioni.

Risoluzione dei problemi: gli errori nel programma vengono evidenziati visivamente o il programma viene arrestato nel punto pertinente in caso di errore.

Punti di interruzione: impostazione dei punti di interruzione nell’esecuzione del programma in cui il programma si interrompe e il contenuto delle variabili può essere verificato.

Conclusione
In conclusione, va detto che una soluzione adeguata deve essere sempre trovata sulla base dei requisiti richiesti. Le possibilità presentate differiscono per complessità, apprendibilità e tecnologie utilizzate. La loro gamma di applicazioni si estende da soluzioni integrate in applicazioni di vendita al dettaglio a software completamente sviluppati individualmente.

René Iwan

René Iwan è un informatico qualificato. Ha lavorato a progetti per Audi e ha svolto ricerche nell’area database. Da dieci anni è project manager per XECURIS GmbH & Co. KG. rene.iwan@xecuris.com

 

 

Marco Gruhl

Marco Gruhl è uno specialista IT per lo sviluppo di applicazioni. Si è specializzato nello sviluppo e nell’implementazione di interfacce dati e lavora da 16 anni per XECURIS GmbH & Co. KG nell’ambiente di borsa. marco.gruhl@xecuris.com