Grupp: ABC

Excelhjälp

0
Ogilla!
0
Gilla!
2006-05-02 09:13:07

Jag har en lista med typ 16000 dagliga open, high, low, close i excel. Jag skulle vilja ha dem i veckoform istället, dvs open, high, low, close per vecka.

Finns det något enkelt sätt att göra detta? Alternativt behöver jag inte ha alla kolumner utan endast close om det är betydligt lättare.

Finns det någon vass excelguru som kan tipsa mig?:) 

mvh
pinetree

0
Ogilla!
0
Gilla!
2006-05-02 10:09:33

#0 Du måste nog lära dig Excels inbyggda Visual Basic för att göra det. Men det är värt ansträngningen om du tänker jobba mycket med Excel. 

/roitto

If you do not wish to fight you are permitted to flee. (Seneca)

0
Ogilla!
0
Gilla!
2006-05-02 10:25:17

Det finns ju lite aktierelaterade diagramfunktioner i Excel. Är det någon här som lyckats bygga ett TA program utifrån detta?

I så fall skulle man kunna hämta datan från Nordnet, via Excelfeed.

Sorry Pine om detta var off topic.

Mvh TWA.


0
Ogilla!
0
Gilla!
2006-05-02 10:54:30

#1 ok. kanske dags o göra det då. mitt excelbehov kommer antagligen att stiga exponentiellt de närmaste åren...:)

#2 hehe..de är lugnt twa. du behöver inte använda excel för det. Jag antar att du tänker på dde-länkning lr? om det är det du gör, så kan du länka in direkt i amibroker. 

mvh
pinetree

0
Ogilla!
0
Gilla!
2006-05-02 11:03:19

Jag vet att abbnorm lyckades länka in nordnets Excelfeed till AB. Jag gav dock upp...

Har du en lösning på hur man gör detta? Jag är endast intresserad av OMX-terminen.

Måste jag ha AB:s proversion för detta? 

Mvh TWA.


0
Ogilla!
0
Gilla!
2006-05-02 11:06:37

jag kan det inte i huvet, men jag tror att amibroker visar på sin hemsida hur man gör dde-länkning. tror inte du behöver pro-versionen för det. 

mvh
pinetree

0
Ogilla!
3
Gilla!
2006-06-01 13:37:04

Här finns en massa olika excelfiler som ni kan ladda ned och kolla om det är något som skulle passa. Excelfiler 

MVH
Lasse

0
Ogilla!
2
Gilla!
2006-06-01 17:55:31

För ett par månader sedan på Börssnack hadde man en diskussion om samma sak,

en av skribenterna länkade då ut excelfiler till dom som ville ha.

Tror att det var mitten april eller däromkring.

 

 

Ursäkta att jag refererar till ett annat aktieforum.

 

 

Mvh taxi i ett soligt Vallentuna

 

:  ))))

0
Ogilla!
2
Gilla!
2006-06-03 00:41:41

# pinetree

mitt excelbehov kommer antagligen att stiga exponentiellt de närmaste åren...:) 

Excel i all ära, men vill Du kunna göra det Du vill i #0
måste Du nog "tyvärr" lära Dig att programmera ....

Låter det tråkigt ?
Det är det inte !

Visual Basic är ett programmeringsspråk som Du
kan använda ihop med Excel ...

Tillbaka till #0
Har Du hittat vad Du söker ?

Jag kan lägga ut lite Visual Basic-kod
som gör vad Du eftersöker om Du är intresserad.

Ingen "smart-programmering" utan med kod som Du
och kanske andra någorlunda förstår som nybörjare ....

Är själv nybörjare vad gäller Visual Basic;
( programmerar lite som hobbyverksamhet
   i andra programspråk )

Lite "roligt jobb är det dock" , men vill Du eller någon
annan ha lite hemsnickrad kod för att leka vidare med
så hör av Er i nedanstående kommentarer
så ska jag fixa det ...... 

/ kekke

0
Ogilla!
0
Gilla!
2006-06-03 08:40:07

#8. det är klart kekke, att jag vill ha lite kod att roa mig med ;) 

