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

hai fatto un ottimo lavoro, adesso scrivo due righe di codice vba e li metto qui cosi confrontiamo le varie ipotesi su come procedere e facciamo un lavoro di gruppo con cammello ,umbolox ,jocker ed altri che vogliono partecipare
secondo me alla fine verrà fuori un buon lavoro.

io ci sto, anche se visto la schifezzetta che avevo fatto io e il capolavoro di kaprot... posso fare bassa manovalanza..
 
...nuovo aggiornamento......le noste15 opz long call 18500/12 acquistate a 85 si potevano vendere bene sul test dei 18400 il 10/12/13 tra le 10,30 e le 13,00 ....ho ipotizzato una vendita a 160 (max 166) che ci avrebbe fruttato un gain di € 2.800,00 circa al confronto un trade fatto con il fib comprato a 17880 intorno alle 14,00 del 06/12/13 e rivenduto sempre il 10/12/13 a 18350
(sempre in orario tra le 10,30 e le 13,00) ci avrebbe fruttato un profit di € 2.350,00............. è giusto dire che col fib considerando un margine del 6% ci avrebbero immobilizzato circa € 5.300,00 a fronte del costo delle opz. pari ad € 3.200,00 circa....

...veniamo ad oggi considerando una quotazione intorno ai 17900 avremmo avuto le opzioni con un valore intorno a 40 e quindi una perdita potenziale di circa €1.650,00..... mentre col fib saremmo circa in pari.....

hai scelto le opzioni con il (quasi) peggior effetto tempo(e il minor estrinseco(da cui la coperta sempre troppo corta)) che ci sono in giro :)

peggio/meglio di loro ci sono solo quelle che scadono "oggi".

come direbbe catalano :se credi nella tua ipotesi di lavoro..........aspetta la settimana prossima:cool:

p.s.: il roll del fib costa poco(in particolare con questi tassi).
il roll delle opzioni costa molto.
 
hai scelto le opzioni con il (quasi) peggior effetto tempo(e il minor estrinseco(da cui la coperta sempre troppo corta)) che ci sono in giro :)

peggio/meglio di loro ci sono solo quelle che scadono "oggi".

come direbbe catalano :se credi nella tua ipotesi di lavoro..........aspetta la settimana prossima:cool:

p.s.: il roll del fib costa poco(in particolare con questi tassi).
il roll delle opzioni costa molto.

....ciao....in realtà non ho scelto niente....se leggi ...mi sono limitato a seguire l'acquisto di treno......
 
hai fatto un ottimo lavoro, adesso scrivo due righe di codice vba e li metto qui cosi confrontiamo le varie ipotesi su come procedere e facciamo un lavoro di gruppo con cammello ,umbolox ,jocker ed altri che vogliono partecipare
secondo me alla fine verrà fuori un buon lavoro.
se spetti un "attimo" ti metto il grafico dinamico che manca.

C
 
.......sono ancora tutto incimurrito con un orecchio che fischia........


lavora e non cercare scuse .........:D

allora metto qui il codice vba cosi spiego cosa vorrei fare a livello di principio

potete tranquillamente incollare questo codice in una cartella vuota e far partire la routine Parti().
ancora è molto grezzo da qui valutando le varie ipotesi che usciranno fuori costruiamo un progetto condiviso.

Sub Parti()
' elimina il foglio temporaneo se esiste
Call EliminaFoglio("Listino")

' crea il foglio temporaneo
Call CreaFoglio("Listino")

' attiva il foglio temporaneoo come foglio corrente
Sheets("Listino").Select

' chiama le Query dal sito borsaitaliana
Call QueryWeb

' elimina il foglio Appoggio se esiste
Call EliminaFoglio("Temp")

' crea il foglio Appoggio
Call CreaFoglio("Temp")

' attiva il foglio temporaneo come foglio corrente
Sheets("Temp").Select

'copia i dati dal foglio con i dati di borsaitaliana e li trasferisce su un foglio di appoggio
Call DatiListino("Listino", "Temp")


'aggiunge il foglio TabellaDati se non esiste e scrive le intestazioni di colonna
Call AggiornaFoglioDati("ListaDati", "Temp")

' pulisce il foglio TabellaDati da eventuali righe vuote
'Call EliminaRigheVuote


'elimina i fogli di appoggio
' call Pulisci()


End Sub

Sub QueryWeb()

