SDC

  • Menü
    • Teknik Analiz
    • BorsaPin
    • Bitmeyen Senfoni
    • Halet-i Ruhiye
    • Anlık Tepkiler
    • Teknoloji
    • Karma Karışık
  • Hakkında
  • İletişim
  • BorsaPin
  • Home
  • Menü
    • Teknik Analiz
    • BorsaPin
    • Bitmeyen Senfoni
    • Halet-i Ruhiye
    • Anlık Tepkiler
    • Teknoloji
    • Karma Karışık
  • Hakkında
  • İletişim
  • BorsaPin

Code Is Prority 6

Kod gösterimleri ile ilgili sıkıntı

11 Ağustos 2025 BorsaPin, Code is prority, İndikatör, Pine Script, Python, Teknik Analiz



Paylaştığım kodlarda sıkıntı yaşarsanız Google Drive Alanından indirmeniz daha iyi olur. Sitedeki kod gösterici eklentide ufak bir problem vardı. Bu sorunu başka bir plugingle çözdüm ve yazıların bir çoğunu güncelledim ama gözden kaçan düzenlenmemiş Python betiği yada Trading View Pine Script kodlarında sıkıntı olabilir.
Eğer sorun yaşarsanız yazının altına yorum yazarsanız tekrar gözden geçiririm. 


Borsapin Python Bist Tarama  ve Trading View Pine Script İndikatörleri için Google Drive alanı için buraya tıklayabilirsiniz.

 

Python ile Borsa İstanbul (BIST) Hisse Kapanış Verisi Çekme

01 Ağustos 2025 BorsaPin, Code is prority, PythonBIST hisse senedi verisi, BIST verisi otomatik çekme, borsa analiz otomasyonu, Excel'e hisse senedi yazdırma, pandas excel kaydetme, Python hisse senedi analizi, Python ile BIST verisi çekme, Python kapanış verisi indir, Python teknik analiz hazırlığı, yfinance Borsa İstanbul, yfinance Türk hisseleri

Finansal analiz ve algoritmik işlem geliştirmek isteyen herkesin ilk adımı, güvenilir hisse senedi kapanış verilerini elde etmektir. Bu veriler, teknik analizden sinyal üretimine kadar pek çok işlemin temelini oluşturur. Elinizdeki veriler ne kadar doğru ve güncelse, analizleriniz de o kadar isabetli olur.

Python ve yfinance kütüphanesi kullanılarak oluşturulmuş, Borsa İstanbul (BIST) hisselerine ait kapanış verilerini otomatik olarak indiren gelişmiş bir scripti detaylıca ele alacağız. Script, .xlsx formatında çıktılar üreterek analizlerinize doğrudan entegre edilebilir veriler sunar.

Kodun Amacı Nedir?

hisselistesi_txt.txt adlı dosyadan hisse senedi sembollerini okumak
Yahoo Finance üzerinden kapanış verilerini çekmek (yfinance)
Verileri işleyip Excel’e kaydetmek (pandas ve openpyxl)
Başarısız işlemleri tespit edip yeniden denemek
Kullanıcıya görsel ve metinsel özet rapor sunmak

Script’in öne çıkan teknik özellikler

Otomatik Hisse Formatlama
Yahoo Finance üzerinde işlem gören BIST hisseleri .IS uzantısına sahiptir.
Örneğin THYAO → THYAO.IS formatına otomatik olarak dönüştürülür.

Yeniden Deneme Mekanizması
Veri çekimi sırasında yaşanan geçici sorunlar için belirli aralıklarla otomatik yeniden deneme yapılır (max_retries, retry_delay).

 Excel Kaydı ve Türkçe Sütunlar
Çekilen veriler şu sütunlar ile .xlsx dosyasına kaydedilir:

Tarih  Açılış Yüksek Düşük Kapanış Hacim

Eksik Veri ve NaN Temizliği
İndirilen verilerdeki eksik veya bozuk kayıtlar otomatik olarak temizlenir. Bu sayede daha sağlıklı analizler yapılabilir.

Kullanıcı Dostu Konsol Çıktıları
colorama kütüphanesi sayesinde kullanıcıya renkli ve bilgilendirici çıktılar sunulur (örn. yeşil = başarı, kırmızı = hata).

Klasör Yapısı ve Çıktı
Kaydedilen dosyalar StokData/Kapanis/ klasörü altında saklanır. Her hisse senedi için ayrı bir Excel dosyası oluşturulur:
StokData/Kapanis/THYAO.xlsx gibi.

Kullanım Adımları
hisselistesi_txt.txt dosyasına BIST hisse sembollerini yazın (her satıra bir hisse, örn. AKBNK).
Temeli sağlam şirketleri listeleyebilirsiniz. Ya da belirli sektör yada endeks şirketlerin sembollerini de yazabilirsiniz. (XU100, XU030)

Scripti çalıştırdığınızda

