clear
ttt=[];
disp('Scegliere il titolo da analizzare tra i seguenti tenendo presente che per:')
disp('ENEL           -->ENE')
disp('ENI            -->ENI')
disp('AG             -->AG_')
disp('Banca Italese  -->BAI')
disp('BMPS           -->BMP')
disp('FIAT           -->FIA')
disp('FNC            -->FNC')
disp('FNCPRV         -->FNP')
disp('ISP            -->ISP')
disp('LOTTICA        -->LOT')
disp('LTOMI          -->LTO')
disp('MEDIASET       -->MED')
disp('MEDIO BANCA    -->MEB')
disp('MEDIOLANUM     -->MEL')
disp('PARMALAT       -->PAR')
disp('PMI            -->PMI')
ttt=input('inserire la sigla di tre lettere:           ','s');
if ttt=='ENI';
    N=xlsread('ENI.xls');
    disp('Titolo:ENI');
    disp('Perido: dal 18 giugno 2001 al 12 settembre 2007');
elseif ttt=='ENE';
    N=xlsread('ENEL.xls');
    disp('Titolo:ENEL');
    disp('Perido: dal 03 marzo 2005 al 20 marzo 2007');
elseif ttt=='AG_';
    N=xlsread('AG.xls');
    disp('Titolo:AG');
    disp('Perido: dal 03 gennaio 2000 al 13 settembre 2007');
elseif ttt=='BAI';
    N=xlsread('BANCA_ITALESE.xls');
    disp('Titolo:BANCA ITALESE');
    disp('Perido: dal 14 giugno 2005 al 12 settembre 2007');
elseif ttt=='BMP';
    N=xlsread('BMPS.xls');
    disp('Titolo:BMPS');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
elseif ttt=='FIA';
    N=xlsread('FIAT.xls');
    disp('Titolo:FIAT');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
elseif ttt=='FNC';
    N=xlsread('FNC.xls');
    disp('Titolo:FNC');
    disp('Perido: dal 18 luglio 2005 al 12 settembre 2007');
elseif ttt=='FNP';
    N=xlsread('FNCPRV.xls');
    disp('Titolo:FNCPRV');
    disp('Perido: dal 24 novembre 2006 al 12 settembre 2007');
elseif ttt=='ISP';
    N=xlsread('ISP.xls');
    disp('Titolo:ISP');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
elseif ttt=='LOT';
    N=xlsread('LOttica.xls');
    disp('Titolo:LOttica');
    disp('Perido: dal 04 dicembre 2000 al 13 settembre 2007');
elseif ttt=='LTO';
    N=xlsread('LTOMI.xls');
    disp('Titolo:LTOMI');
    disp('Perido: dal 20 dicembre 2002 al 13 settembre 2007');
elseif ttt=='MED';
    N=xlsread('Mediaset.xls');
    disp('Titolo:MEDIASET');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
elseif ttt=='MEB';
    N=xlsread('Mediolanum.xls');
    disp('Titolo:MEDIOLANUM');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
elseif ttt=='MEL';
    N=xlsread('Medio Banca.xls');
    disp('Titolo:MEDIO BANCA');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
elseif ttt=='PAR';
    N=xlsread('Parmalat.xls');
    disp('Titolo:PARMALAT');
    disp('Perido: dal 06 ottobre 2005 al 12 settembre 2007');
elseif ttt=='PMI';
    N=xlsread('PMI.xls');
    disp('Titolo:PMI');
    disp('Perido: dal 03 gennario 2000 al 12 settembre 2007');
end
N=N';
xA=N(1,:);
%apertura
B=N(2,:);
%massimo
C=N(3,:);
%minimo
xC=N(4,:);
%chiusura
E=N(5,:);
%volumi
disp('STATISTICA DESCRITTIVA')
%STATISTICA DESCRITIVA
k=mean(xC);
b=min(xC);
c=max(xC);
d=median(xC);
e=mode(xC);
f=std(xC);
g=var(xC);
h=kurtosis(xC);
i=skewness(xC);
disp(['valore medio:        ',num2str(k)])
disp(['valore mediano:      ',num2str(d)])
disp(['moda:                ',num2str(e)])
disp(['valore minimo:       ',num2str(b)])
disp(['valore massimo:      ',num2str(c)])
disp(['deviazione standard: ',num2str(f)])
disp(['varianza:            ',num2str(g)])
disp(['kurtosis:            ',num2str(h)])
disp(['skewness:            ',num2str(i)])
%DIAGRAMMA CARTESIANO
figure(1)
plot(xC)
ylabel('Valore del titolo')
xlabel('Tempo')
title('Diagramma delle quotazioni ENEL spa')
%ANALISI DEL TREND
T=detrend(xC);
figure(2)
plot(T,'r')
hold on
plot(xC,'b')
ylabel('Valori delle quotazioni')
xlabel('Tempo')
title('Diagramma cartesiano: confronto tra valori osservati e valori detrendizati dell ENEL spa')
legend('Detrendizzati','Osservati')
%TRADING SYSTEM
MM_INDICI
%--------------------------------------------------------------------------
%SI VOGLIONO CONOSCERE I RISULTATI DELLA MEDIA MOBILE A GIORNI gg
gg=input('Indicare, tra 1 e 300, i giorni della media mobile di cui si vogliono conoscere i risultati: '     );
disp(['total net profit:                         ',num2str(PT(gg))])
disp(['numero delle operazioni vincenti:         ',num2str(OTV(gg))])
disp(['numero delle operazioni perdenti:         ',num2str(OTP(gg))])
disp(['numero totale delle operazioni:           ',num2str(NT(gg))])
disp(['durata media dell operazione:             ',num2str(DMO(gg))])
disp(['guadagno massimo:                         ',num2str(MGT(gg))])
disp(['perdita massima:                          ',num2str(MPT(gg))])
disp(['numero massimo di guadagni consecutivi:   ',num2str(NMGC(gg))])
disp(['numero massimo di perdite consecutive:    ',num2str(NMPC(gg))])
disp(['media delle operazioni vincenti:          ',num2str(MOV(gg))])
disp(['media delle operazioni perdenti:          ',num2str(MOP(gg))])
disp(['utile totale maggiore:                    ',num2str(G(gg))])
%unite unitario maggiore
p=1;
UM=[];
for p=1:LMM
    UM(p)=max(EqL(:,p));
