Ultimo atto ..........

Cammello grazie ho visto il tuo file ma credo che sia leggermente diverso da quello che servirebbe poiché si vorrebbe prelevarli direttamente da internet. ..
 
l'obiettivo è semplice devi andare sul sito di borsa italian e prelevare l'open interest dalla pagina relativa. questa ad esempio è la put 18000 dicembre.

Ftse Mib Index Option Dicembre 2013 18000 - Borsa Italiana

osserva l'indirizzo della pagina, per le altre opzioni cambia solo il codice isin tutta la restante parte è uguale.
sostanzialmente si mette preventivamente in una colonna di excel l'elenco dei codici isin da cercare e poi si cicla la query sostituendo, ad ogni ciclo, l'indirizzo della pagina.

prova a fare la query e poi capirai le varie problematiche.
la prima te la dico cosi non perdi tempo, excel non riconosce quella come tabella e dovrai necessariamente estrarre tutta la pagina


Per la verità io vado a leggere nella scheda "DATI COMPLETI"....

A differenza dell'eurex, o del CBOE, i geni di webmaster di borsaitaliana non tengono i dati in una bella tabellina, ma giustamente come dice trenone creano una pagina per ogni opzione :wall::wall:

Io ho fatto così:

0. un foglio "foglioisin" dove dalla piattaforma incollo tutti gli ISIN su cui voglio fare l'analisi.

1. un foglio "Query" per le opzioni
2. un foglio "Query future" per il fib

che mi servono di appoggio per la query

3. un foglio ARCHIVIO OPT e un foglio ARCHIVIO FUT dove storicizzo i dati

4. poi aggiungo Call, Put, la scadenza, i dati che mi servono

Tutto il resto gira su tabelle PIVOT che vanno a leggere sui fogli di ARCHIVIO

Ecco il codice Joker, vedi se riesci a cavarci qualcosa ;)

Sub top()
On Error Resume Next

Sheets("TOP").Select

'controlla che siano almeno le 19.00
If Time() < Cells(19, 3) Then
'MsgBox (" è presto NON sono ancora le 19.00")
' Exit Sub

Else: MsgBox ("OK")
End If

dataog = Cells(13, 3)
foglioisin = Cells(16, 3)

foglioisin = Worksheets("" & foglioisin & "").Name

Sheets(foglioisin).Select

For n = 1 To 60000
If Worksheets(foglioisin).Cells(n, 1).Value = "" Then Exit For
Next n

lastisin = n - 1

For m = 1 To 60000
If Worksheets("ARCHIVIO OPT").Cells(m, 1).Value = "" Then Exit For
Next m
ultimaarch = m - 1

For i = 1 To lastisin
If Worksheets(foglioisin).Cells(i, 14).Value = "" Then Exit For

isin = Worksheets(foglioisin).Cells(i, 14).Value
tipo = Worksheets(foglioisin).Cells(i, 12).Value
Strike = Worksheets(foglioisin).Cells(i, 13).Value

Worksheets("Query").Select
Sheets("Query").Cells.Select
Selection.ClearContents

ultimaarch = ultimaarch + 1

With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.borsaitaliana.it/borsa/derivati/ftse-mib-options/dati-completi.html?isin=" & isin & "&lang=it" _
, Destination:=Range("A1"))
.Name = "Query borsa italiana"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
' .RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteCells
' .SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "4"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With

With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.borsaitaliana.it/borsa/derivati/ftse-mib-options/dati-completi.html?isin=" & isin & "&lang=it" _
, Destination:=Range("A16"))
.Name = "Query borsa italiana"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
' .RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteCells
' .SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "5"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With

Worksheets("Query").Cells(1, 8).Value = i


Worksheets("ARCHIVIO OPT").Select

