www.sapienzafinanziaria.com Corso Sapienza Trading Automatico la formazione finanziaria è il miglior investimento per il tuo domani
Lezione n. 1 Edizione marzo 2015 Traduzione di un'idea in codice www.sapienzafinanziaria.com
Obiettivi di questa lezione Comprendere i punti chiave nello sviluppo di una strategia di trading automatico Da dove partire per progettare un EA Capire come si deve strutturare il codice di un EA
Osservazione dei mercati e idea di trading Su che tipo di mercato voglio basare la strategia? Trend Following Contro Trend Congestione Alta volatilità Mercato ciclico
Identificare le regole sul grafico
Cosa utilizzo nella strategia Individuerò particolari movimenti del prezzo? Userò degli di indicatori? Se si in che modo li utilizzerò? Utilizzerò dei pattern candlestick? Se utilizzo dei livelli di prezzo in che modo posso individuarli? Utilizzerò dei filtri? Quale timeframe? Devo ricercare la simmetria della strategia
Regole di entrata chiare e semplici Devo definire con chiarezza le regole di ingresso a mercato ed individuare con precisione i parametri che mi serviranno per codificare tali regole. Meglio scrivere le regole su un foglio di carta
Alcuni Esempi
Alcuni Esempi
Regole di uscita chiare e semplici Sono in un certo senso più importanti di quelle di entrata. Devo capire quando una posizione aperta dalle regole della strategia non ha più senso di rimanere a mercato. Devo capire le regole che invalidano la strategia sia long che short. Ad esempio la regola che mi fa entrare a mercato long potrebbe chiudere l eventuale ordine short aperto (stop and reverse).
Relazione dei segnali di Trading
Descrivere la logica operativa
Implementare la strategia
Implementare la strategia 3 C3 O2 2 O3 C2 C3>O3 O2>C2 C3<O2 O3>C2 C1<C2 C1 1
Stabilire stoploss e take profit Come posso stabilire lo stoploss? Posso inserire un valore fisso? Posso legarlo a dei parametri variabili? Portero lo stoploss a breakeaven? Come posso stabilire il take profit? Posso stabilire un valore fisso? Posso legarlo a dei parametri variabili? Posso usare il TrailingStop? Posso effettuare una chiusura parziale della posizione?
Il size dell operazione Per il nostro esempio utilizzeremo un size fisso dell operazione quindi per semplicità non implementeremo in questa fase nessuna particolare regola di money management. Considerata la complessità dell argomento tratteremo il money management in una lezione dedicata.
Long e Short Una volta verificata la correttezza del codice SHORT sarà semplice convertire le istruzioni per generare le regole di entrata LONG.
Stabilire le variabili esterne ed interne In questa fase è necessario stabilire quali saranno le variabili che potranno essere specificate dall'operatore. Queste variabili sono chiamate detti parametri esterni (external parameters) Maggiori sono le funzioni parametrizzate migliore sarà il controllo della strategia perché avrò più spazio di modifica.
La Programmazione Di solito un programmatore prima di iniziare il suo lavoro deve porsi alcune domande : A cosa serve scrivere un programma? Cosa rende un programma utile o inutile? Quali sono gli obiettivi della programmazione? Quali sono i problemi coinvolti? Quali soluzioni può fornire una corretta programmazione? In un certo senso sono le stesse domande che deve porsi un trader che si accinge ad automatizzare la propria strategia
Regole basilari della programmazione Vediamo qualche regola basilare utile prima di iniziare a programmare. Quando si scrive un codice dobbiamo tenere presente che : - il sistema automatico dovrà essere semplice e facile da usare - il sistema automatico dovrà essere facile da capire, correggere e migliorare senza troppi interventi - il risultato finale dovrà corrispondere a quello che ci siamo prefissati di ottenere
Criteri di programmazione Pianificare ciò che si vuole realizzare prima di iniziare a scrivere il codice. Svolgere delle indagini su sistemi automatici già esistenti simili a quello che si vuole sviluppare per capire come migliorare tali programmi. Realizzare solo codice scritto correttamente ed utilizzabile. Realizzare il massimo della funzionalità con la minima complessità possibile.
Cos è MQL MQL (MetaQuotesLanguage) è il linguaggio di programmazione con cui sono scritti gli Expert Advisor. MQL4 è praticamente molto simile al linguaggio di programmazione C. Il codice scritto in MQL, per essere «compreso» dalla piattaforma deve essere sempre tradotto in linguaggio macchina, e a tale scopo deve quindi essere «compilato» prima di poter essere eseguito. La COMPILAZIONE è un operazione che viene eseguita da un programma apposito (detto compilatore) già presente nella piattaforma Metatrader.
I tipi di programma Quando si inizia a scrivere un programma in MQL4 è necessario, prima di tutto sapere che tipo di programmi sarà. In MQL4, ci sono tre tipi di programmi con contenuti e funzionalità diverse : EA Script Indicatori personalizzati Proprietà del programma EA Script Indicatore Durata esecuzione dopo averlo attivato Fino a disattivazione Una sola volta Fino a disattivazione Trading SI SI NO Funzioni grafiche NO NO SI Uso simultaneo sul grafico dello stesso cross NO NO SI
Cos è un EA Gli EA (Expert Advisor) sono dei software che una volta installati nella piattaforma di trading (Metatrader) lavoreranno per te aprendo degli ordini a mercato in modo del tutto automatizzato. In altre parole sono programmi sviluppati con un linguaggio che con determinate istruzioni, permette alla tua piattaforma di potere compiere una serie di azioni in particolari momenti del mercato. Questi EA ti permettono di applicare una o più strategie di trading utilizzando il capitale a disposizione sul tuo conto.
Implementare il codice POSSO USARE DEI TOOL? Certamente ce ne sono diversi sia gratuiti che a pagamento http://sufx.core.t3-ism.net/expertadvisorbuilder/ Il problema dei tool è che non si entra mai del tutto nel vivo del codice. Un trader sistematico dovrebbe gradualmente avvicinarsi alla comprensione del codice.
Il MetaEditor File > Nuovo > Consigliere Esperto
Le funzioni speciali
Dichiarazione e inizializzazione variabili esterne Funzioni create dall utente e inclusioni Inizializzazione del Expert Advisor De-inizializzazione del Expert Advisor Dichiarazione delle variabili locali e statiche Collezione dei dati per i calcoli (prezzo-indicatori) Controllo dei segnali di trading Esecuzione del trade (Apertura/Chiusura)
Rispettare la struttura
Il Tick L evento che caratterizza ogni minima variazione dei prezzi sulla piattaforma è chiamato Tick. Un Expert Advisor ( EA) non funziona per tutto il tempo ma viene riavviato nel momento in cui arriva un nuovo Tick. Per questo motivo il Tick non rappresenta solo l arrivo di un nuovo prezzo ma anche un evento che deve essere elaborato dal terminale.
Il flusso del programma START ELABORAZIONE VARIABILI ACQUISIZIONE DATI CONTO E MERCATO DEFINIZIONE CRITERI STRATEGIA CONTROLLO ORDINI EVENTUALE CHIUSURA CALCOLO DEL SIZE GESTIONE DEGLI ERRORI APERTURA ORDINI END
Fondamenti di programmazione I più importanti elementi di un programma sono questi : LE VARIABILI (<tipo di dato> <nome variabile>;) int SLOW_EMA_PERIOD; SLOW_EMA_PERIOD = 50; double SLOW_EMA1 = ima(null, 0, SLOW_EMA_PERIOD, 0, MODE_EMA, PRICE_CLOSE, 1); I COMMENTI ( // commento oppure /* commento */ ) // DEFINISCO IL SEGNALE PER APRIRE UN OPERAZIONE LONG GLI STATEMENTS manipolano i dati per trarne risultati che possono essere convertiti in azioni a = b+c; LE FUNZIONI sono semplicemente delle collezioni di statements correlati che possono essere utilizzate per eseguire un compito specifico
Tipologie di dati Prima di approfondire il concetto di variabili dobbiamo parlare dei tipi di dati. Come i normali oggetti della vita quotidiana sono caratterizzati ad esempio dal loro colore (rosso, blu, giallo, verde) o dal loro sapore (amaro, acido, dolce), anche i dati nei linguaggi di programmazione sono definiti in base a delle caratteristiche. int (numeri interi) 1, 5, 100 ecc double (numeri reali) 1.545 ecc bool (valori Booleani, valori logici) 0, 1, true, false string (stringhe di testo) MARIO, LINGUAGGIO color (valori che identificano il colore) Red, Yellow, 0x008000; datetime (valori di data e ora) '12.05.2013 16:30:45'
Le variabili In genere, durante l esecuzione del programma, servono o si generano nuove informazioni. Possono essere dati inseriti dall utente oppure il risultato di calcoli, che devono essere via via memorizzate. Dal momento che le informazioni in questione possono variare nel tempo, esse vengono definite con il termine variabili; Le variabili sono dei contenitori che possono racchiudere diverse tipologie di dati. <tipo di dato> <nome variabile>; int n; <nome variabile> = <valore>; n = 5;
I commenti Molti trascurano l utilità di commentare il codice. Commentare il codice permette di facilitare le successive modifiche e di individuare più facilmente le parti di codice che potrebbero generare inefficienze durante l esecuzione del programma.
Conclusioni Il processo per tradurre bene la strategia in codice è piuttosto lungo. Come visto bisogna procedere per gradi in modo da non incorrere in errori che poi sarebbero difficili da individuare. Una volta certi che una regola è stata tradotta bene solo allora si potrà passare ad implementare la successiva. Il tutto va condotto con pazienza, attenzione ai particolari e conoscenza di tutti i passaggi.