Mvh Gunslinger

0
Ogilla!
0
Gilla!
2006-06-03 10:22:42

#8 #9 Det går alldeles utmärkt att programmera VB direkt i Excel. Eftersom koden kompileras i runtime så går det segare än "äkta" VB, men det är väldigt mycket smidigare att skriva koden i Excel. Då slipper man göra tråkiga och krångliga moment som att läsa in filen i en lämplig datastruktur, eftersom man kan referera direkt till cellerna i Excel-arket. Jag använder ofta Excel-VB när jag bara vill göra enkla simuleringar. 

/roitto

If you do not wish to fight you are permitted to flee. (Seneca)

0
Ogilla!
8
Gilla!
2006-06-04 12:01:38
Ladda ned

Visual Basic-koden nedan tror jag
ska ordna frågeställningen i #0

Hur gör jag om jag vill testa och aldrig
använt makron tidigare ?

* Kopiera koden nedan från Attribute-raden
   till sista End Function-raden. Spara sedan detta
   med en text-editor, t.ex. Anteckningar
* Skapa en kopia av den Excel-fil Du vill testa med
   Öppna sedan kopian.
* Starta Visual Basic-editorn. ( Snabbkommando ALT + F11 )
* Välj Arkiv -> Importera fil 
   Ange filnamnet som Du sparade koden med.
* Välj Kör -> Kör Sub/UserForm
   Markera Raden My_data
   Kör
* Det bör nu skapats en ny Excel-arbetsbok om allt står
   rätt till.

Du kan också köra koden från Excel :
Välj Verktyg -> Makro -> Makron och sedan lika som ovan.

Sedan kan Du öppna andra Excel-filer och konvertera genom
att välja Verktyg -> Makro -> Makron .....

Vill man ändra i koden så använder man Visual Basic-editorn
och gör redigeringar i modulen AG060604.



Attribute VB_Name = "AG060604"
Rem När man kör subrutinen My_data()
Rem omvandlas aktuell arbetsbok med dagskurser till
Rem veckokurser + en kolumn med glidande medelvärden
Rem på veckokurserna till en ny arbetsbok.
Rem Kolumn-nummerna + värdet på det glidande medelvärdet
Rem kan ändras om Ni inte har Date/High/Low/Open/Close
Rem i samma ordning som här.
Rem Ändringar görs i subrutinen My_data()
Rem
Rem OBS ! Programmet är inte testat utan får ses mer
Rem som ett exempel på hur man kan komma igång.
Rem Felhantering sker inte.
Rem
Rem kekke 2006-06-04

Rem Deklarera globala variabler

Option Explicit

' I följande vektorer sparas all veckoinformation
' Mer än 15000 ( lär räcka ) veckor får det inte bli
' ( Egentligen 14998 )

Dim Veckostart(15000) As Long
Dim Veckoslut(15000) As Long
Dim K_Open(15000) As Single
Dim K_High(15000) As Single
Dim K_Low(15000) As Single
Dim K_Close(15000) As Single
Dim K_Sma(15000) As Single

Dim Antalveckor As Integer

Dim Firstrow As Long
Dim Lastrow As Long
Dim Firstdate As Long
Dim Lastdate As Long

Dim Col_Date As Integer
Dim Col_Open As Integer
Dim Col_High As Integer
Dim Col_Low As Integer
Dim Col_Close As Integer
Dim My_SMA As Integer

Dim Dummy As Integer
Dim Dummy_Low As Single
Dim Dummy_High As Single

Sub My_data()

Rem HÄR ANGES PERSONLIGA DATA
Rem -------------------------

Col_Date = 1
Col_High = 2
Col_Low = 3
Col_Open = 4
Col_Close = 5

My_SMA = 5

Rem Hjälpvariabler

Dummy_Low = -0.1
Dummy_High = 9999999.99

Rem HÄR STARTAR PROGRAMMET

Skapa_Datumvektorer
Dag_Till_Vecka
Dummy = SMA(Antalveckor, My_SMA)
Presentera_Data
End Sub

