Ich möchte in Python ein konstantes Volumendiagramm erstellen. Hier ist ein Beispiel mit einem konstanten Volumen von 50 und einigen Beispieldaten: < /p>
import pandas as pd
import numpy as np
date_rng = pd.date_range(start='2024-01-01', end='2024-12-31 23:00:00', freq='h')
# Create a dataframe with the date range
df = pd.DataFrame(date_rng, columns=['timestamp'])
# Add the 'price' column with random floating numbers between 70 and 100
df['price'] = np.round(np.random.uniform(70, 100, size=(len(date_rng))), 2)
# Add the 'volume' column with random integers between 1 and 10
df['volume'] = np.random.randint(1, 11, size=(len(date_rng)))
constantvolume = 50
df['cumsum'] = np.cumsum(df['volume'])
df['mod'] = df['cumsum']/ constantvolume
df['whole'] = np.ceil(df['mod'])
df['next_num'] = df['whole'].shift(-1) - df['whole']
df['mod2'] = df[df['next_num'] > 0]['cumsum'] % constantvolume
df['mod2'] = df['mod2'].fillna(0)
dfa = df.groupby(df['whole']).agg({'price': ['min', 'max', 'last', 'first'], 'timestamp': 'first', 'volume': 'sum'})
dfa.columns = ['low', 'high', 'close', 'open', 'timestamp', 'volume']
dfa['timestamp'] = pd.to_datetime(dfa['timestamp'])
dfa.set_index('timestamp', inplace=True)
dfa
< /code>
Nun ist dies sehr nahe an dem, was ich tun möchte. Das einzige Problem ist, dass das Volumen in jeder Zeile nicht genau die definierte Menge von 50 ist, da das Cumsum nicht immer 50 erhöht. Sehen Sie, ob das Volumen = zum definierten konstanten Volumen vorhanden ist. Wenn ja, wenn nein, dann teilen Sie die nächste Zeile mit demselben Zeitstempel und demselben Preis auf, teilen Sie das Volumen jedoch in zwei Teilen auf, damit der Mod Null ist und dann weitergeht. < /p>
Das gewünschte Ergebnis ist, dass im endgültigen Datenframe das Volume = ConstantVolume genau in allen Zeilen genau, mit Ausnahme der letzten Zeile, in der es unterschiedlich sein könnte. < /p>
Die einzige Möglichkeit, wie ich mir vorstellen kann, ist eine Schleife, die ich nicht für den besten Weg halte und sehr langsam wie der tatsächliche Datenrahmen als 1 -mn -Zeilen ...
Konstantes Volumendiagramm in Python ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post
Mobile version