Click
Chat
 
Du kan vedhæfte PDF, JPG, PNG, DOC(X), XLS(X) og TXT-filer. Klik på ikonet, vælg fil og vent til upload er færdig før du indsender eller uploader endnu en fil.
60
Vedhæft Send
DANMARKS STØRSTE INVESTORSITE MED DEBAT, CHAT OG NYHEDER

Yahoo + Excel + Makro


50092 toms77 18/12 2011 01:07
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.




18/12 2011 04: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)



18/12 2011 14:31 toms77 550098



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



19/12 2011 11: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.



19/12 2011 11: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 12: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.



20/12 2011 13:13 toms77 350162



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.



20/12 2011 15: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.



20/12 2011 16: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..



TRÅDOVERSIGT