0
Oversigt Nu har jeg efterhåneden afprøvet alle de makro'er til hente historiske kurser ned, jeg kan finde. De synes alle at have det problem at værdierne/tal bliver importeret som tekst.
Hvilket gør det rimlig umuligt at lave beregninger!
Har vi en excel-makro-master der ved hvordan teksten kan rettes til tal i makroen, så dette ikke skal gøres manuelt.
Her er en af de forskellige makro'er:
Sub GetData()
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim Timeframe As String
Dim qurl As String
Dim nQuery As Name
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationAutomatic
Set DataSheet = ActiveSheet
StartDate = DataSheet.Range("B3").Value
EndDate = DataSheet.Range("B4").Value
Symbol = DataSheet.Range("E3").Value
Timeframe = DataSheet.Range("E4").Value
Range("$A$7:$H$7").CurrentRegion.ClearContents
qurl = "http://ichart.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=" & Timeframe & "&ignore=.csv"
Range("A1") = qurl
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("A7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Range("$A$7:$H$7").CurrentRegion.TextToColumns Destination:=Range("$A$7:$H$7"), datatype:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Range(Range("A7"), Range("A7").End(xlDown)).NumberFormat = "d - mmm - yyyy"
Range(Range("B7"), Range("B7").End(xlDown)).NumberFormat = "0.00"
Range(Range("D7"), Range("D7").End(xlDown)).NumberFormat = "0.000"
Range(Range("E7"), Range("E7").End(xlDown)).NumberFormat = "0.00"
End Sub
Håber virkelig der er nogen der kan knække den her for mig.
Hvilket gør det rimlig umuligt at lave beregninger!
Har vi en excel-makro-master der ved hvordan teksten kan rettes til tal i makroen, så dette ikke skal gøres manuelt.
Her er en af de forskellige makro'er:
Sub GetData()
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim Timeframe As String
Dim qurl As String
Dim nQuery As Name
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationAutomatic
Set DataSheet = ActiveSheet
StartDate = DataSheet.Range("B3").Value
EndDate = DataSheet.Range("B4").Value
Symbol = DataSheet.Range("E3").Value
Timeframe = DataSheet.Range("E4").Value
Range("$A$7:$H$7").CurrentRegion.ClearContents
qurl = "http://ichart.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=" & Timeframe & "&ignore=.csv"
Range("A1") = qurl
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("A7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Range("$A$7:$H$7").CurrentRegion.TextToColumns Destination:=Range("$A$7:$H$7"), datatype:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Range(Range("A7"), Range("A7").End(xlDown)).NumberFormat = "d - mmm - yyyy"
Range(Range("B7"), Range("B7").End(xlDown)).NumberFormat = "0.00"
Range(Range("D7"), Range("D7").End(xlDown)).NumberFormat = "0.000"
Range(Range("E7"), Range("E7").End(xlDown)).NumberFormat = "0.00"
End Sub
Håber virkelig der er nogen der kan knække den her for mig.
18/12 2011 03:27 Aspekulant 750093
Jeg er bestemt ikke macro master, men tror problemet er decimal separator problemet: ". vs ,"
Du kan ændre dine indstillinger i excel så du ikke får problemet: 'Excel options - Advanced'. Under Editing options fjerner du fluebenet ved 'Use system seperators', og sætter 'decimal separator' til et punktum og 'thousand seperator' til et komma.
Hvis du gerne vil beholde dine indstillinger som de er, kan du alternativt tilføje en midlertidig ændring af disse i dine makroer - eksempel:
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
Application.UseSystemSeparators = False
Har kastet det sammen i en makro herunder, hvor den starter med at gemme de oprindelige indstillinger; ændre dem til US std; og til sidst ændrer tilbage til dine oprindelige indst.:
Sub GetData()
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim Timeframe As String
Dim qurl As String
Dim nQuery As Name
Dim DecSep As String
Dim ThousSep As String
Dim UseSysSep As Boolean
DecSep = Application.DecimalSeparator
ThousSep = Application.ThousandsSeparator
UseSysSep = Application.UseSystemSeparators
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationAutomatic
Set DataSheet = ActiveSheet
StartDate = DataSheet.Range("B3").Value
EndDate = DataSheet.Range("B4").Value
Symbol = DataSheet.Range("E3").Value
Timeframe = DataSheet.Range("E4").Value
Range("$A$7:$H$7").CurrentRegion.ClearContents
qurl = "http://ichart.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=" & Timeframe & "&ignore=.csv"
Range("A1") = qurl
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("A7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
Application.UseSystemSeparators = False
Range("$A$7:$H$7").CurrentRegion.TextToColumns Destination:=Range("$A$7:$H$7"), DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Range(Range("A7"), Range("A7").End(xlDown)).NumberFormat = "d - mmm - yyyy"
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("E7"), Range("E7").End(xlDown)).NumberFormat = "0.00"
Range(Range("F7"), Range("F7").End(xlDown)).NumberFormat = "1,000"
Application.DecimalSeparator = DecSep
Application.ThousandsSeparator = ThousSep
Application.UseSystemSeparators = UseSysSep
End Sub
(ps. tilføjede lidt ekstra formatering til dine kolonner)
Du kan ændre dine indstillinger i excel så du ikke får problemet: 'Excel options - Advanced'. Under Editing options fjerner du fluebenet ved 'Use system seperators', og sætter 'decimal separator' til et punktum og 'thousand seperator' til et komma.
Hvis du gerne vil beholde dine indstillinger som de er, kan du alternativt tilføje en midlertidig ændring af disse i dine makroer - eksempel:
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
Application.UseSystemSeparators = False
Har kastet det sammen i en makro herunder, hvor den starter med at gemme de oprindelige indstillinger; ændre dem til US std; og til sidst ændrer tilbage til dine oprindelige indst.:
Sub GetData()
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim Timeframe As String
Dim qurl As String
Dim nQuery As Name
Dim DecSep As String
Dim ThousSep As String
Dim UseSysSep As Boolean
DecSep = Application.DecimalSeparator
ThousSep = Application.ThousandsSeparator
UseSysSep = Application.UseSystemSeparators
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationAutomatic
Set DataSheet = ActiveSheet
StartDate = DataSheet.Range("B3").Value
EndDate = DataSheet.Range("B4").Value
Symbol = DataSheet.Range("E3").Value
Timeframe = DataSheet.Range("E4").Value
Range("$A$7:$H$7").CurrentRegion.ClearContents
qurl = "http://ichart.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=" & Timeframe & "&ignore=.csv"
Range("A1") = qurl
QueryQuote:
With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("A7"))
.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True
End With
Application.DecimalSeparator = "."
Application.ThousandsSeparator = ","
Application.UseSystemSeparators = False
Range("$A$7:$H$7").CurrentRegion.TextToColumns Destination:=Range("$A$7:$H$7"), DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, other:=False
Range(Range("A7"), Range("A7").End(xlDown)).NumberFormat = "d - mmm - yyyy"
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("E7"), Range("E7").End(xlDown)).NumberFormat = "0.00"
Range(Range("F7"), Range("F7").End(xlDown)).NumberFormat = "1,000"
Application.DecimalSeparator = DecSep
Application.ThousandsSeparator = ThousSep
Application.UseSystemSeparators = UseSysSep
End Sub
(ps. tilføjede lidt ekstra formatering til dine kolonner)
Takker, det var vist lige det der skulle til.
Jeg har smidt arket op på en af mine servere, hvis der er andre der kan bruge det kan i hente det her:
http://minfarmand.dk/download/Download%20historiske%20aktiekurser%20fra%20yahoo.xls
Jeg har smidt arket op på en af mine servere, hvis der er andre der kan bruge det kan i hente det her:
http://minfarmand.dk/download/Download%20historiske%20aktiekurser%20fra%20yahoo.xls
19/12 2011 10:03 TeamGarlic 050119
Hej Tom
Henter du virkelig data for hvert symbol hver gang ?
Ville det ikke være smartere at iterere over en liste af symboler og lave charts, så du kan nøjes med at køre én makro og så beundre charts ?
Tak fordi du gjorde dit regneark tilgængeligt.
Henter du virkelig data for hvert symbol hver gang ?
Ville det ikke være smartere at iterere over en liste af symboler og lave charts, så du kan nøjes med at køre én makro og så beundre charts ?
Tak fordi du gjorde dit regneark tilgængeligt.
19/12 2011 10:14 renek 050120
Ja tak fordi du gjorde dit regneark tilgængeligt. Så fik jeg lige mine mistede data på DCO igen.
19/12 2011 11:43 toms77 050123
Normalt vis bruger jeg Ninjatrader til charts. Excel skal jeg ikke bruge til charts, det er kun til beregnings formål, hvor NinjaTrader har sine begrænsninger, desværre for Ninjatrader har en lækker marketanalyser funktion. Det er bare ikke så nemt at lige at programmer en beregning i NT som i Excel.
Lidt mere til dem der har lyst. Jeg faldte over denne her side http://etfhq.com/blog/
Hvis man "like" deres facebook gruppe kan man downloade en masse excel ark - en del indikatorer, men er også en række ark med backtesting resultater, som er rigtig gode.
Hvis man "like" deres facebook gruppe kan man downloade en masse excel ark - en del indikatorer, men er også en række ark med backtesting resultater, som er rigtig gode.
20/12 2011 14:29 TeamGarlic 050164
God damn... jeg hader hvis ting bindes op på Fjæsbog, som jeg ikke ønsker at være en del af.
Men vi ser det mere og mere. Nå man må se om man kan få fat i de Excel-ark på anden vis.
Men vi ser det mere og mere. Nå man må se om man kan få fat i de Excel-ark på anden vis.
20/12 2011 15:36 vouskootia 150168
Tjek også Editgrid.com - som er rimelig populære med finance data (bla. integration til reuters - kun US data dog):
http://www.editgrid.com/site/learn/highlight/finance
Kan sikkert også nemt importere CSV data fra Yahoo finace..
En god ting ved editgrid.com er at man kan dele ark nemt, og ogsaa tillade andre at kopiere eller bruge som templates (genbrug) - og uden xyz local install..
http://www.editgrid.com/site/learn/highlight/finance
Kan sikkert også nemt importere CSV data fra Yahoo finace..
En god ting ved editgrid.com er at man kan dele ark nemt, og ogsaa tillade andre at kopiere eller bruge som templates (genbrug) - og uden xyz local install..