end
disp(['utile unitario maggiore:                  ',num2str(UM(gg))])
%equity line
figure(3)
plot(EL(:,gg))
title(['Equity line della media mobile a giorni ',num2str(gg)])
axis([0 UT(r) 1 MXC+10]);
%confronto tra prezzi e media mobile a giorni gg
figure(4)
plot(xC,'y')
hold on
plot(MM(:,gg),'g')
axis([LMM LxC 1 MXC+4])
title(['Diagramma: Prezzi di chiusura e media mobile a giorni ',num2str(gg)])
%--------------------------------------------------------------------------
%Presentazione dei risultati migliori tenendo in considerazione tutte le
%medie calcolate
disp('Per ogni indicatore verrà indicata la media mobile che ha ottenuto i risultati più significativi')
%media mobile con utile totale massimo
p=1;
for p=1:LMM 
    if G(p)==MXG; 
        figure(5);
        plot(xC,'y');
        hold on 
        plot(MM(:,p),'r');
        title(['Diagramma: Prezzi di chiusura e Media Mobile a giorni ',num2str(p),' con la quale si ottiene l"Utile Totale maggiore']); 
        ylabel('Prezzi di chiusura e Medie mobili');
        xlabel('Tempo'); 
        axis([LMM LxC 1 MXC+4]);
        legend('Prezzi','Medie mobile');
        disp('La media mobile con Utile Totale maggiore è quella a gg')
        disp(p)
        figure(6);
        plot(EL(:,p),'b');
        hold on
        title(['Equity Line corrispondente alla Media Mobile a giorni ',num2str(p)]);
        ylabel('Profitto-Perdite');
        axis([0  UT(r)  1  MXC+10]);
    end
end
%media mobile con utile unitario massimo
M=max(UM);
p=1;
for p=1:LMM
    if UM(p)==M
        figure(7);
        plot(MM(:,p),'g');
        hold on 
        plot(xC,'y');
        title(['Diagramma:Prezzi di chiusura e Media Mobile a giorni ',num2str(p),' che è quella con il profitto unitario maggiore']);
        axis([LMM LxC 1 MXC+4]);
        ylabel('Media mobile e Prezzi di chiusura');
        xlabel('Tempo');
        legend('Medie mobili','Prezzi di chiusura')
        disp('La media mobile con Utile Unitario Maggiore è quella a gg')
        disp(p)
        figure(8);
        plot(EL(:,p),'b');
        hold on
        title(['Equity Line Corrispondente alla Media Mobile a giorni ',num2str(p)]);
        ylabel('Profitto-Perdite');
        axis([0  UT(r)  1  MXC+10]);
    end
end
%media mobile con totale profitto netto massimo
MMPT=max(PT);
p=1;
for p=1:LMM
    if PT(p)==MMPT
        disp('La media mobile con il massimo profitto netto totale in percentuale')
        disp(['è quella a giorni: ',num2str(p), 'con la percentuale pari a: ',num2str(PT(p)),'%'])
    end
end
%media mobile con numero delle operazioni vincenti massimo
MOTV=max(OTV);
p=1;
for p=1:LMM
    if OTV(p)==MOTV
        disp('La media mobile con il numero massimo di operazioni vincenti è quella')
        disp(['a giorni: ',num2str(p),'con il numero pari a: ',num2str(OTV(p))])
    end
end
%media mobile con numero delle operazioni perdenti massimo
MOTP=max(OTP);
p=1;
for p=1:LMM
    if OTP(p)==MOTP
        disp('La media mobile con il massimo numero delle operazioni perdenti è quella')
        disp(['a giorni: ',num2str(p),'con il numero pari a: ',num2str(OTP(p))])
    end