For j = 4 To 34
Worksheets("ARCHIVIO OPT").Cells(ultimaarch, 1).Value = tipo
Worksheets("ARCHIVIO OPT").Cells(ultimaarch, 2).Value = Strike
Worksheets("ARCHIVIO OPT").Cells(ultimaarch, 3).Value = dataog
Worksheets("ARCHIVIO OPT").Cells(ultimaarch, j).Select
Worksheets("ARCHIVIO OPT").Cells(ultimaarch, j).Value = Worksheets("Query").Cells(j - 3, 2).Value
Next j

Next i

isinfut = Worksheets("TOP").Cells(25, 3).Value
Worksheets("Query future").Select
Sheets("Query future").Cells.Select
Selection.ClearContents

For Z = 1 To 60000
If Worksheets("ARCHIVIO FUT").Cells(Z, 1).Value = "" Then Exit For
Next Z

ultimaarchf = Z

With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.borsaitaliana.it/borsa/derivati/ftse-mib-options/dati-completi.html?isin=" & isinfut & "&lang=it" _
, Destination:=Range("A1"))
.Name = "Query borsa italiana 2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
' .RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteCells
' .SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "4"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With


With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.borsaitaliana.it/borsa/derivati/ftse-mib-options/dati-completi.html?isin=" & isinfut & "&lang=it" _
, Destination:=Range("A16"))
.Name = "Query borsa italiana 2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
' .RefreshStyle = xlInsertDeleteCells
.RefreshStyle = xlOverwriteCells
' .SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "5"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With

Worksheets("ARCHIVIO FUT").Select

For j = 3 To 34
Worksheets("ARCHIVIO FUT").Cells(ultimaarchf, 1).Value = "FIB"
Worksheets("ARCHIVIO FUT").Cells(ultimaarchf, 2).Value = dataog
Worksheets("ARCHIVIO FUT").Cells(ultimaarchf, j).Select
Worksheets("ARCHIVIO FUT").Cells(ultimaarchf, j).Value = Worksheets("Query future").Cells(j - 2, 2).Value
Next j



End Sub



Poi che nessuno mi venga a dire che mi loggo solo per fare polemica contro i ciclisti :-o:-o
 
Ultima modifica:
0. un foglio "foglioisin" dove dalla piattaforma incollo tutti gli ISIN su cui voglio fare l'analisi.

3. un foglio ARCHIVIO OPT e un foglio ARCHIVIO FUT dove storicizzo i dati

4. poi aggiungo Call, Put, la scadenza, i dati che mi servono

che semplice quando si collabora.

le modifiche al codice per renderlo totalmente automatico sono due.

- per ricavare i codici isin piuttosto che utilizzare il foglio isin precostituito va sulla pagina http://www.borsaitaliana.it/bitApp/listino?service=Data&lang=it&main_list=3&sub_list=4 e lo preleva insieme al numero serie . in questo modo rende automatico l'introduzione delle nuove scadenze ed i nuovi strike su scadenze esistenti.

- per leggere il tipo di opzione,Call o Put, basta decodificare la colonna serie prelevando la lettera centrale, fino ad L sono call oltre sono put.

giocher ci vuole veramente poco il lavoro lo ha fatto già l'anticiclico........:D
 
Ultima modifica:
che semplice quando si collabora.

le modifiche al codice per renderlo totalmente automatico sono due.

- per ricavare i codici isin piuttosto che utilizzare il foglio isin precostituito va sulla pagina http://www.borsaitaliana.it/bitApp/listino?service=Data&lang=it&main_list=3&sub_list=4 e lo preleva insieme al numero serie . in questo modo rende automatico l'introduzione delle nuove scadenze ed i nuovi strike su scadenze esistenti.

- per leggere il tipo di opzione,Call o Put, basta decodificare la colonna serie prelevando la lettera centrale, fino ad L sono call oltre sono put.

giocher ci vuole veramente poco il lavoro lo ha fatto già l'anticiclico........:D


ARGH non conoscevo il foglio listino!!
Ottimo link trenone :wall::wall::wall:

E allora è 'na passeggiata :D:D
 

Users who are viewing this thread

Back
Alto