• Non ci sono risultati.

CAPITOLO 3: Il Chande Momentum Oscillator

3.2 Codice MATLAB

Tramite il programma MATLAB è possibile sviluppare una serie di comandi in grado di fornire come risultato il grafico di qualsivoglia indicatore. L’obiettivo è quello di creare una function, ovvero un modello che necessiti di alcuni dati di input come ad esempio le quotazioni di un titolo, la data di inizio e quella di fine del periodo di analisi e in alcuni casi le sedute da considerare per il calcolo dell’indicatore38 e che restituisca come output

il grafico dell’indicatore di mercato. Così facendo, sarà possibile modificare ogni volta che sarà necessario i parametri di input ed avere in ogni modo come risultato finale la visualizzazione grafica dell’indice creato tramite il programma MATLAB.

function CMO(T,day1,day2,p)

% BLOCCO 1: si estraggono dalla tabella i vettori dei dati

Date=T.Date; Close=T.Close; n=length(Close);

% BLOCCO 2: si cercano le righe corrispondenti a day1 ed a day2

for i=1:n if Date(i)>=day1 posd1=i; break; end end if day2>=Date(n) posd2=n; else for i=posd1:n if Date(i)>day2 posd2=i-1; break; end end end

La function si presenta come nel codice riportato sopra: alla prima riga si trova il titolo, in questo caso CMO, mentre tra parentesi sono indicati gli input necessari alla function per elaborare il grafico dell’indicatore, che in ordine sono la tabella delle quotazioni del titolo (𝑇)39, l’inizio e la fine del periodo di analisi (day1 e day2) e infine il parametro

utilizzato come time span dell’indice (𝑝).

Tramite il blocco 1 di comandi si estraggono dalla tabella 𝑇 i dati necessari per il calcolo dell’indicatore, in questo caso le date delle varie sedute borsistiche e le chiusure, tralasciando elementi come i massimi, i minimi oppure i volumi che non risultano necessari ai fini del calcolo dell’indicatore CMO. Inoltre, si assegna il parametro 𝑛 alla lunghezza del vettore delle chiusure; tale valore verrà usato come riferimento per il resto dei calcoli.

Il blocco 2 di comandi ha la funzione di individuare le date inserite come input dall’analista. Nel caso in cui venga immessa dall’analista una data in cui la quotazione non è disponibile (come ad esempio sabato, domenica o giorni festivi) il programma seleziona automaticamente il primo giorno successivo con quotazione disponibile nel caso in cui la data non trovata sia quella di inizio dell’analisi, mentre memorizza il primo giorno antecedente con quotazione disponibile nel caso in cui sia la data di fine a non essere disponibile. In questo modo vengono evitati errori di procedura che potrebbero bloccare l’analisi già in fase di partenza.

% BLOCCO 3: subfunction function Variazionipos=calcolaVAP(v) n=length(v); Varpos=zeros(n,1); Variazionipos=zeros(n,1); for h=2:n VarAss=v(h)-v(h-1); if VarAss>=0 Varpos(h)=VarAss; else Varpos(h)=0; end end for k=p:n for j=1:p Variazionipos(k)=Variazionipos(k)+Varpos(k-p+j); end end end

Nel blocco di comandi 3 è stata creata una subfunction, ovvero una function inserita all’interno della function principale. La subfunction opera esattamente come una normale function, ovvero richiede dei parametri di input per poter visualizzare il risultato finale: nel caso specifico, la subfunction è stata utilizzata per calcolare le variazioni positive (ovvero la variabile denominata 𝑆H nella tabella della figura 3.1 e

subfunction sono le quotazioni del titolo da analizzare (𝑣). Lo stesso procedimento verrà successivamente utilizzato per calcolare le variazioni negative (ovvero la variabile 𝑆I

della tabella della figura 3.1) come si può notare in occasione del codice riportato di seguito; così facendo i calcoli da svolgere successivamente per ottenere l’indicatore desiderato risulteranno notevolmente semplificati.

function Variazionineg=calcolaVAN(v) n=length(v); Varneg=zeros(n,1); Variazionineg=zeros(n,1); for h=2:n VarAss=v(h)-v(h-1); if VarAss<0 Varneg(h)=-VarAss; else Varneg(h)=0; end end for k=p:n for j=1:p Variazionineg(k)=Variazionineg(k)+Varneg(k-p+j); end end end

% BLOCCO 4: si calcola il chande momentum oscillator CMO

Su=calcolaVAP(Close); Sd=calcolaVAN(Close); CMO=zeros(n,1); for i=14:n CMO(i)=(Su(i)-Sd(i))/(Su(i)+Sd(i))*100; end

Con il blocco di comandi numero 4 si va effettivamente a calcolare il Chande Momentum Oscillator. Le componenti 𝑆H ed 𝑆I vengono calcolate semplicemente richiamando le

subfunction create al blocco 3, mentre nella seconda parte viene calcolato l’indicatore CMO, tant’è vero che è facilmente possibile riconoscere la formula dell’indicatore

analizzata in fase di presentazione dello stesso. Una volta terminato questo blocco, tutti gli elementi necessari per il calcolo del CMO sono a disposizione del trader.

L’ultimo passaggio è quello rappresentato dal blocco numero 5, che racchiude i comandi necessari per impostare il plottaggio40 della figura.

% BLOCCO 5: plottaggio figure(1); subplot(2,1,1); Xleft=Date(posd1)-1; Xright=Date(posd2)+1; plot(Date(posd1:posd2),Close(posd1:posd2),'k-'); xlim([Xleft Xright]);

title('Titolo TELECOM'); legend('Quotazione'); xlabel('Sedute'); ylabel('Quotazione'); grid on; grid minor; subplot(2,1,2); Xleft=Date(posd1)-1; Xright=Date(posd2)+1; plot(Date(posd1:posd2),CMO(posd1:posd2),'b-'); hold on; plot([Date(posd1),Date(posd2)],[0,0],'k--'); hold off; xlim([Xleft Xright]);

title('Chande Momentum Oscillator');

yline(60,'g--','ipercomprato','LineWidth',1); yline(-60,'r--','ipervenduto','LineWidth',1); xlabel('Sedute');

ylabel('Quotazione'); grid on;

grid minor;

In questa circostanza, si è deciso di dividere il grafico in due sezioni per permettere di visualizzare in quella superiore l’andamento delle chiusure ed in quella inferiore l’indicatore prescelto; tale operazione è stata effettuata tramite il comando “subplot”.

La function è completa: per visualizzare i contenuti ed i risultati del lavoro svolto è adesso necessario creare un Live Script, che aiuterà l’operatore nella visualizzazione del grafico.

Figura 3.9

Nella prima sezione viene caricata e rinominata la tabella delle quotazioni del titolo Telecom dell’anno 2017, scaricata tramite il sito internet Yahoo Finanza; nelle sezioni successive vengono visualizzate le variabili di tale tabella e modificato il formato della colonna delle date per visualizzarlo a proprio piacimento. Nell’ultima sezione invece vengono scelte le date che costituiranno l’inizio e la fine del periodo di analisi.

Figura 3.10

I due grafici vengono posizionati uno sotto l’altro per poter apprezzare la corrispondenza temporale dell’andamento dei due trend; nel grafico del CMO in basso sono state evidenziate le zone di ipercomprato (oltre la linea verde tratteggiata) e di ipervenduto (oltre la linea rossa tratteggiata) a cui sono stati attribuiti i valori rispettivamente di +60 e -60, ma tali valori sono modificabili a piacimento dell’analista in sede di plottaggio con delle facili modifiche.

Documenti correlati