Kapanış verileri indirilecek, işlenecek ve .xlsx olarak kaydedilecektir. Başarısız olan hisseler için sistem size yeniden deneme opsiyonu sunacaktır. Süreç sonunda konsolda özet rapor gösterilecektir.

Örnek Konsol Çıktısı

Veri çekiliyor: AKBNK (Deneme 1/3)…
✅ AKBNK verisi başarıyla kaydedildi.

Veri çekiliyor: THYAO (Deneme 1/3)…
❌ THYAO için hata (Deneme 1): Connection timed out.
⏳ 2 saniye bekleniyor…
…
===== ÖZET RAPOR =====
✅ Başarılı: 18
❌ Başarısız: 2
Başarı oranı: 90.0%
Başarısız hisseler: THYAO, TAVHL
Sonraki Adım

X_01_BorsaPin_StokData.py olarak kayıt edebilirsiniz.
Pyhon Kodumuz

import yfinance as yf
import os
import pandas as pd
from datetime import datetime, timedelta
from colorama import Fore, init
import time
from typing import List, Optional

"""
      Borsapin StokData Yahoo Finans Üzerinden Kapanış Datalarını çekmeye yarar
      www.kursatsenturk.com

      """
init(autoreset=True)


class StockDownloader:
    def __init__(self, max_retries: int = 3, retry_delay: int = 2):
        """
        Hisse senedi veri indirici sınıfı

        Args:
            max_retries: Maksimum yeniden deneme sayısı
            retry_delay: Denemeler arası bekleme süresi (saniye)
        """
        self.max_retries = max_retries
        self.retry_delay = retry_delay
        self.failed_tickers: List[str] = []
        self.successful_tickers: List[str] = []

    @staticmethod
    def read_tickers(file_path: str) -> List[str]:
        """Hisse kodlarını dosyadan okuma fonksiyonu"""
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                tickers = [line.strip() for line in f.readlines() if line.strip()]
            return tickers
        except FileNotFoundError:
            print(f"{Fore.RED}❌ {file_path} dosyası bulunamadı!")
            return []
        except Exception as e:
            print(f"{Fore.RED}❌ Dosya okuma hatası: {e}")
            return []

    @staticmethod
    def format_ticker(ticker: str) -> str:
        """Hisse sembolüne .IS eklemek"""
        if not ticker.endswith('.IS'):
            ticker = ticker + '.IS'
        return ticker

    @staticmethod
    def save_to_excel(data: pd.DataFrame, file_path: str) -> bool:
        """Veriyi Excel'e kaydetme fonksiyonu"""
        try:
            data.to_excel(file_path, index=False)
            return True
        except Exception as e:
            print(f"{Fore.RED}❌ Excel kaydetme hatası: {e}")
            return False

    def download_single_ticker(self, ticker: str, start_date: str, end_date: str, attempt: int = 1) -> bool:
        """Tek hisse için veri çekme fonksiyonu"""
        formatted_ticker = self.format_ticker(ticker)
        ticker_name = formatted_ticker.replace(".IS", "")

        print(f"{Fore.YELLOW} Veri çekiliyor: {ticker_name} (Deneme {attempt}/{self.max_retries})...")

        try:
            # Veri çekme
            stock_data = yf.download(
                formatted_ticker,
                start=start_date,
                end=end_date,
                progress=False,
                timeout=30,
                auto_adjust=True,  # Uyarıyı önlemek için explicit olarak True
                prepost=True,
                threads=True
            )

            if stock_data is None or stock_data.empty:
                raise ValueError("Veri boş veya None")

            # MultiIndex sütunlarını düzelt
            if isinstance(stock_data.columns, pd.MultiIndex):
                # MultiIndex'i tek seviyeye indir
                stock_data.columns = stock_data.columns.droplevel(1)

            # Sütun isimlerini temizle
            stock_data.columns = [str(col).strip() for col in stock_data.columns]

            # Veri işleme - sadece gerekli sütunları al
            required_columns = ['Open', 'High', 'Low', 'Close', 'Volume']
            available_columns = [col for col in required_columns if col in stock_data.columns]

            if not available_columns:
                raise ValueError("Gerekli sütunlar bulunamadı")

            stock_data = stock_data[available_columns]

            # Sayıları düzgün formatta işleme
            for column in stock_data.columns:
                if stock_data[column].dtype == 'object':
                    try:
                        stock_data[column] = pd.to_numeric(
                            stock_data[column].astype(str).str.replace(',', '.'),
                            errors='coerce'
                        )
                    except Exception:
                        continue

            # NaN değerleri temizle
            stock_data = stock_data.dropna()

            # Boş veri kontrolü
            if stock_data.empty:
                raise ValueError("İşlenen veri boş")

            # Dosya kaydetme
            folder_path = "StokData/Kapanis/"
            os.makedirs(folder_path, exist_ok=True)
            file_path = os.path.join(folder_path, f"{ticker_name}.xlsx")

            # Tarih formatı düzenleme
            stock_data_copy = stock_data.copy()

            # Index'i reset et ve tarih sütununu ekle
            stock_data_copy.reset_index(inplace=True)

            # Tarih sütunu varsa formatla
            if 'Date' in stock_data_copy.columns:
                stock_data_copy['Date'] = pd.to_datetime(stock_data_copy['Date']).dt.date
                stock_data_copy.rename(columns={"Date": "Tarih"}, inplace=True)

            # Sütun isimlerini Türkçeye çevirme
            column_mapping = {
                'Open': 'Açılış',
                'High': 'Yüksek',
                'Low': 'Düşük',
                'Close': 'Kapanış',
                'Volume': 'Hacim'
            }

            # Mevcut sütunları yeniden adlandır
            for eng_name, tr_name in column_mapping.items():
                if eng_name in stock_data_copy.columns:
                    stock_data_copy.rename(columns={eng_name: tr_name}, inplace=True)

            # Kaydetme
            if self.save_to_excel(stock_data_copy, file_path):
                print(f"{Fore.GREEN}✅ {ticker_name} verisi başarıyla kaydedildi.")
                return True
            else:
                raise Exception("Excel kaydetme başarısız")

        except Exception as e:
            print(f"{Fore.RED}❌ {ticker_name} için hata (Deneme {attempt}): {str(e)}")
            return False

    def download_with_retry(self, ticker: str, start_date: str, end_date: str) -> bool:
        """Yeniden deneme mekanizması ile veri çekme"""
        for attempt in range(1, self.max_retries + 1):
            if self.download_single_ticker(ticker, start_date, end_date, attempt):
                self.successful_tickers.append(ticker)
                return True

            if attempt < self.max_retries:
                print(f"{Fore.YELLOW}⏳ {self.retry_delay} saniye bekleniyor...")
                time.sleep(self.retry_delay)

        # Tüm denemeler başarısız
        self.failed_tickers.append(ticker)
        print(f"{Fore.RED} {ticker} için tüm denemeler başarısız!")
        return False

    def retry_failed_tickers(self, start_date: str, end_date: str) -> None:
        """Başarısız hisseleri tekrar deneme"""
        if not self.failed_tickers:
            print(f"{Fore.GREEN} Yeniden denenecek hisse yok!")
            return

        print(f"\n{Fore.CYAN} Başarısız {len(self.failed_tickers)} hisse tekrar deneniyor...")
        print(f"{Fore.CYAN}Başarısız hisseler: {', '.join(self.failed_tickers)}")

        retry_failed = []
        retry_successful = []

        # Başarısız hisselerin kopyasını al
        failed_copy = self.failed_tickers.copy()

        for ticker in failed_copy:
            print(f"\n{Fore.MAGENTA} Tekrar deneniyor: {ticker}")

            if self.download_with_retry(ticker, start_date, end_date):
                retry_successful.append(ticker)
                self.failed_tickers.remove(ticker)
            else:
                retry_failed.append(ticker)

        # Sonuçları yazdır
        if retry_successful:
            print(f"\n{Fore.GREEN}✅ Tekrar denemede başarılı: {', '.join(retry_successful)}")

        if retry_failed:
            print(f"\n{Fore.RED}❌ Hala başarısız: {', '.join(retry_failed)}")

    def save_failed_list(self, filename: str = "basarisiz_hisseler.txt") -> None:
        """Başarısız hisseleri dosyaya kaydet"""
        if self.failed_tickers:
            try:
                with open(filename, 'w', encoding='utf-8') as f:
                    f.write('\n'.join(self.failed_tickers))
                print(f"{Fore.YELLOW} Başarısız hisseler {filename} dosyasına kaydedildi.")
            except Exception as e:
                print(f"{Fore.RED}❌ Başarısız hisse listesi kaydetme hatası: {e}")

    def print_summary(self) -> None:
        """Özet rapor yazdır"""
        total = len(self.successful_tickers) + len(self.failed_tickers)
        success_rate = (len(self.successful_tickers) / total * 100) if total > 0 else 0

        print(f"\n{Fore.CYAN} ===== ÖZET RAPOR =====")
        print(f"{Fore.GREEN}✅ Başarılı: {len(self.successful_tickers)}")
        print(f"{Fore.RED}❌ Başarısız: {len(self.failed_tickers)}")
        print(f"{Fore.BLUE} Başarı oranı: {success_rate:.1f}%")

        if self.failed_tickers:
            print(f"{Fore.RED} Başarısız hisseler: {', '.join(self.failed_tickers)}")

    def main(self) -> None:
        """Ana fonksiyon"""
        print(f"{Fore.CYAN} Veri çekme başlıyor...")

        # Parametreler
        tickers = self.read_tickers("hisselistesi_txt.txt")
        if not tickers:
            print(f"{Fore.RED}❌ Hisse listesi okunamadı, işlem sonlandırılıyor.")
            return

        start_date = '2020-01-01'
        end_date = (datetime.today() + timedelta(days=1)).strftime('%Y-%m-%d')

        print(f"{Fore.BLUE} Tarih aralığı: {start_date} - {end_date}")
        print(f"{Fore.BLUE} Toplam hisse sayısı: {len(tickers)}")
        print(f"{Fore.BLUE} Maksimum deneme sayısı: {self.max_retries}")
        print(f"{Fore.BLUE}⏱️ Deneme arası bekleme: {self.retry_delay} saniye\n")

        # İlk deneme
        for i, ticker in enumerate(tickers, 1):
            print(f"\n{Fore.BLUE}[{i}/{len(tickers)}] İşleniyor...")
            self.download_with_retry(ticker, start_date, end_date)

        # Başarısız hisseleri tekrar deneme
        if self.failed_tickers:
            user_input = input(
                f"\n{Fore.YELLOW}❓ Başarısız {len(self.failed_tickers)} hisseyi tekrar denemek istiyor musunuz? (e/h): "
            ).lower().strip()

            if user_input in ['e', 'evet', 'y', 'yes']:
                self.retry_failed_tickers(start_date, end_date)

        # Sonuçları kaydet ve yazdır
        self.save_failed_list()
        self.print_summary()

        print(f"\n{Fore.GREEN} İşlem tamamlandı!")