Sub Skapa_Datumvektorer()
Dim I As Long

Rem Hämta första måndagsdatum, måste finnas
Rem annars blir det felmeddelande.

I = 1

' Hoppa över eventuella överskrifter

While Not IsDate(Hämtacell(I, Col_Date))
I = I + 1
Wend

' Leta upp första måndagen

While Not Hämtacell(I, Col_Date) Mod 2 = 1
I = I + 1
Wend

Firstrow = I
Firstdate = Hämtacell(I, Col_Date)

' Firstrow innehåller nu radnumret för första måndagen
' Firstdate innehåller nu första datumet som är en måndag

Rem Hämta sista datumet

Lastrow = ActiveSheet.Cells.Find(What:="*", _
Searchdirection:=xlPrevious, _
Searchorder:=xlByRows).Row
Lastdate = Hämtacell(Lastrow, Col_Date)

' Lastrow innehåller nu radnumret på sista datumet
' Lastdate innehåller nu sista datumet

Rem Skapa vektor med alla måndagsdatum och söndagsdatum

Antalveckor = 1
Veckostart(1) = Firstdate
Veckoslut(1) = Firstdate + 6
While Veckostart(Antalveckor) <= Lastdate
Antalveckor = Antalveckor + 1
Veckostart(Antalveckor) = Veckostart(Antalveckor - 1) + 7
Veckoslut(Antalveckor) = Veckoslut(Antalveckor - 1) + 7
Wend
Antalveckor = Antalveckor - 1

' Veckostart(X) innehåller nu alla aktuella måndagsdatum
' Veckoslut(X) innehåller nu alla aktuella söndagsdatum
' Antalveckor innehåller nu antalet veckor med data

End Sub

Sub Dag_Till_Vecka()
Dim I As Long
Dim Veckostartrad As Long
Dim Första As Boolean

Dim Datum As Long
Dim Kurs As Single
Dim Lägsta As Single
Dim Högsta As Single

Veckostartrad = Firstrow

Rem Gå igenom alla veckor

For I = 1 To Antalveckor

Första = True
Högsta = Dummy_Low
Lägsta = Dummy_High

' Nollställ värden om det skulle saknas data för vissa veckor

K_High(I) = 0#
K_Low(I) = 0#
K_Open(I) = 0#
K_Close(I) = 0#

Datum = Hämtacell(Veckostartrad, Col_Date)

' Så länge som datumet är inom aktuell vecka så ...

While Datum >= Veckostart(I) And Datum <= Veckoslut(I)
' Fixa öppningskursen
If Första Then
K_Open(I) = Hämtacell(Veckostartrad, Col_Open)
Första = False
End If
' Fixa högstakursen
Kurs = Hämtacell(Veckostartrad, Col_High)
If Kurs > Högsta Then
K_High(I) = Kurs
Högsta = Kurs
End If
' Fixa lägstakursen
Kurs = Hämtacell(Veckostartrad, Col_Low)
If Kurs < Lägsta Then
K_Low(I) = Kurs
Lägsta = Kurs
End If
' Fixa slutkursen
Kurs = Hämtacell(Veckostartrad, Col_Close)
K_Close(I) = Kurs

' Nästa Datum
Veckostartrad = Veckostartrad + 1
Datum = Hämtacell(Veckostartrad, Col_Date)
Wend
' Då var denna veckan klar, fortsätt med nästa vecka
Next I
End Sub

Function SMA(Antal As Integer, MA As Integer)
Dim I As Integer
Dim Summa As Single

Summa = 0#
For I = 1 To MA - 1
K_Sma(I) = -1
Summa = Summa + K_Close(I)
Next I

Summa = Summa + K_Close(I)
K_Sma(I) = Summa / MA

For I = MA + 1 To Antal
Summa = Summa - K_Close(I - MA)
Summa = Summa + K_Close(I)
K_Sma(I) = Summa / MA
Next I
End Function

Sub Presentera_Data()
Dim K As Integer

Workbooks.Add

' Överskrift

