Я очень плохо знаком с Python. У меня длинный вопрос ниже. Буду очень признателен, если вы, ребята, сможете мне помочь.
У меня есть большой массив данных о ценах на акции с
df.columns = ['open', 'high', 'low', 'close']
Я также вычислил две экспоненциальные скользящие средние на основе цены закрытия каждый день - 5EMA и 10EMA
Когда происходит пересечение скользящей средней, то есть 5EMA> 10EMA сегодня, но
5EMA <10EMA вчера, у меня есть df ['cross'] = 'cross', чтобы показать, что произошло кроссовер. </p>
import pandas as pd
import numpy as np
data = pd.read_csv("Nifty.csv")
df = pd.DataFrame(data)
df['5EMA'] = df['Close'].ewm(span=5).mean()
df['10EMA'] = df['Close'].ewm(span=10).mean()
condition1 = df['5EMA'].shift(1) < df['10EMA'].shift(1)
condition2 = df['5EMA'] > df['10EMA']
df['cross'] = np.where(condition1 & condition2, 'cross', None)
print(df)
Мне нужен столбец df ['min'], который определяет минимальное значение df ['low'] между этим df ['cross'] = 'cross' и предыдущим df ['cross] =' cross '.
Мне нужен столбец df ['check'], например,
df ['check'] = 'up', если текущий df ['min']> предыдущий df ['min']
Вот пример вывода
введите описание изображения здесь
В выходных данных примера, когда возникает третий «крест», минимальное значение df ['low'] между третьим крестом и вторым крестом (в данном случае '11') БОЛЬШЕ, чем минимальное значение df [ «низкий»] между первым крестом и вторым крестом (в данном случае «8»). Итак, df ['check'] = 'up'
Когда происходит четвертый «крест», минимальное значение df ['low'] между четвертым крестом и третьим крестом (в данном случае '10') НЕ БОЛЬШЕ, чем минимальное значение df ['low'] между вторым крестом и третьим крестом (в данном случае «11»). Итак, df ['check'] = 'down'
Мне нужно генерировать значение df ['check'] постоянно, как это каждый раз, когда df ['cross'] = 'cross'