Я новичок в python и в анализе финансовых данных. Я хочу определить тренд акций на основе следующего:
- Если цена закрытия выше, то скользящая средняя и скользящая средняя (MA) растут за предыдущие пять дней, тогда тренд восходящий. '
- Если цена закрытия ниже, чем скользящая средняя и скользящая средняя (MA) снижается за предыдущие пять дней, тогда тренд «вниз»
- Иначе «тренда» нет
Я действительно застрял в той части, где вам нужно проверить, растет ли скользящая средняя за последние пять дней. Я подумал о создании индикатора того, больше ли текущая скользящая средняя, чем предыдущая, а затем посмотреть, верен ли этот индикатор в течение последних пяти дней.
Вот пример (для python) того, что я бы сделал как достичь в кадре данных:
import pandas as pd
close = [10,12,13,14,14,13,15,16,17,18]
ma = [4,5,6,7,8,9,10,10,9,9]
trend = ['no','no','no','no','no','up','up','no','no','no']
dict = {'close':close,'ma': ma, 'trend': trend}
df = pd.DataFrame(dict)
df.head(10)
close ma trend
0 10 4 no
1 12 5 no
2 13 6 no
3 14 7 no
4 14 8 no
5 13 9 up
6 15 10 up
7 16 10 no
8 17 9 no
9 18 9 no
В R я написал следующее l oop, которое делает именно то, что я хочу. Итак, в основном я хочу воссоздать это в Python:
for (i in 7:nrow(tesla_df)) {
if (tesla_df$EMA9[i-5] > tesla_df$EMA9[i-6] &
tesla_df$EMA9[i-4] > tesla_df$EMA9[i-5] &
tesla_df$EMA9[i-3] > tesla_df$EMA9[i-4] &
tesla_df$EMA9[i-2] > tesla_df$EMA9[i-3] &
tesla_df$EMA9[i-1] > tesla_df$EMA9[i-2] &
tesla_df$EMA9[i] > tesla_df$EMA9[i-1] &
tesla_df$Close[i] > tesla_df$EMA9[i] ) {
tesla_df$Trend[i] <- 'UP'
}
else if (tesla_df$EMA9[i-5] < tesla_df$EMA9[i-6] &
tesla_df$EMA9[i-4] < tesla_df$EMA9[i-5] &
tesla_df$EMA9[i-3] < tesla_df$EMA9[i-4] &
tesla_df$EMA9[i-2] < tesla_df$EMA9[i-3] &
tesla_df$EMA9[i-1] < tesla_df$EMA9[i-2] &
tesla_df$EMA9[i] < tesla_df$EMA9[i-1] &
tesla_df$Close[i] < tesla_df$EMA9[i] ) {
tesla_df$Trend[i] <- 'DOWN'
}
else{
tesla_df$Trend[i] <- 'NO'
}
}