Cells(1, 1).Value = "Veckostart"
Cells(1, 2).Value = "Veckoslut"
Cells(1, 3).Value = "High"
Cells(1, 4).Value = "Low"
Cells(1, 5).Value = "Open"
Cells(1, 6).Value = "Close"
Cells(1, 7).Value = "SMA(" & My_SMA & ")"

' Skriv ut vektorerna

For K = 1 To Antalveckor

Cells(K + 1, 1).Value = Veckostart(K)
Cells(K + 1, 2).Value = Veckoslut(K)
Cells(K + 1, 3).Value = K_High(K)
Cells(K + 1, 4).Value = K_Low(K)
Cells(K + 1, 5).Value = K_Open(K)
Cells(K + 1, 6).Value = K_Close(K)
If K_Sma(K) < 0 Then
Cells(K + 1, 7).Value = "--"
Else
Cells(K + 1, 7).Value = K_Sma(K)
End If
Next K

' Formatera

Range("A2:B" & Antalveckor + 1).Select
Selection.ColumnWidth = 12#
Selection.NumberFormat = "yyyy/mm/dd;@"
Range("C2:G" & Antalveckor + 1).Select
Selection.ColumnWidth = 10#
Selection.NumberFormat = "0.00"

Range("A1:G" & Antalveckor + 1).Select
Selection.HorizontalAlignment = xlRight
Range("A2").Select

End Sub

Function Hämtacell(Rad As Long, Kolumn As Integer)
Rem Funktionen returnerar värdet i aktuell cell
Hämtacell = Cells(Rad, Kolumn).Value
End Function


Lite synd att inledande mellanslag försvinner när man
klistrar in, bifogar därför även koden som zippad fil



/ kekke 

Inlägget är redigerat av författaren.

Inlägget är redigerat av författaren.

0
Ogilla!
2
Gilla!
2006-06-04 15:34:20

Tack Kekke!

Det skall testas.

Mvh mossle27 

0
Ogilla!
2
Gilla!
2006-06-05 15:21:12
Ladda ned

Först rättning av en bugg för koden i #11.

Raden
While Not Hämtacell(I, Col_Date) Mod 2 = 1
i subrutinen Skapa_Datumvektorer
skall vara
While Not Hämtacell(I, Col_Date) Mod 7 = 2

Det vore väl ganska bra om man kunde göra rutinen
för massor av aktier bara genom att starta makrot
en gång samt presentera en del beräkningar gjorda
för de aktuella aktierna .....

Det kan man med bifogad kod.
Lite anvisningar finns i subrutinen My_data

Koden importeras förslagsvis in i en tom
Excel-arbetsbok och sparas som t.ex. Makro1.xls

Hänger Ni någorlunda med i koden skall Ni
nu på egen hand kunna experimentera med att :

* Läsa in kurser m.m. lagrade i Excel-format
   till vektorer.
* Göra beräkningar på data i vektorerna.
* Presentera data i en ny Excel-arbetsbok.
* Upprepa förfarandet för många aktier.
* Göra en sammanställning på beräkningar för
   samtliga aktier ni valt att ta med.

Hoppas Ni fått lite uppslag på hur man kan göra ...
Lycka till !

/ kekke 

0
Ogilla!
1
Gilla!
2006-06-06 11:08:14

Ett stort tack kekke. Jag är så avundsjuk på er som kan programmera. Brorsan är väldigt duktig på programmering men själv är jag värdelös på det. 

MVH
Lasse

Upp till toppen
Kommentera

 

Tjäna mer pengar på dina aktieaffärer

Bli medlem på Aktieguiden gratis på 30 sekunder.

Som medlem på Aktieguiden kan du:

  • Läsa träffsäkra tips och analyser från duktiga traders
  • Ställa frågor till och chatta med aktieproffs
  • Få gratis tillgång till en över miljon inlägg aktiehandel
  • Skapa egna privata forumgrupper

För att få delta i diskussionerna på Aktieguiden krävs att du verifierar ditt mobilnummer. Läs gärna mer om varför verifiering behövs.

 

Redan medlem? Klicka här för att logga in.