У меня есть эта таблица: (строки 4-19 скрыты для удобства), и я хочу обновить значение, если условие выполняется, сравнивая текущее значение строки и предыдущее значение строки, где выполняется условие
close id SMA20 RSI14 MACD signal
0 9200.0 100 9196.450 69.381191 1.921696 1
1 9300.0 100 9196.450 69.381191 -1.921696 -1
2 9215.0 101 9198.400 79.360997 -1.044195 -1
3 9214.0 102 9200.300 77.546365 -0.605997 -1
20 9150.0 120 9190.675 17.256473 -4.207557 -1
21 9149.5 121 9187.400 17.094844 -4.734598
в этом примере моя текущая строка - 21, я хочу сравнить 9149,5 с предыдущей строкой, где сигнал такой же, как и в моей предыдущей строке 20 (-1), поэтому самой ранней строкой будет строка 1 с 9300 и I хочу сравнить это с каждой строкой. если разница> 150, сигнал должен возвращать значение, противоположное значению самой ранней строки, в противном случае оно останется таким же. Это функция, которую я еще не включил, но ниже представлена текущая функция для столбца сигналов, и используемый df применяется к:
if price > sma20 and macd >1 and rsi14 > 40: #buy
return 1
elif price < sma20 or macd <1 or rsi14 < 40: #sell
return -1
else:
return 0
Я действительно застрял и не уверен, какую функцию использовать. Есть ли способ применить df в функции для включения строк выше? Или, если мы можем изменить функцию сигнала, чтобы было проще. Любая помощь приветствуется. Спасибо!