'-----------------------------------------------------------
' Collegamento al sito Borsaitaliana per estrazione tabella
'
'-----------------------------------------------------------
' With ActiveSheet.QueryTables.Add(Connection:= _
' "URL;http://www.borsaitaliana.it/bitApp/listino?service=Data&lang=it&main_list=3&sub_list=4" _
' , Destination:=Range("A1"))
' .Name = "listino?service=Data&lang=it&main_list=3&sub_list=4"
' .FieldNames = True
' .RowNumbers = False
' .FillAdjacentFormulas = False
' .PreserveFormatting = True
' .RefreshOnFileOpen = False
' .BackgroundQuery = True
' .RefreshStyle = xlInsertDeleteCells
' .SavePassword = False
' .SaveData = True
' .AdjustColumnWidth = False
' .RefreshPeriod = 0
' .WebSelectionType = xlSpecifiedTables
' .WebFormatting = xlWebFormattingNone
' .WebTables = "6,8"
' .WebPreFormattedTextToColumns = True
' .WebConsecutiveDelimitersAsOne = True
' .WebSingleBlockTextImport = False
' .WebDisableDateRecognition = False
' .WebDisableRedirections = False
' .Refresh BackgroundQuery:=False
' End With
'End Sub

Sub EliminaFoglio(NomeFoglio As String)
Dim Attuale
Dim Risposta
Dim FL As Boolean
Dim ws As Worksheet
FL = False
Attuale = ActiveSheet.Name
For Each ws In Worksheets
If LCase(ws.Name) = LCase(NomeFoglio) Then
FL = True
'Risposta = MsgBox("Sicuro di voler eliminare il foglio " & NomeFoglio & "?", vbYesNo, "ATTENZIONE")
'If Risposta = vbNo Then Exit Sub
Application.DisplayAlerts = False
Sheets(NomeFoglio).Delete
Application.DisplayAlerts = True
'MsgBox "il foglio " & NomeFoglio & " è stao eliminato"
End If
Next
If FL = False Then
'MsgBox "il foglio " & NomeFoglio & " non esiste" & vbCr _
& "Impossibile compiere l'operazione"
End If
Sheets(Attuale).Select 'si torna al foglio di partenza
End Sub

Sub CreaFoglio(NomeFoglio As String)
Dim Attuale
Dim ws As Worksheet
Attuale = ActiveSheet.Name
For Each ws In Worksheets
If ws.Name = NomeFoglio Then
' MsgBox "Il foglio " & NomeFoglio & " già esiste"
Exit Sub
End If
Next
Sheets.Add
ActiveSheet.Name = NomeFoglio
Sheets(NomeFoglio).Move After:=Sheets(Worksheets.Count)
Sheets(Attuale).Select 'si torna al foglio di partenza
End Sub

Sub DatiListino(FoglioQuery As String, FoglioAppoggio As String)
'----------------
'codice di kaprot
'----------------
'
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim sCodice As String
Dim dListino As String, eListino As String


ActiveSheet.Name = FoglioAppoggio

' preleva dalla cella A1 della queriWeb e li separa la data del listino e l'etichetta del listino che servirà come intestazione colonna
dListino = Mid(Sheets(FoglioQuery).Cells(1, 1), InStrRev(Sheets(FoglioQuery).Cells(1, 1), " ", -1)) ' data listino
eListino = Left(Sheets(FoglioQuery).Cells(1, 1), InStrRev(Sheets(FoglioQuery).Cells(1, 1), " ", 1)) ' Listino Del


'primo giro: crea le righe e si fa la call
i = 6
j = 1
While Sheets(FoglioQuery).Cells(i, 1) <> ""
sCodice = Sheets(FoglioQuery).Cells(i, 2)
sCodice = Mid(sCodice, 5)

If Len(sCodice) < 8 Then

Cells(j, 1) = dListino
Cells(j, 2) = GetScadenza(Left(sCodice, 2))
Cells(j, 4) = Replace(Sheets(FoglioQuery).Cells(i, 3), " ", "")
Cells(j, 5) = Replace(Sheets(FoglioQuery).Cells(i, 4), " ", "")
Cells(j, 6) = Replace(Sheets(FoglioQuery).Cells(i, 5), " ", "")
Cells(j, 7) = Replace(Sheets(FoglioQuery).Cells(i, 6), " ", "")
Cells(j, 8) = Replace(Sheets(FoglioQuery).Cells(i, 7), " ", "")
Cells(j, 9) = Replace(Sheets(FoglioQuery).Cells(i, 8), " ", "")

Select Case Mid(sCodice, 2, 1)
Case "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"
'sono le call
Cells(j, 3) = "C"
j = j + 1

Case "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X"
'sono le put
Cells(j, 3) = "P"
j = j + 1
Case Else
'sono le put e le settimanali
End Select

End If
i = i + 1
Wend


MsgBox "Elaborazione terminata"