# Kullanım
if __name__ == "__main__":
    # Özelleştirilebilir parametreler
    downloader = StockDownloader(
        max_retries=3,  # Maksimum deneme sayısı
        retry_delay=2  # Denemeler arası bekleme süresi (saniye)
    )

    downloader.main()

 

Bu script, ileri seviye analizlerin temelini oluşturur. Bir sonraki yazımızda, bu verileri kullanarak:

5 8 13 21 34 55 89 144 233 370  EMA  seviyelerini hesaplayan  EMAs script yayınlayacağım.

Ve yatırım kararları için Python tabanlı teknik analiz sistemleri geliştirmeye devam edeceğiz.

Python ve PyCharm Kurulumu: Başlangıç Rehberi

01 Ağustos 2025 Code is prority, Python, Teknik AnalizBIST hisse verileri, Borsa analiz, Ema Alignment, EMA hesaplama, Excel borsa analiz, hisse senedi analizi, lineer regresyon kanalı, osilatör analizi, otomatik hisse tarama, Pearson korelasyonu, PyCharm, PyCharm kurulumu, Python, Python başlangıç rehberi, Python borsa verisi çekme, Python Excel çıktısı, Python kurulumu, teknik analiz Python, wave trend sinyali, Yahoo Finance Python

Python, günümüzün en popüler programlama dillerinden biridir. Veri bilimi, yapay zeka, web geliştirme, otomasyon ve daha birçok alanda yaygın olarak kullanılır. Bu makalede, Python’u bilgisayarınıza nasıl kuracağınızı ve PyCharm adlı güçlü bir geliştirme ortamını (IDE) nasıl kullanmaya başlayacağınızı adım adım öğreneceksiniz.

