Pagina 4 di 7
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 9:02
da AZ13
MassimoTononi ha scritto:MI presento sono Massimo,
ci ho lavorato un paio di ore questa notte per poter realizzare la prima parte
una sudata
quante volte ho dovuto rifare
pero il primo step è completo
Bene! Massimo intanto benvenuto nel nostro club…
Ti sei tuffato a capofitto sul progetto a quanto pare… alla fine vedrai che lo sforzo verrà ripagato.
Ti troverai per le mani una piccola piattaforma su cui poter fare tutti i grafici e i tuoi studi specifici.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 9:48
da AZ13
C’è rimasto ora da vedere di realizzare la subroutine più importante del programma quella che - di fatto - va sul sito di yhoo! è preleva i dati dal suo data base. La subroutine AZ
Prima però dobbiamo fare ancora due cosucce.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 9:51
da AZ13
La prima consiste nell’assegnare al nostro intervallo di titoli, quelli presenti nel foglio “Tabella” un nome univoco che ci consente di richiamare questo intervallo quando ci serve.
Per cui ritorniamo sul foglio Excel premendo contemporaneamente i tasti Alt+Q oppure seguendo il percorso File > Chiudi e torna a Microsoft Excel.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 9:58
da AZ13
Andiamo sul foglio “Tabella” (se è nascosto lo scopriamo con formato > Foglio > scopri).
Selezioniamo dunque il nostro intervallo premendo con il tasto sinistro del mouse dalla cella A2 fino alla cella B42.
A questo punto con Inserisci > nome > Definisci, possiamo assegnare il nome alla nostra selezione.
Anche questo intervallo lo abbiamo chiamato “Tabella”. E' chiaro che oltre al foglio “Tabella” avremo anche un’intervallo dal nome “Tabella”.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 10:10
da AZ13
La seconda cosuccia che dobbiamo fare è quella di andare sul foglio “Aggiorna” è in corrispondenza della cella A4 inserire una funzione di Excel: CERCA.VERT.
E che cosa dobbiamo ricercare? Ma… il codice del titolo che abbiamo scelto naturalmente.
Provate il programma…
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 11:29
da AZ13
Queste ultime due operazioni – naturalmente – potevano essere realizzate direttamente da codice inserendo semplicemente due istruzioni a livello dell’evento clik del pulsante “Aggiorna” presente sulla Form.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 11:46
da AZ13
E veniamo al fulcro del programma cioè alla subroutine AZ.
Eccola! Per agevolarvi l’ho messa direttamente nel post in maniera tale che possiate fare un copia e incolla evitando errori di digitatura.
Sub AZ()
Dim QuerySheet, DataSheet As Worksheet
Dim EndDate, StartDate As Date
Dim Symbol, qurl As String
Dim nQuery As Name
On Error GoTo Problema
Application.ScreenUpdating = False
Set DataSheet = Sheets("Aggiorna")
StartDate = DataSheet.Range("B2").Value
EndDate = DataSheet.Range("B3").Value
Symbol = DataSheet.Range("B4").Value
Range("C7").CurrentRegion.ClearContents
'l'indirizzo dell'URL per ottenere la query
qurl = "http://chart.yahoo.com/table.csv?s=" & Symbol
qurl = qurl & "&a=" & Month(StartDate) - 1 & "&b=" & Day(StartDate) & _
"&c=" & Year(StartDate) & "&d=" & Month(EndDate) - 1 & "&e=" & _
Day(EndDate) & "&f=" & Year(EndDate) & "&g=" & Range("E3") & "&q=q&y=0&z=" & _
Symbol & "&x=.csv"
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("A7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Range("A7").CurrentRegion.TextToColumns Destination:=Range("A7"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Range(Range("A7"), Range("A7").End(xlDown)).NumberFormat = "dd/mm/yy"
Range(Range("B7"), Range("B7").End(xlDown)).NumberFormat = "0.00"
Range(Range("C7"), Range("C7").End(xlDown)).NumberFormat = "0.00"
Range(Range("D7"), Range("D7").End(xlDown)).NumberFormat = "0.00"
Range(Range("F7"), Range("F7").End(xlDown)).NumberFormat = "#,##0"
Range("A7").CurrentRegion.Select
Selection.Sort Key1:=Range("A8"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Columns("A:G").EntireColumn.AutoFit
Columns("A:G").HorizontalAlignment = xlCenter
'Elimina colonna con Chiusura aggiustata
Columns("G:G").Delete Shift:=xlToLeft
Range("A1").Select
Application.ScreenUpdating = True
Exit Sub
Problema:
Motivo_del_problema:
MsgBox "Internet non è attivo." _
& vbLf & vbLf & "oppure:" _
& vbLf & vbLf & "Le quotazioni storiche del titolo non sono al momento disponibili." _
& vbLf & "Invitiamo a riprovare più tardi." _
& vbLf & vbLf & "", vbCritical + vbOKOnly, " Attenzione !!! "
End Sub
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 12:00
da AZ13
Prima di analizzarla vediamo dove deve essere inserita.
Con Alt+F11 ci spostiamo di nuovo nella’ambiente di sviluppo del VBA.
Poi creiamo un modulo seguendo il percorso Inserisci > Modulo.
Dovrebbe apparire nel diagramma ad albero sulla sinistra, sotto la Form un modulo dal nome Modulo1 che rinomineremo in "Generale".
P.S. I moduli sono contenitori di subroutine.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 12:11
da AZ13
Analizziamo la subroutine AZ.
Re: Il software della volatilità storica step by step…
Inviato:
24/10/2011, 12:33
da AZ13
Per far funzionare il programma ottenuto fino a questo momento dobbiamo fare ancora qualche rifinitura.
I dati presenti sul sito di Yahoo! hanno la formattazione di tipo americana che utilizza il punto per separare i decimali e la virgola per separare le migliaia.
Quindi poter caricare i dati e operare successivamente su questi dovremmo prima cambiare l’impostazione del nostro computer.
Questo si può fare sia manualmente andando a modificare i parametri nel modulo "Internazionale" alla voce "Gestione numero" raggiungibile dal menù Strumenti > Opzioni, oppure direttamente da codice.