|
Diego Vassallo
Amministratore
 
156 Messaggi |
Inserito il - 03/10/2007 : 11:43:52
|
Excel Trading
In questo breve capitolo vediamo come realizzare un programma che ci permette di estrarre i dati settimanali (apertura, massimo, minimo,chiusura,volumi) da un serie storica a cadenza giornaliera. Questo tipo di dati si rivela molto utile per cercare di "tagliare" la componente di rumore dai grafici e riuscire ad identificare con più esattezza i segnali di ingresso per operazioni di medio-lungo periodo. Non mi sono mai preoccupato di capire come i programmi commerciali risolvano questo problema, per quanto mi riguarda la settimana borsistica è ovviamente quella che và da lunedì a venerdì. Il problema è che i giorni di chiusura della borsa, per festività o per eventi straordinari, creano dei problemi nell'implementazione del codice ; quindi se la borsa è rimasta chiusa ad esempio il lunedì e giovedì, devo estrarre i dati salienti della settimana borsistica composta solo da 3 sedute. Per fare questo si utilizzano con astuzia le funzioni di excel relative a dati di tipo data in particolare la funzione" weekday" che associa un numero al relativo giorno della settimana ( 2 = lunedì --- 6 = venerdì). Ho allegato alla lezione un foglio contenente una lunga serie storica ed è possibile analizzare la semplice routine che permette di evidenziare il primo giorno di ogni settimana di contrattazioni. Nella colonna 8 sono riportati i numeri associati ai giorni della settima e colorate in giallo le celle che corrispondono al primo giorno della settimana di borsa. Per completezza riporto la routine :
Sub dati_settimanali()
nomeWB = ActiveWorkbook.Name nomeWS = ActiveSheet.Name
' toglie i colori dalle celle colorate Workbooks(nomeWB).Worksheets(nomeWS).Cells.Interior.ColorIndex = xlNone ' ultima cella dello storico Set topcell = Workbooks(nomeWB).Worksheets(nomeWS).Cells(65534, 1) If IsEmpty(topcell) Then Set topcell = topcell.End(xlUp) fine = topcell.Row
' ciclo su tutto lo storico For a = 2 To fine
' utilizza le funzioni di excel delle date per determinare il numero del giorno della settimana primo = Weekday(Cells(a, 1).Value) secondo = Weekday(Cells(a + 1, 1).Value) ' scrive nella colonna 8 il numero del giorno Workbooks(nomeWB).Worksheets(nomeWS).Cells(a, 8).Value = primo ' condizione per determinare il primo giorno della settimana borsistica If secondo < primo Then Cells(a + 1, 8).Interior.ColorIndex = 6 End If Next
End Sub
File allegato Allegato
|
|