Python Nedir?
Python, okunabilirliği yüksek, öğrenmesi kolay ve güçlü bir programlama dilidir. Açık kaynaklıdır ve çok geniş bir kullanıcı topluluğuna sahiptir.

Python Kurulumu

Adım 1: Python Web Sitesine Gidin
Tarayıcınızda https://www.python.org adresine gidin.

Adım 2: Python Sürümünü İndirin

Ana sayfadaki “Download Python X.X.X” (örneğin 3.13.5) butonuna tıklayın. İşletim sisteminiz otomatik olarak algılanır (Windows, macOS veya Linux).

Adım 3: Kurulum Dosyasını Çalıştırın

İndirilen .exe dosyasını çalıştırın.

Kurulum ekranında mutlaka “Add Python to PATH” seçeneğini işaretleyin.

Ardından “Install Now” seçeneğine tıklayın.

Adım 4: Kurulumu Doğrulayın

Başlat Menüsü > Komut İstemi’ni (cmd) açın ve şu komutu yazın:

python –version
Python sürümünüzün yazıldığını görüyorsanız kurulum başarılıdır.

PyCharm Kurulumu

PyCharm Nedir?

PyCharm, Python için özel olarak geliştirilmiş bir IDE’dir. Kod yazmayı, çalıştırmayı, hata ayıklamayı ve projeleri yönetmeyi kolaylaştırır.

Adım 1: PyCharm Web Sitesine Gidin

https://www.jetbrains.com/pycharm adresini ziyaret edin.

Adım 2: Sürüm Seçimi

İki farklı sürüm vardır:

Community (Ücretsiz) – Başlangıç için yeterlidir.

Professional (Ücretli) – Web geliştirme, veri bilimi gibi ek özellikler içerir.

