37
www.sapienzafinanziaria.com Corso Sapienza Trading Automatico la formazione finanziaria è il miglior investimento per il tuo domani

Corso Sapienza Trading Automatico · Utilizzerò dei pattern candlestick ? ... • Realizzare solo codice scritto correttamente ed utilizzabile. • Realizzare il massimo della funzionalità

Embed Size (px)

Citation preview

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

• 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

Obiettivi di questa lezione

Su che tipo di mercato voglio basare la strategia ?

• Trend Following

• Contro Trend

• Congestione

• Alta volatilità

• Mercato ciclico

• …

Osservazione dei mercati e idea di trading

Identificare le regole sul grafico

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

Cosa utilizzo nella strategia

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

Regole di entrata chiare e semplici

Alcuni Esempi

Alcuni Esempi

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

Regole di uscita chiare e semplici

Relazione dei segnali di Trading

Descrivere la logica operativa

Implementare la strategia

1

2 3

O3

O2

C2

C3

C1

C3>O3 O2>C2 C3<O2 O3>C2 C1<C2

Implementare la strategia

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 ?

Stabilire stoploss e take profit

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.

Il size dell’operazione

Una volta verificata la correttezza del codice SHORT sarà semplice convertire le istruzioni per generare le regole di entrata LONG.

Long e Short

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.

Stabilire le variabili esterne ed interne

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

La 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

Regole basilari della 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.

Criteri di programmazione

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.

Cos’è MQL

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

I tipi di programma

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

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.

Cos’è un EA

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 .

Implementare il codice

File > Nuovo > Consigliere Esperto

Il MetaEditor

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)

Esecuzione del trade (Apertura/Chiusura)

Controllo dei segnali di trading

Rispettare la struttura

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 Tick

Il flusso del programma

ELABORAZIONE VARIABILI

ACQUISIZIONE DATI CONTO E MERCATO

DEFINIZIONE CRITERI STRATEGIA

CONTROLLO ORDINI EVENTUALE CHIUSURA

CALCOLO DEL SIZE

APERTURA ORDINI

GESTIONE DEGLI ERRORI

END

START

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

Fondamenti di programmazione

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'

Tipologie di dati

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;

Le variabili

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.

I commenti

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.

Conclusioni