Hinzufügen berechneter Spalten zu einem Datenrahmen in Pandas
Ich habe einen OHLC-Preisdatensatz, den ich von CSV in einen Pandas-Datenrahmen geparst und auf 15-Minuten-Balken neu abgetastet habe:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 500047 entries, 1998-05-04 04:45:00 to 2012-08-07 00:15:00
Freq: 15T
Data columns:
Close 363152 non-null values
High 363152 non-null values
Low 363152 non-null values
Open 363152 non-null values
dtypes: float64(4)
Ich möchte verschiedene berechnete Spalten hinzufügen, beginnend mit einfachen Spalten wie dem Periodenbereich (H-L) und dann Booleschen Werten, um das Auftreten von Preismustern anzuzeigen, die ich definieren werde - z. ein Hammerkerzenmuster, für das eine Beispieldefinition:
def closed_in_top_half_of_range(h,l,c):
return c > l + (h-1)/2
def lower_wick(o,l,c):
return min(o,c)-l
def real_body(o,c):
return abs(c-o)
def lower_wick_at_least_twice_real_body(o,l,c):
return lower_wick(o,l,c) >= 2 * real_body(o,c)
def is_hammer(row):
return lower_wick_at_least_twice_real_body(row["Open"],row["Low"],row["Close"]) \
and closed_in_top_half_of_range(row["High"],row["Low"],row["Close"])
Grundproblem: Wie ordne ich die Funktion der Spalte zu, und zwar dort, wo ich mehr als eine andere Spalte oder die gesamte Zeile oder was auch immer referenzieren möchte?
Dieser Beitrag befasst sich mit dem Hinzufügen von zwei berechneten Spalten aus einer einzelnen Quellenspalte, was nahe liegt, aber nicht ganz so ist.
Und etwas weiter fortgeschritten: Wie kann ich bei Preismustern, die mit Bezug auf mehr als einen einzelnen Balken (T) ermittelt wurden, innerhalb der Funktionsdefinition auf verschiedene Zeilen (z. B. T-1, T-2 usw.) verweisen?