Excel
-
-
-
Die Antwort auf die Frage wie man vorgeht ist hier z.B. bebildert erklärt. Im Anhang ist noch ein Excel Bsp mit Systemoptimierungsergebnissen aus einem Aussie Forum. Wie man Elemente aus dem Pivot Bericht auswechselt, erklärt das Bild. Alles in Allem kein großes Hexenwerk.
-
-
-
-
-
-
-
Da ich es gerade selbst benötigte ... falls jemand eine Spalte mit Datum und Zeit wie im Bsp "04.04.2011 08:15:00" in einer Zelle vorliegen hat, und versuchen möchte, jeweils Datum oder Uhrzeit für die gesamte Spalte herauszulösen, ginge das wie folgt:
Datum getrennt in Spalte B ausgeben: =Kürzen(A1)
oder Zeit getrennt von Datum in Spalte B ausgeben: =A1-Kürzen(A1)
oder so
Datum getrennt in Spalte B ausgeben: =TEXT(A1;"TT.MM.JJJJ")*1
oder Zeit getrennt von Datum in Spalte B ausgeben: =TEXT(A1;"hh:mm:ss")*1 -
-
-
Danke, aber das ist nicht genau das, was ich suche. Das Skript unten basiert auf Bars. Mit EL kenn ich mich nicht wirklich aus, aber es sieht so aus als würde das Skript einfach den Close-Preis mit dem Intervall multiplizieren (zB 5 für einen 5-Min Chart), alles aufsummieren und am Ende durch die Anzahl der Minuten teilen. Abgesehen davon, das der TWAP von einem 5-Min Bar nicht 5*Close-Preis ist, errechnet das Skript eigentlich nur den Durchschnitt aller Close-Preise.
Wenn man keine Bars verwendet, sondern nur Zeit/Preis-Paare ohne fixes Intervall, muss man das irgendwie anders machen. Z.B.:
17:30:00 1,4010
17:30:17 1,4014
17:30:44 1,4019
17:31:03 1,4016
17:31:15 1,4015
Ein brachialer Ansatz um den TWAP in Sekunden-Auflösung auszurechen, wäre ein Array mit den 75 Preisen aufzufüllen (Zeitraum hat 75 Sekunden) und dann den Durchschnitt auszurechnen. Aber da muss es doch eine sauberere Lösung geben. Ein Problem damit ist, dass die Preise nicht im Sekundentakt daherkommen, und man zig Sekunden-Fehler über den ganzen Zeitraum aufsummiert.. -
Im Netz gefunden (ohne Gewähr auf Funktionalität)
Quellcode
- { Function: _TWAP: Time-weighted average price
- Very similar to VWAP, except Price is only weighted by the time (number of times the price occurs over a session).
- Apply only to intraday charts
- }
- vars:
- PriceW(0),
- TimeW(0) ;
- // Raise run time error to shut down if the bar type is not intraday
- Once if BarType <> 1 then
- RaiseRunTimeError(" TWAP function can only be used with intraday charts") ;
- // If the current bar date is not equal to the prior bar date then we are on
- // the first bar of a new day. If so, then reset PriceW and TimeW.
- if Date[1] <> Date then
- begin
- PriceW = 0;
- TimeW = 0;
- end;
- // Add to the price weighting the new average price times the bar interval (number of minutes)
- PriceW = PriceW + ( AvgPrice * BarInterval ) ;
- // Add to the time weighting the total elapsed minutes for this day
- TimeW = TimeW + BarInterval ;
- // If the time weighting is non-zero then we calculate a TWAP, else return -1
- // indicating we cannot calculate TWAP.
- if TimeW > 0 then
- _TWAP = PriceW / TimeW
- else
- _TWAP = -1 ;
-
-
Meinst du TWAP im Gegensatz zu VWAP (siehe unten Bild)?
Purri schrieb:
Sprache wäre egal.
Muss also nicht Excel spezifisch sein?
Für NT7 habe ich irgendwo ein Scipt mit TWAP und VWAP Berechnung. -
-
-
Ich würde "B" und "D" als Datentyp Currency deklarieren, Und nicht Variant. Zudem immer "Option Explicit" angeben.
So geht keine Var verloren im Gestrüp.
Eventuell musst du die Werte noch konvertieren (von String zu Currency).
Sub ConvertToCurrency()
Dim lNum As Double
lNum = 999.989876
MsgBox CCur(lNum)
End Sub
Dazu findest du im Netz jede Menge Hilfe.Würde und Sein - sind allen gemein -
Ist jemand fit in VBA?
Ich bekomme mit unterem Code einen Laufzeitfehler
B3 und D3 enthalten z.B.
=MT4|BID!EURUSD
bzw
=MT4|ASK!EURUSD
Quellcode
- Private Sub Worksheet_Calculate()
- Static BidVorher As Variant
- Static AskVorher As Variant
- Dim BidAktuell As Variant, AskAktuell As Variant
- BidAktuell = Range("B3").Value
- If BidAktuell <> BidVorher Then
- BidVorher = BidAktuell
- Application.ScreenUpdating = False
- If Len(Range("B" & Rows.Count)) Then Range("A" & Rows.Count).Resize(1, 2) = ""
- Range("A4:B4").Insert
- Range("A4").NumberFormat = "dd.mm.yyyy hh:mm:ss"
- Range("B4").NumberFormat = Range("B3").NumberFormat
- Range("A4").Value = Now
- Range("B4").Value = BidAktuell
- Application.ScreenUpdating = True
- End If
- AskAktuell = Range("D3").Value
- If AskAktuell <> AskVorher Then
- AskVorher = AskAktuell
- Application.ScreenUpdating = False
- If Len(Range("D" & Rows.Count)) Then Range("C" & Rows.Count).Resize(1, 2) = ""
- Range("C4:D4").Insert
- Range("C4").NumberFormat = "dd.mm.yyyy hh:mm:ss"
- Range("D4").NumberFormat = Range("D3").NumberFormat
- Range("C4").Value = Now
- Range("D4").Value = AskAktuell
- Application.ScreenUpdating = True
- End If
- End Sub
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
-
Reddit 0
-
Benutzer online 2
2 Besucher