end
%media mobile ocn numero totale delle operazioni
MNT=max(NT);
p=1;
for p=1:LMM
    if NT(p)==MNT
        disp('La media mobile con il numero delle operazioni vincenti massimo è quella')
        disp(['a giorni: ',num2str(p),'con il numero pari a: ',num2str(NT(p))])
    end
end
figure(9)
plot(NT,'.')
hold on
plot(OTP,'.y')
hold on
plot(OTV,'.r')
title('Diagramma: Numero delle operazioni totali, perdenti e vincenti per ogni media mobile')
ylabel('Numero delle operazioni')
xlabel('Numero delle medie mobili')
legend('Totali','Perdenti','Vincenti')
%media mobile con massima durata media dell'operazione
p=1;
MDMO=max(DMO);
for p=1:LMM    
    if DMO(p)==MDMO
       disp(['La media mobile con la durata media più elevata, che è sinomino di'])
       disp(['elevata rischiosità, è quella a giorni: ',num2str(p)])
    end
end
%media mobile con guadagno massimo per trade
MMGT=max(MGT);
p=1;
for p=1:LMM
    if MGT(p)==MMGT
        disp(['La maedia mobile con il massimo gruadagno per trade è quella a giorni: ',num2str(p)])
        disp(['con il corrispettivo valore: ',num2str(MGT(p))])
    end
end
%media mobile con perdita massima per trade
MMPT=max(MPT);
p=1;
for p=1:LMM
    if MPT(p)==MMPT
        disp(['La maedia mobile con il massimo gruadagno per trade è quella a giorni: ',num2str(p)])
        disp(['con il corrispettivo valore: ',num2str(MPT(p))])
    end
end
%media mobile con numero massimo di guadagni consecutivi
p=1;
MNMGC=max(NMGC);
for p=1:LMM
    if NMGC(p)==MNMGC
        disp(['La media mobile con il numero massimo di guadagni consecutivi è: ',num2str(p)])
    end
end
%media mobile con numero massimo di perdite consecutive
p=1;
MNMPC=max(NMPC);
for p=1:LMM
    if NMPC(p)==MNMPC
        disp(['La media mobile con il numero massimo di perdite consecutive è: ',num2str(p)])
    end
end
%media mobile con media delle operazioni vincenti
MMOV=max(MOV);
p=1;
for p=1:LMM
    if MOV(p)==MMOV
        disp(['La media mobile con la media delle operazioni vinceni più elevata è quella a giorni: ',num2str(p)])
        disp(['con il corrispondente valore: ',num2str(MOV(p))])
    end
end
%media mobile con media delle operazioni perdenti
MMOP=max(MOP);
p=1;
for p=1:LMM
    if MOP(p)==MMOP
        disp(['La media mobile con la media delle operazioni vinceni più elevata è quella a giorni: ',num2str(p)])
        disp(['con il corrispondente valore: ',num2str(MOP(p))])
    end
end
figure(10)
plot(MOP,'-')
hold on
plot(MOV,'-r')
title('Diagramma: Medie delle operazioni vincenti e perdenti')
ylabel('Medie delle operazioni vincenti e perdenti')
xlabel('Medie mobile')
legend('Ope perdenti','Ope vincenti')
%massima perdita
mm=input('Iserisci la massima perdita percentuale sopportabile:     ');
GP=[];
for r=1:LMM
    v=1;
    for i=2:UT(r)
        GP(v,r)=(EL(i,r)-EL(i-1,r))/EL(i-1,r);
        v=v+1;
    end
end
r=1;
i=1;
for r=1:LMM
    LM(r)=max(GP(:,r));
    Lm(r)=min(GP(:,r));
end 
x=1;
y=0;
GG=[];
for r=1:LMM
    if Lm(r)>-mm 
        GG(x)=LM(r);
        x=x+1;
    else
       y=y+1;
    end
end
BGP=max(GG);
for r=1:LMM
    if  LM(r)==BGP & Lm(r)>-mm  y<100;
    disp('Le medie mobili con i parametri desiserati sono quelle a giorni: ');
    disp(r);
    figure(11);
    plot(MM(:,r),'g');
    hold on 
    plot(xC,'y');
    title(['Diagramma: Prezzi di chiusura e Medie mobile a giorni ',num2str(r), 'dato che la Massima Perdita sopportabile è pari a ',num2str(mm)]);
    axis([LMM LxC 1 MXC+4]);
    ylabel('Media mobile e Prezzi di chiusura');
    xlabel('Tempo'); 
    legend('Medie mobili','Prezzi di chiusura')
    figure(12);
    plot(EL(:,r),'r');
    hold on
    title(['Equity Line corrispondente alla Media mobile a giorni ',num2str(r),' dato che la Massima perdita sopportabile è pari a ',num2str(mm)]);
    ylabel('Profitto-Perdita');
    axis([0  UT(r)  1  MXC+10]);
    else
    end
end
if y==LMM;
    disp('Spiacente ma non vi è una perdita inferiore a quella richiesta');
end