Community Edition’ı indirin.

Adım 3: Kurulumu Başlatın

İndirilen kurulum dosyasını açın ve yönergeleri takip ederek PyCharm’ı kurun.

Kurulum sırasında aşağıdaki seçenekleri işaretleyebilirsiniz:

64-bit launcher ekle

.py dosyalarını PyCharm ile ilişkilendirin

Adım 4: İlk Çalıştırma

Kurulum tamamlandıktan sonra PyCharm’ı başlatın ve tema (açık/koyu) gibi başlangıç ayarlarını yapın.

İlk Python Projeni Oluşturma

PyCharm’ı açın ve “New Project” seçeneğini seçin.

Projeye bir ad verin (örneğin: ilk_proje).

Python interpreter (yürütücü) olarak daha önce kurduğunuz Python sürümünü seçin.  (Mesela venv)

main.py adlı bir dosya oluşturun ve şu kodu yazın:

python

print(“Merhaba, Python dünyası!”)

Sağ üstteki yeşil “Run” (Çalıştır) butonuna tıklayarak kodunuzu çalıştırın.

Ek Tavsiyeler

PyCharm kısayollarına zamanla alışmak size büyük hız kazandırır.
Terminal kullanarak pip komutu ile paketler kurabilirsiniz.

Örneğin: pip install numpy
Virtual environment (sanallaştırılmış çalışma ortamı) kullanmak projelerinizi izole tutar ve karışıklığı önler.

Bir Sonraki Adımda Neler Var?

İzleyen makalelerde, Python kullanarak Yahoo Finance üzerinden BIST Spot hisse senetlerinin kapanış verilerini nasıl çekeceğimizi adım adım öğreneceğiz. Elde ettiğimiz bu verileri Excel formatında kaydederek, şu analizleri gerçekleştireceğiz:

Farklı periyotlara göre EMA (Üssel Hareketli Ortalama) hesaplamaları

Osilatör ve momentum göstergeleri

EMA Alignment analizi (ideal dizilim ve sapma durumları)

WaveTrend tabanlı sinyal üretimi

Belirli periyotlarda Doğrusal Regresyon (Linear Regression Channel) hesaplamaları

Her hisse için bu analizlerin Pearson korelasyon katsayısı ile değerlendirilmesi

Tüm bu analiz sonuçlarını Python ile  tasarlanmış Excel şablonlarına aktararak, hisse senetlerinin teknik durumlarını görsel olarak kolayca takip edebileceğiniz tarama dosyaları oluşturabileceksiniz.

Pine Script ile Günlük, Haftalık, Aylık ve Yıllık Pivot Noktaları Gösteren Gelişmiş Tablo İndikatörü

27 Temmuz 2025 BorsaPin, Code is prority, İndikatör, Pine Scriptgüncel destek direnç seviyeleri, klasik fibonacci woodie pivot hesaplama, pine script ile pivot indikatörü, pivot noktaları nasıl hesaplanır, teknik analiz destek direnç tablosu, tradingview pivot destek direnç göstergesi

 

Pivot noktaları, teknik analizde sıklıkla kullanılan ve bir varlığın olası destek ve direnç seviyelerini belirlemek için kullanılan matematiksel seviyelerdir. Bu seviyeler, yatırımcılara alım-satım kararlarında yardımcı olan önemli araçlardan biridir.

TradingView platformu üzerinde Pine Script ile geliştirilen ve grafik üzerinde çizim yapmadan sadece tablo formatında çalışan gelişmiş bir pivot analiz aracını tanıtacağız. Ayrıca kullanıcıların tercihlerine göre Klasik, Fibonacci veya Woodie pivot yöntemlerinden birini seçerek analiz yapabilmesi mümkün olacak. Youtubeda ki bir çok yayıncının yaptığı gibi bilgiyi para karşılığı satan bir zihniyette olmadığım için ücretsiz bir şekilde yararlanabilirsiniz.

İndikatörün Özellikleri

Zaman Dilimi Seçimi: Günlük, Haftalık, Aylık ve Yıllık pivot seviyeleri hesaplanır.

Yöntem Seçimi: Kullanıcı, Klasik, Fibonacci veya Woodie hesaplama yöntemlerinden birini tercih edebilir.

Tablo Üzerinden Görselleştirme: Pivot, 3 destek ve 3 direnç seviyesi; ilgili zaman dilimi ve yönteme göre tablo halinde görüntülenir.

Kapanış Bekleme Opsiyonu: Haftalık, aylık ve yıllık mum kapanışları henüz gerçekleşmediyse, bir önceki dönemin verileri kullanılır. Ancak kullanıcı, ayarlardan  Güncel veriyi kullanmak isterse bu seçeneği  pasifleştirerek o anki mum verileriyle hesaplama yapabilir.

Pivot Noktaları Nasıl Hesaplanır?