End Sub


'--------------------
'funzione di kaprot
'-------------------
Function GetScadenza(ByVal sScadenza As String) As Date

Dim sMese As String
Dim sAnno As String

sAnno = "201" & Left(sScadenza, 1)

Select Case Right(sScadenza, 1)
Case "A", "M"
sMese = "01"
Case "B", "N"
sMese = "02"
Case "C", "O"
sMese = "03"
Case "D", "P"
sMese = "04"
Case "E", "Q"
sMese = "05"
Case "F", "R"
sMese = "06"
Case "G", "S"
sMese = "07"
Case "H", "T"
sMese = "08"
Case "I", "U"
sMese = "09"
Case "J", "V"
sMese = "10"
Case "K", "W"
sMese = "11"
Case "L", "X"
sMese = "12"
End Select

GetScadenza = DateSerial(CInt(sAnno), CInt(sMese), 22) - Weekday(DateSerial(CInt(sAnno), CInt(sMese), 2))
End Function

Sub AggiornaFoglioDati(BaseDati As String, FoglioQuery As String)
Dim Attuale
Attuale = ActiveSheet.Name
Dim ws As Worksheet
'Dim NomeFoglio
'NomeFoglio = "TabellaDati" 'Nome del foglio dati da aggiornare
For Each ws In Worksheets 'il ciclo For Each scorre tutti i fogli (ws) nella cartella
If ws.Name = BaseDati Then 'se esiste il foglio dei dati delle opzioni
ws.Activate 'si attiva
Dim irow As Integer 'si comincia la ricerca della prima cella libera
irow = 1 'colonna 1 (la A)
While ActiveSheet.Cells(irow, 1) <> ""
irow = irow + 1
Wend
'trovata la cella libera si incolla il contenuto del foglio Temp senza la colonna di intestazione
'
'
'
Exit Sub 'si esce dalla routine impedendo la creazione del foglio dati nelle istruzioni sottostanti
End If
Next ws 'oppure si prosegue il ciclo controllando tutti i nomi dei fogli
'se non avrà trovato un foglio con lo stesso nome della variabile (BaseDati)
'si impostano le istruzioni per aggiungere tramite Add, un nuovo foglio assegnandogli il nome della variabile (BaseDati)
Sheets.Add.Name = BaseDati
Sheets(BaseDati).Move After:=Sheets(Sheets.Count) 'spostiamo il foglio appena creato dopo l'ultimo dei fogli presenti

'questa è da rendere indipendente dai riferimenti assoluti si devono scorrere tutte le colonne della prima riga
' del foglio temporaneo e inserirle nel foglio appena creato
Sheets(FoglioQuery).Range("A1:I1").Copy Sheets(BaseDati).Range("A1")
'
' qui si crea il codice per incollare il contenuto del foglio Temp senza la colonna di intestazione
'
'
Sheets(Attuale).Select 'si torna al foglio di partenza

End Sub
 

Allegati

Ultima modifica:
forse sarebbe meglio un bel the caldo con il miele
sono ancora tutto incimurrito con un orecchio che fischia :sad:
ho aggiunto nel foglio "elabora" il grafico, che si controlla con la pivot che trovate nella cella J4; l'asse cambia in modo dinamico in base agli strike della scadenza selezionata.
Per fare ciò ho aggiunto la colonna C, modificando il VBA e aggiunto la parte delle colonne L:O

Spero non avere fatto troppi danni.

C
 

Allegati

...... vado a leggere nella scheda "DATI COMPLETI"....

ho fatto così:

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

per poter implementare questa parte scritta da umbolox si utilizzerà la prima parte del codice che ho messo sopra e preleva i dati ristretti e ciclando sui vari codici isin alimenterà il database aggiungendo le colonne che si vogliono inserire , cosi come si capisce dal codice postato da umbo.

si mette su un bottone differente e chi vuole il databse esteso con molte informazioni schiaccerà questo altrimenti si limiterà a schiacciare il bottone dati di base.
 
ho aggiunto nel foglio "elabora" il grafico, che si controlla con la pivot che trovate nella cella J4; l'asse cambia in modo dinamico in base agli strike della scadenza selezionata.
Per fare ciò ho aggiunto la colonna C, modificando il VBA e aggiunto la parte delle colonne L:O

Spero non avere fatto troppi danni.

C

se aspettate un attimo secondo me è meglio separare la base dati dal calcolo del pain tanto il codice scritto da kaprot lo abbiamo basterà utilizzarlo per l'estrazione dalla base dati.
prima dobbiamo cercare di normalizzare la base dati.
 

Users who are viewing this thread

Back
Alto