-->Wie Toby schon darstellte, wird es mit den Möglichkeiten, die zuccho andeutete einfach sein, wenn dein Datenmaterial mit 5min-Intervall lückenlos vorliegt.
Jedoch ist auch die Frage zuivor zu stellen, ob du die Sammlung für die volle Stunde oder für den 60min-Intervall (z.B. 14:30, 15:30,...) angeschrieben bekommen willst, und ob du eine allegemeine oder eine Einzelösung suchst.
Liegen die Daten für jedes 5min-Intervall innerhalb der Handelszeit vor und sollen zu jeder vollen Uhrzeit-Stunde OHLC der letzten Hndelsstunde erfasst werden und soll keine allgemeine Lösung entwickelt werden, dann kannst du wie folgt vorgehen, wenn die Spalteninhalte wie folgt gefüllt sind:
<pre> A B C D E F G H I J K L
01 Datum Zeit Eröffn. Höchst. Tiefst. Schluss.
02 Datum[02] HH:00[02] Open[02] High[02] Low[02] Close[02]
03 Datum[03] HH:05[03] Open[03] High[03] Low[03] Close[03]
....
11 Datum[11] HH:50[11] Open[11] High[11] Low[11] Close[11]
12 Datum[12] HH:55[12] Open[12] High[12] Low[12] Close[12]
13 Datum[13] HH:00[13] Open[13] High[13] Low[13] Close[13]
14 Datum[14] HH:05[13] Open[14] High[14] Low[14] Close[14]
</pre>
hierbei stehen die Indizes in den eckigen Klammern die Kennungen der Zeile in der Exceltabelle.
Das Signal der Abgrenzung der Zeilen mit unterschiedlicher Stunden-(HH)-Notierung liefert dir die Abfrage (deutsche-EXCEL-Fassung angenommen):
=WENN(STUNDE(Bxx)=STUNDE(Bxx+1); Aktion wenn gleich, Aktion wenn ungleich)
Beispiel:
=WENN(STUNDE(B12)=STUNDE(B13);Aktion1;Aktion2)
(Während ich dies verfasse, bemerke ich gerade, dass der Plan eigentlich generell eingesetzt werden kann, denn die volle Stunde (Uhrzeit) die Stundenintervallgrenze darstellt)
In die Zelle G2 wird eingetragen =A2 (Datumsstempel für die Stundentabelle)
In die Zelle H2 wird eingetragen =B2 (Zeitstempel für die Stundentabelle)
In die Zelle I2 wird eingetragen =C2 (Open für die Stundentabelle)
In die Zelle J2 wird eingetragen =D2 (High als Start-Vergleichswert)
In die Zelle K2 wird eingetragen =E2 (Low als Start-Vergleichwert)
In die Zelle L2 wird eingetragen =F2 (ohne besonder Bedeutung)
In die Zelle G3 wird nun die Formel eingetragen:
[Zelle G3].... =WENN(STUNDE(B2)=Stunde(B3);"";A3)
die bewirkt, dass nur in Zelle G3 das Datum eingetragen wird, wenn die Uhr-Stundengrenze überschriten wurde, eine neue Stunde beginnt; also G12="" aber G13=Datum[13].
Gleiche Logik stect in der Formel, die in Zelle H3 geschrieben wird:
[Zelle H3].... =WENN(STUNDE(B2)=Stunde(B3);"";B3)
In Zelle I3 ist dann der Eröffnungskurs [C3] für einen neuen Block einzutragen wenn die ZeitIntervallgrenze überschritten wurde, sonst ist der Wert aus der Zehel darüber [I2] zu übernehmen:
[Zelle I3].... =WENN(STUNDE(B2)=Stunde(B3);I2;C3)
Ähnlich ist beim Höchst- und Tiefstkurs zu verfahren, wobei jedoch als Zusatzbedingung das Ergebnis des Größenvergleichs in Aktion1 zu berücksichtigen ist.
[Zelle J3].... =WENN(STUNDE(B2)=Stunde(B3);WENN(I2<E3;E3;I2);D3)
[Zelle K3].... =WENN(STUNDE(B2)=Stunde(B3);WENN(I2>D3;D3;I2);E3)
Die Zelle L3 wird analog zur Logik der Zelle [I3] gefüllt:
[Zelle L3].... =WENN(STUNDE(B2)=Stunde(B3);L2;F3)
Wenn du nun den Bereich G2 bis L2 markierst und die Formeln über die darunterliegenden Zellen ziehst, dann sollte ein erstes Teilergebnis sichtbr sein, nämich dies, dass mit jedem vollen Stundenbeginn die gesuchten Zeilen angeschrieben stehen.
Nun wirst du die Spalten G bis L selektieren und über Kopieren in den Zwischenspeicher sichern. Wenn d eine neue Tabelle nutzen willst, dann wechsle in diese, setze den Cursor in Zelle A1 und öffne das lokale Menü, aus dem du die Funktion Inhalt... auswählst. Benutze die Methode: Werte damit die Zahlenwerte und nixht die Formeln übertragen werden.
In der neuen Tabelle marierts du nun die Spalten A bis F und sortierst diese Spaten nach den Spalten A und B (in dieser Reihenfolge; auf- oder absteigend nach deinen Wünschen).
Alle Zeilen ohne Datumsstempel kannst du nun löschen.
Natürlich läßt sdich diese Aufgqabe mit einem Makro (aufzeichnen der Tastenfolge) erledigen oder noch eleganter, mit VBA-Makro, ds gleich intern die Sammlung vornimmt. Aber bereits hier ist es möglich, die erste Tabelle als Grundlage für eine weitere Zeitreihe zu nutzen, indem die Spalten A bis F überschrieben werden (Achtung: das Spaltenende beachten, ob keine Vorgängerdaten erhalten bleiben!)
Um nun auch"freie" Zeitintervallgrenzen einführen zu können, ist an die Stundengrenzenabfrage durch eine Funktion zu ersetzen, die den Erfordernissen entspricht. (z.B ([Bxx]-[$B$3]) muß ohne Rest durch 60 teilbar sein; hier nur Ideenskizze).
Gruß! |