1. Klasik Pivot (Classic Pivot)

P = (High + Low + Close) / 3
R1 = (2 * P) – Low
S1 = (2 * P) – High
R2 = P + (High – Low)
S2 = P – (High – Low)
R3 = High + 2*(P – Low)
S3 = Low – 2*(High – P)

2. Fibonacci Pivot

P = (High + Low + Close) / 3
R1 = P + 0.382 * (High – Low)
R2 = P + 0.618 * (High – Low)
R3 = P + 1.000 * (High – Low)
S1 = P – 0.382 * (High – Low)
S2 = P – 0.618 * (High – Low)
S3 = P – 1.000 * (High – Low)

3. Woodie Pivot

P = (High + Low + 2 * Close) / 4
R1 = (2 * P) – Low
S1 = (2 * P) – High
R2 = P + (High – Low)
S2 = P – (High – Low)
R3 = High + 2*(P – Low)
S3 = Low – 2*(High – P)

Kullanım Şekli

TradingView’de yeni bir Pine Script oluşturun.

Kodunuzu yapıştırarak çalıştırın.

İndikatör, grafikte herhangi bir çizim yapmaz. Ancak ekranın sağ üst köşesinde pivot değerlerini detaylı bir şekilde gösteren bir tablo oluşturur.

Ayarlar kısmından:

Pivot türünü (Classic, Fibonacci, Woodie)

Zaman dilimini (Günlük, Haftalık , Aylık, Yıllık)

Text uzantılı dosya olarak indirmek isterseniz buraya tıklayın.

Trading View Günlük haftalık Aylık Yıllık PivotTablo Pine Script Kodu

// Bu, Pine Script™ kodu Mozilla Kamu Lisansı 2.0 (MPL-2.0) altında lisanslandı
// © krstsntrk © BorsaPin code is priority
//@version=5
indicator(title = 'BorsaPin Pivot Sistem', shorttitle = 'BorsaPin Pivot Sistem', overlay = true)

// === Kullanıcı Ayarları ===
pivotType = input.string("Woodie", title="Pivot Tipi", options=["Classic", "Fibonacci", "Woodie"])
useCurrentBar = input.bool(true, title="Kapanış Bekleme Opsiyonu (Açık mum yerine önceki kapanışı kullanır.)")
showDaily = input.bool(true, title="Günlük Pivot Göster")
showWeekly = input.bool(true, title="Haftalık Pivot Göster")
showMonthly = input.bool(true, title="Aylık Pivot Göster")
showYearly = input.bool(true, title="Yıllık Pivot Göster")

// === Zaman Aralığına Göre High/Low/Close ===
getHigh(_tf) => useCurrentBar ? request.security(syminfo.tickerid, _tf, high) : request.security(syminfo.tickerid, _tf, high[1])
getLow(_tf) => useCurrentBar ? request.security(syminfo.tickerid, _tf, low) : request.security(syminfo.tickerid, _tf, low[1])
getClose(_tf) => useCurrentBar ? request.security(syminfo.tickerid, _tf, close) : request.security(syminfo.tickerid, _tf, close[1])

// === Pivot Hesaplayıcı Fonksiyon ===
calcPivots(high_, low_, close_, _type) =>
    pivot = 0.0
    r1 = 0.0
    r2 = 0.0
    r3 = 0.0
    s1 = 0.0
    s2 = 0.0
    s3 = 0.0

    if _type == "Classic"
        pivot := (high_ + low_ + close_) / 3
        r1 := 2 * pivot - low_
        s1 := 2 * pivot - high_
        r2 := pivot + (high_ - low_)
        s2 := pivot - (high_ - low_)
        r3 := high_ + 2 * (pivot - low_)
        s3 := low_ - 2 * (high_ - pivot)

    else if _type == "Fibonacci"
        pivot := (high_ + low_ + close_) / 3
        r1 := pivot + 0.382 * (high_ - low_)
        r2 := pivot + 0.618 * (high_ - low_)
        r3 := pivot + 1.000 * (high_ - low_)
        s1 := pivot - 0.382 * (high_ - low_)
        s2 := pivot - 0.618 * (high_ - low_)
        s3 := pivot - 1.000 * (high_ - low_)

    else if _type == "Woodie"
        pivot := (high_ + low_ + 2 * close_) / 4
        r1 := (2 * pivot) - low_
        s1 := (2 * pivot) - high_
        r2 := pivot + (high_ - low_)
        s2 := pivot - (high_ - low_)
        r3 := high_ + 2 * (pivot - low_)
        s3 := low_ - 2 * (high_ - pivot)

    [pivot, r1, r2, r3, s1, s2, s3]

// === Her Zaman Dilimi İçin High / Low / Close Al ===
dH = getHigh("D")
dL = getLow("D")
dC = getClose("D")

wH = getHigh("W")
wL = getLow("W")
wC = getClose("W")

