# Gerekli Kütüphanele
##install.packages("readxl")
##install.packages("dplyr")
##install.packages("ggplot2")
##install.packages("lubridate")
##install.packages("purrr")
##install.packages("ggtext")
library(readxl)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(purrr)
library(ggtext)
tcmb_faiz_sozlugu <- data.frame(
Tarih_Text = c(
"22.06.2023", "20.07.2023", "24.08.2023", "21.09.2023",
"26.10.2023", "23.11.2023", "21.12.2023",
"25.01.2024", "22.02.2024", "21.03.2024",
"25.04.2024",
"23.05.2024", "27.06.2024", "23.07.2024", "20.08.2024", "19.09.2024", "17.10.2024",
"21.11.2024", "26.12.2024",
"23.01.2025", "06.03.2025", "17.04.2025",
"19.06.2025", "24.07.2025", "11.09.2025", "23.10.2025", "11.12.2025",
"22.01.2026", "12.03.2026","22.04.2026"
),
Eski_Faiz = c(
8.5, 15.0, 17.5, 25.0,
30.0, 35.0, 40.0, 42.5, 45.0, 45.0,
50.0, 50.0, 50.0, 50.0, 50.0, 50.0,
50.0, 50.0, 50.0, 47.5, 45.0, 42.5,
46.0, 46.0, 43.0, 40.5, 39.5, 38.0,
37.0, 37.0
),
Yeni_Faiz = c(
15.0, 17.5, 25.0, 30.0,
35.0, 40.0, 42.5, 45.0, 45.0, 50.0,
50.0, 50.0, 50.0, 50.0, 50.0, 50.0,
50.0, 50.0, 47.5, 45.0, 42.5, 46.0,
46.0, 43.0, 40.5, 39.5, 38.0, 37.0,
37.0, 37.0
)
) %>%
mutate(
# Tarih formatını R'ın anlayacağı şekle çeviriyoruz
Tarih = dmy(Tarih_Text),
# Grafiğin alt başlığına otomatik yazdırmak için etiket oluşturuyoruz
Aksiyon = paste0("%", Eski_Faiz, " -> %", Yeni_Faiz)
)
# Sonucu görelim
head(tcmb_faiz_sozlugu)
## Tarih_Text Eski_Faiz Yeni_Faiz Tarih Aksiyon
## 1 22.06.2023 8.5 15.0 2023-06-22 %8.5 -> %15
## 2 20.07.2023 15.0 17.5 2023-07-20 %15 -> %17.5
## 3 24.08.2023 17.5 25.0 2023-08-24 %17.5 -> %25
## 4 21.09.2023 25.0 30.0 2023-09-21 %25 -> %30
## 5 26.10.2023 30.0 35.0 2023-10-26 %30 -> %35
## 6 23.11.2023 35.0 40.0 2023-11-23 %35 -> %40
dosya_adi <- "C:/Users/incet/Desktop/xu100_reaction/ppk_karar_gunu_xu100_tepki_yeni.xlsx"
sekme_isimleri <- excel_sheets(dosya_adi)
# 2. GRAFIK MOTORU
grafik_motoru <- function(sekme) {
raw_veri <- read_excel(dosya_adi, sheet = sekme) %>%
select(1:2) %>%
setNames(c("Zaman_Text", "Fiyat_Text"))
analiz_verisi <- raw_veri %>%
mutate(
# Fiyati temizle
Fiyat = as.numeric(gsub(",", ".", Fiyat_Text)),
Zaman = parse_date_time(Zaman_Text, orders = c("ymd_HMS", "dmy_HMS", "ymd_HM", "dmy_HM")),
Tarih_Saf = as.Date(Zaman)
) %>%
# Hatali satirlari cikar
filter(!is.na(Zaman) & !is.na(Fiyat))%>%
arrange(Zaman)
gunun_tarihi <- analiz_verisi$Tarih_Saf[1]
faiz_bilgisi <- tcmb_faiz_sozlugu %>% filter(Tarih == gunun_tarihi)
alt_baslik <- if(nrow(faiz_bilgisi) > 0) paste("1 Haftalık Repo Faizi:" , faiz_bilgisi$Aksiyon[1]) else "Olay Penceresi (13:00 - 15:00)"
karar_ani <- ymd_hms(paste(gunun_tarihi, "14:00:00"))
p <- ggplot(analiz_verisi, aes(x = Zaman, y = Fiyat)) +
geom_ribbon(aes(ymin = min(Fiyat) * 0.998, ymax = Fiyat), fill = "#1A237E", alpha = 0.08) +
geom_line(color = "#1A237E", linewidth = 1.2,lineend = "round",linejoin = "round") +
geom_vline(xintercept = karar_ani, linetype = "dashed", color = "#D32F2F", linewidth = 1) +
annotate("text", x = karar_ani - minutes(45), y = max(analiz_verisi$Fiyat) * 1.001,
label = "Karar", color = "#D32F2F", fontface = "bold", hjust = 0) +
theme_minimal() +
labs(
title = paste("BIST 100 Reaksiyonu -", format(gunun_tarihi, "%d %b %Y")),
subtitle = alt_baslik,
x = "",
y = ""
) +
scale_x_datetime(date_labels = "%H:%M", date_breaks = "30 min") +
coord_cartesian(ylim = c(min(analiz_verisi$Fiyat) * 0.998, max(analiz_verisi$Fiyat) * 1.002)) +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(color = "#555555", face = "italic", size = 12),
axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.major = element_line(color = "gray90", linewidth = 0.5),
panel.grid.minor = element_blank(),
panel.background = element_rect(fill = "white", color = NA)
)
return(p)
}
# 3. BUTUN GRAFIKLERI CIZ
tum_grafikler <- map(sekme_isimleri, grafik_motoru)
tum_grafikler
## [[1]]

##
## [[2]]

##
## [[3]]

##
## [[4]]

##
## [[5]]

##
## [[6]]

##
## [[7]]

##
## [[8]]

##
## [[9]]

##
## [[10]]

##
## [[11]]

##
## [[12]]

##
## [[13]]

##
## [[14]]

##
## [[15]]

##
## [[16]]

##
## [[17]]

##
## [[18]]

##
## [[19]]

##
## [[20]]

##
## [[21]]

##
## [[22]]

##
## [[23]]

##
## [[24]]

##
## [[25]]

##
## [[26]]

##
## [[27]]

##
## [[28]]

##
## [[29]]

##
## [[30]]