mH = getHigh("M")
mL = getLow("M")
mC = getClose("M")

yH = getHigh("12M")
yL = getLow("12M")
yC = getClose("12M")

// === Pivotları Hesapla ===
[dP, dR1, dR2, dR3, dS1, dS2, dS3] = calcPivots(dH, dL, dC, pivotType)
[wP, wR1, wR2, wR3, wS1, wS2, wS3] = calcPivots(wH, wL, wC, pivotType)
[mP, mR1, mR2, mR3, mS1, mS2, mS3] = calcPivots(mH, mL, mC, pivotType)
[yP, yR1, yR2, yR3, yS1, yS2, yS3] = calcPivots(yH, yL, yC, pivotType)

// === Tablo Oluştur ===
var table pivotTable = table.new(position.top_right, 8, 20, border_width=1)

// === Başlıklar ===
if bar_index % 10 == 0
    table.cell(pivotTable, 0, 0, "Zaman", text_color=color.black, bgcolor=color.gray)
    table.cell(pivotTable, 1, 0, "P", text_color=color.navy)
    table.cell(pivotTable, 2, 0, "R1", text_color=color.lime)
    table.cell(pivotTable, 3, 0, "R2", text_color=color.lime)
    table.cell(pivotTable, 4, 0, "R3", text_color=color.lime)
    table.cell(pivotTable, 5, 0, "S1", text_color=color.red)
    table.cell(pivotTable, 6, 0, "S2", text_color=color.red)
    table.cell(pivotTable, 7, 0, "S3", text_color=color.red)

// === Veri Satırı Ekleme Fonksiyonu ===
addRow(idx, label, p, r1, r2, r3, s1, s2, s3) =>
    table.cell(pivotTable, 0, idx, label, text_color=color.black)
    table.cell(pivotTable, 1, idx, str.tostring(p, format.mintick))
    table.cell(pivotTable, 2, idx, str.tostring(r1, format.mintick))
    table.cell(pivotTable, 3, idx, str.tostring(r2, format.mintick))
    table.cell(pivotTable, 4, idx, str.tostring(r3, format.mintick))
    table.cell(pivotTable, 5, idx, str.tostring(s1, format.mintick))
    table.cell(pivotTable, 6, idx, str.tostring(s2, format.mintick))
    table.cell(pivotTable, 7, idx, str.tostring(s3, format.mintick))

// === Tabloda Göster ===
row = 1
if showDaily
    addRow(row, "Günlük", dP, dR1, dR2, dR3, dS1, dS2, dS3)
    row += 1
if showWeekly
    addRow(row, "Haftalık", wP, wR1, wR2, wR3, wS1, wS2, wS3)
    row += 1
if showMonthly
    addRow(row, "Aylık", mP, mR1, mR2, mR3, mS1, mS2, mS3)
    row += 1
if showYearly
    addRow(row, "Yıllık", yP, yR1, yR2, yR3, yS1, yS2, yS3)

 

Finansal Piyasalarda Teknik Analizde kullanılan İdeal EMA Up, Nötr ve Down (Ema Alignment)

09 Temmuz 2025 BorsaPin, Code is prority, Pine Script, Teknik Analiz, Trading ViewEma Alignment, İdeal Ema Down, İdeal Ema Nötr, İdeal Ema Up, Pine Script, Python, Teknik Analiz, Trading View
Ema Alignment İdeal Ema Giriş

Teknik analiz, yatırımcıların geçmiş fiyat hareketlerinden yola çıkarak gelecekteki fiyatları tahmin etmelerine yardımcı olan güçlü bir araçtır. Bu analiz türünde sıkça kullanılan araçlardan biri de Üssel Hareketli Ortalama (EMA – Exponential Moving Average) göstergesidir.

EMA, son fiyat verilerine daha fazla ağırlık vererek trendi daha hassas şekilde yansıtır. Ancak tek başına bir EMA değeri yeterli olmayabilir. Bu nedenle, yatırımcılar farklı periyotlardaki EMA’ları kullanarak “EMA Up”, “EMA Nötr” ve “EMA Down” gibi trend yönlerini belirlemeye çalışır. Bu yazıda bu üç kavramı derinlemesine inceleyeceğiz.
EMA Nedir?
EMA, belirli bir dönem boyunca fiyatların ağırlıklı ortalamasını alır. Ağırlık, son verilere daha fazla verildiği için EMA, trend değişimlerine daha hızlı tepki verir.

EMA’nın Özellikleri:

  • Son fiyatlara daha fazla duyarlıdır.
  • Trend takibinde kullanılır.
  • Fiyatın EMA’nın üzerinde veya altında olması yön tayini için önemlidir.


EMA Periyotları

Genelde kullanılan EMA periyotları:

Kısa Vadeli EMA’lar: 5, 8, 13

Orta Vadeli EMA’lar: 21, 34

Uzun Vadeli EMA’lar: 55, 100, 200

Genişletmek gerekirse 5, 8 ,9, 13, 21, 34, 55, 89, 100, 144, 200, 233, 370, 610, 987 diye uzatılabilir

Kısa vade fiyat momentumunu gösterirken, uzun vadeli EMA’lar trendin yönünü anlamaya yardımcı olur.

İdeal EMA Formasyonları

1.  EMA Up (Yükseliş Formasyonu)
Tanım: EMA Up durumu, kısa vadeli EMA’ların uzun vadeli EMA’ların üzerinde sıralandığı, tüm EMA’ların yukarı doğru eğimli olduğu bir trend yapısıdır.
Teknik Şartlar:
Kapanış Fiyatı > EMA(5) > EMA(8) > EMA(13) > EMA(21) > EMA(34) > EMA(55) > EMA(100) > EMA(200)

Hepsinin eğimi pozitiftir (yukarı yönlü).

Fiyat genellikle en kısa EMA’nın (örneğin EMA5) üstünde kalır.

Anlamı:
Güçlü ve sağlıklı bir yükseliş trendi vardır.

Alım sinyali olarak değerlendirilir.  (daha&helliip;)

Hareketli Ortalamalar: Teknik Analizin Omurgası

09 Ocak 2023 BorsaPin, Code is prority, Pine Script, Teknik Analiz, Trading ViewAlgo Trade, Ema, Pine Script, Trading View

Finansal piyasalarda işlem yapan yatırımcılar için fiyat hareketlerini anlamak çoğu zaman zorlayıcıdır. İşte bu noktada hareketli ortalamalar (Moving Averages) devreye girer. Fiyat verilerini düzleştirerek trendleri daha anlaşılır hale getirir ve yatırımcılara yol gösterici olur.

Bu makalede, hareketli ortalamaların tanımını, çeşitlerini, avantajlarını ve teknik analizde nasıl kullanılmaları gerektiğini tüm detaylarıyla ele alacağız. (daha&helliip;)

Etiketler
Teknik AnalizaşkPythonhisse senedi analiziEma AlignmentÜstel Hareketli OrtalamaPine Scripthayattrend analizipivotEmaallahalgoritmik tradingtrend takibiyatırım stratejisiBorsaPinotomatik analizpiyasa momentumuyatırım stratejileriborsa eğitimifinansal analizborsa stratejileriborsaPython ile BIST verisi çekmePython teknik analizPython borsa analiziPearson korelasyonuStop-Lossİdeal EmadirençdestekFibonacciİdeal Ema UpTrading ViewCem Sultansonbaharmuhsin yazıcıoğlukehanetözlemhayalmasalatatürkistanbulfiravunPhp Melody
Arşiv
  • Ağustos 2025
  • Temmuz 2025
  • Nisan 2025
  • Şubat 2025
  • Ocak 2025
  • Kasım 2024
  • Ekim 2024
  • Temmuz 2024
  • Mart 2024
  • Ocak 2023
  • Ağustos 2018
  • Temmuz 2016
  • Kasım 2015
  • Kasım 2014
  • Aralık 2013
  • Eylül 2013
  • Kasım 2012
  • Ekim 2012
  • Haziran 2011
  • Mart 2011
  • Şubat 2011
  • Ocak 2011
  • Aralık 2010
  • Kasım 2010
  • Eylül 2010
  • Ağustos 2010
  • Temmuz 2010
  • Haziran 2010
  • Mayıs 2010
  • Nisan 2010
  • Mart 2010
  • Şubat 2010
  • Ocak 2010
  • Aralık 2009
  • Kasım 2009
  • Ekim 2009
  • Eylül 2009
  • Ağustos 2009
  • Temmuz 2009
  • Haziran 2009
  • Mayıs 2009
  • Nisan 2009
  • Mart 2009
  • Şubat 2009
  • Ocak 2009
  • Aralık 2008
  • Kasım 2008
Sponsor Bağlantılar
Kategoriler
  • Anlık Tepkiler
  • Bilinçaltı Sayıklamaları
  • Bitmeyen Senfoni
  • Blog
  • BorsaPin
  • Bu nedir ?
  • Code is prority
  • Halet-i Ruhiye
  • İndikatör
  • Karma Karışık
  • Pine Script
  • Python
  • Teknik Analiz
  • Teknoloji
  • Trading View
  • Wordpress
  • Telegram
  • YouTube
Son Yorumlar
  • PHP Mobil Cihazları yönlendirme için Azmi Güneş
  • Son bir hatıra için sdc
  • Arkadaşlık siteleri ve Tuzakları için can
  • Windows 7’de EasyPHP kurulumu (resimli anlatım) için mustafa
  • Bir daha sorgulayın kendinizi.. için Abdullah Çağrı ELGÜN


Borsapin Proje Google Drive

Sponsor Bağlantılar
Sponsor Bağlantılar
.

.

.

.

2025 © SDC