English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Bollinger Bands göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?

Bollinger Bands göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?

MetaTrader 5Ticaret | 28 Haziran 2022, 09:44
297 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

Ticaret dünyasında, ticaret hedeflerine ulaşmak için lehimize kullanabileceğimiz birçok yöntem ve araç vardır. Bu yöntemler ve araçlar piyasa koşullarına göre veya piyasa durumuna göre farklı şekillerde kullanılabilir. 

Kullanılan yöntemlerden biri bantlarla ticaret yapmaktır. Bantlarla ticaret yapmanın ana fikri, iki banttan oluşan koridor arasında ticaret işlemleri gerçekleştirmektir. Bu yöntemle kullanılan araçlardan biri ise Bollinger Bands göstergesidir. Bu gösterge, teknik analiz ve ticaret dünyasında kullanılan en popüler göstergelerden biridir.

Bu makalede, Bollinger Bands göstergesinin ne olduğundan, nasıl hesaplandığından ve onu ticarette nasıl etkin bir şekilde lehimize kullanabileceğimizden bahsedeceğiz. Böylece, bu göstergeyi stratejinize uygun olarak nasıl kullanabileceğinizi öğrenmiş olacaksınız. Sonrasında da, Bollinger Bands göstergesini doğru ve kolay bir şekilde kullanarak nasıl ticaret sistemi geliştirebileceğimizden bahsedeceğiz. Dolayısıyla, şu konuları ele alacağız:

    1. Bollinger Bands göstergesinin tanımı
    2. Bollinger Bands göstergesi stratejileri
    3. Bollinger Bands göstergesine dayalı ticaret sistemi geliştirme
    4. Sonuç
    5. Referanslar

      Bollinger Bands göstergesi verilerin ortalama etrafındaki dağılımını ölçer. Bu gösterge John Bollinger tarafından oluşturulmuştur. Gösterge, 20 günlük hareketli ortalama etrafında çizilen iki banttan oluşur - bu bantlar, verilerin (fiyatların) ortalama (hareketli ortalama) etrafındaki dağılımını yansıtır. 

      Bollinger Bands göstergesi, Envelopes göstergesiyle (bu gösterge de fiyatların etrafında iki banda sahip olduğundan) aynıymış gibi görünebilir. Ancak aynı değillerdir, bu iki gösterge arasındaki fark şu şekildedir: Envelopes göstergesinin bantları hareketli ortalamadan sabit bir yüzdelik mesafede çizilirken, Bollinger Bands göstergesinin bantları belirli standart sapmaya bağlı olarak hareketli ortalamadan uzaklaşıp yaklaşır. Bu ve diğer detaylara “Bollinger Bands göstergesinin tanımı” bölümünde bahsedeceğiz.

      Devamında, “Bollinger Bands göstergesi stratejileri” bölümünde, Bollinger Bands göstergesini ticarette en iyi şekilde nasıl kullanacağımızı inceleyeceğiz.

      Ardından da “Bollinger Bands göstergesine dayalı ticaret sistemi geliştirme” bölümünde stratejilerin algoritmik ticaret sistemine nasıl uygulanacağını analiz edeceğiz.


      Şunlara dikkat edin:

      • Bu makaledeki tüm kodlar MQL5'te yazılacak ve MetaTrader 5 platformunda çalıştırılacaktır.
      • Pratik yapmak ve konuyu daha iyi anlamak istiyorsanız, makalede anlatılan kodları kendiniz yazıp çalıştırmanızı tavsiye ederim.
      • Bu nedenle, kodları yazmak için MetaEditor'a, kodları çalıştırmak için de MetaTrader 5 platformuna ihtiyacınız olacak.

      MetaTrader 5 platformunu bilgisayarınıza kurmak için şu linkten dağıtım paketini indirin:https://www.metatrader5.com/en/download. Kurulumdan sonra aşağıdaki MetaTrader 5 platformu penceresi görünecektir:

      MT5 platformu


      MetaEditor kod düzenleyicisini açmak için MetaTrader 5 platformu açıkken F4 tuşuna basın veya Araçlar menüsünden MetaQuotes Language Düzenleyicisini seçin. Aşağıdaki görüntüler MetaEditor kod düzenleyicisinin nasıl açılacağını göstermektedir:

      Metaeditor açılışı 1


      Metaeditor açılışı 2

      Açılan MetaEditor kod düzenleyicisi penceresi şu şekilde görünecektir: 

      Metaeditor penceresi


      Ardından, aşağıdaki görüntüde gösterildiği gibi kodunuzu yazmak için yeni bir dosya oluşturmanız gerekecektir:

      Metaeditor - Yeni dosya

      1. Uzman Danışman yazmak için yeni bir dosya açar
      2. Özel gösterge yazmak için yeni bir dosya açar
      3. Komut dosyası yazmak için yeni bir dosya açar

      Daha fazla bilgi için şu linkten bir önceki makalemi okuyabilirsiniz: https://www.mql5.com/tr/articles/10293

      Farklı açıklamalarımda her zaman belirttiğim gibi, programlama veya kodlama, otomatik olarak yürütülen doğru eylemlerle hayatımızı kolaylaştırmamızı ve sorunsuz hale getirmemizi sağlayan harika bir araçtır. Bu nedenle, hayatın farklı alanlarında istenilen hedeflere ulaşmak adına doğru şekilde kullanmayı öğrenmek için kod yazma alanına yatırım yapmak gerçekten önemlidir.
      Ticaret alanı söz konusu olduğunda, bilgisayara yapmak istediğiniz şeyi yapması için talimatlar verip gerekli olduğu zaman bilgisayar herhangi bir itiraz olmaksızın tam olarak isteğinizi gerçekleştirdiğinde ve böylece hayatınızda geri kalan her şeyi rahatlıkla yapabildiğinizde hayatın nasıl kolay ve keyifli olabileceğini bir hayal edin. Dolayısıyla kod yazmayı öğrenmeye ve otomatik programlar oluşturmaya zaman ayırmak mantıklıdır.

      Sorumluluk reddi

      Bu makalenin tüm içeriği yalnızca eğitim amaçlıdır, başka herhangi bir amaca yönelik değildir. Dolayısıyla, bu makalenin içeriğine dayalı olarak gerçekleştireceğiniz her şey, yalnızca kendi sorumluluğunuzda ve riskinizde olacaktır, bu makalenin içeriği herhangi bir sonucu garanti etmemektedir.

      Bollinger Bands göstergesiyle algoritmik ticaret hakkında daha fazla bilgiye erişmek için hadi makale bölümlerimize başlayalım.

      Bollinger Bands göstergesinin tanımı

      Bantlarla ticaret yapma yöntemi oldukça yaygındır, uzun geçmişe sahip bu fikir çok çeşitli enstrümanlarda kullanılmaktadır. Temel olarak, bantlar, trend ölçütünün üzerine ve aşağısına çizilmesine dayanır. 

      Örneğin, Envelopes göstergesinde olduğu gibi bantlar hareketli ortalamadan belirli bir yüzde uzakta olacak şekilde çizilebilir. Ya da geri dönüş noktalarını tespit etmek amacıyla fiyatların üzerine ve aşağısına iki paralel bant çizilerek kanallar oluşturulabilir. Ancak bantları kullanan bu tür araçların dezavantajı, bantların trend ölçütünden devamlı olarak belirli bir sabit uzaklıkta olmasıdır, bu uzaklığın fiyat hareketlerine tepki vermemesidir. Başka bir deyişle, fiyat hareketleriyle birlikte bantların trend ölçütüne olan uzaklığı artmaz veya azalmaz.

      Bollinger Bands göstergesi ise özel hesaplamaya sahip olmasıyla bunu yapabilir. Bollinger Bands göstergesinin nasıl hesaplandığına ilişkin detayları bu bölümde inceleyeceğiz.

      Örneğin, aşağıdaki görüntü, bantlara dayalı olarak çalışan Envelopes göstergesini göstermektedir:

      EURUSD, H1 - Envelopes

      Yukarıdaki görüntüde görebileceğiniz gibi, fiyatları çevreleyen iki bant vardır: alt bant fiyatları aşağıdan, üst bant ise fiyatları yukarıdan çevreler. Bantlarla ticaret yapma yönteminin en yaygın olan araçları, bantların trend ölçütünden belirli bir yüzde uzaklıkta olanlarıdır. Ancak yukarıda bahsettiğim gibi bu araçların önemli bir dezavantajı vardır. 

      Bu nedenle, bantlarla ticaret yapma yönteminde bu dezavantajı aşmak için zamanla gelişmeler olmuştur. Bu gelişmelerden biri de Bollinger Bands göstergesidir. Hesaplama özelliği, bantların trend ölçütüne yaklaşmasına ve uzaklaşmasına izin verdiğinden, ilgili dezavantajı aşmasına olanak sağlar.

      Bollinger Bands göstergesi, 1980'lerin başında, finansal piyasalar ve ticaret alanında tanınmış bir uzman olan John Bollinger tarafından oluşturulmuştur. Kendisi, CFA (Chartered Financial Analyst, Yetkili Finansal Analist) ve CMT (Chartered Market Technician, Yetkili Piyasa Uzmanı) unvanlarına sahiptir.

      Bollinger Bands göstergesi, volatiliteyi ölçen popüler bir teknik göstergedir. Piyasanın durumuna bağlı olarak genişleyebilir ve daralabilir. Herhangi bir finansal piyasada kullanılabilir - forex, hisse senetleri vb. Şimdi, Bollinger Bands göstergesinin nasıl oluşturulduğu hakkında konuşalım:

      Önceden açıkladığım gibi, herhangi bir bandın çizilebilmesi için, önce merkezi trend ölçütünün çizilmesi gerekir. Daha sonra bu ölçütün üzerine ve aşağısına bantlar çizilir. Bollinger Bantları göstergesinde bu merkezi trend ölçütü, basit hareketli ortalamadır ve aralık da, volatiliteye dayalı standart sapma ile belirlenir.

      Bollinger Bands göstergesi:

      • Verilerin ortalama (Moving Average) etrafındaki dağılımını ölçer.
      • Bir volatilite göstergesidir.
      • Bollinger Bands, bantların hareketli ortalamadan sabit bir mesafede çizilmemesi, esnek olması, volatiliteye dayalı şekilde belirli bir standart sapmaya bağlı olarak hareketli ortalamaya uzaklaşıp yaklaşması bakımından Envelopes veya bantları yüzdelik uzaklıkta çizen diğer benzer göstergelerden farklıdır.
      • Volatilite arttığında bantlar otomatik olarak genişler, volatilite azaldığındaysa bantlar otomatik olarak daralır. Bu dinamik yapı, göstergenin standart ayarlarla çeşitli enstrümanlarda kullanılmasına olanak tanır.
      • Genel olarak Bollinger Bands göstergesi piyasaya giriş ve çıkış noktalarını belirlemek için kullanılır.
      • Ayrıca, bantlar aşırı alış ve aşırı satış durumlarını tespit etmek için de kullanılabilir.
      • Ve ek olarak, M-Piklerini ve W-Diplerini saptamak veya trendin gücünü belirlemek amacıyla da kullanılabilir.
      Aşağıdaki formül Bollinger Bands göstergesinin nasıl hesaplandığını göstermektedir:

      BB göstergesinin hesaplanması

      Şimdi Bollinger Bands göstergesinin hesaplanmasına ilişkin bir örneğe bakalım:
        20 işlem günü için aşağıdaki tablodaki gibi kapanış fiyatlarına sahip olduğumuzu varsayalım:
             Gün   
             Kapanış fiyatı ($)  
          1 20
          2 30
          3 35
           4 30 
           5 40 
          6 45
          7 50
          8 55
          9 40
          10 45
          11 50
          12 35
          13 40
          14 50
          15 60
          16 65
          17 70
          18 60
          19 70
          20 75

          BB göstergesinin hesaplanması

          Dolayısıyla, bu kapanış fiyatları için Bollinger Bands göstergesinin hesaplaması aşağıdaki gibi olacaktır:

             BB göstergesinin hesaplanma örneği


            BB göstergesinin hesaplama örneği


            Ayarlar:

            Peki Bollinger Bands göstergesini farklı ayarlarda kullanarak ticaret stratejimize ve hedeflerimize göre optimize etmek mümkün mü? Evet, elbette, ancak iyi bir sonuç elde etmek için her zaman tüm ayarları kontrol etmeli ve test etmelisiniz. Ayrıca Bollinger, standart sapma çarpanında küçük bir ayarlama yapılmasını da önermektedir. Ek olarak, hareketli ortalamanın periyodunu değiştirmenin standart sapmayı hesaplamak için kullanılan periyodu etkilediğini de unutmamanız gerekir. Bollinger ayrıca, periyodu 50 olan basit hareketli ortalama kullanılıyorsa standart sapma çarpanını 2,1'e yükseltmeyi ve periyodu 10 olan basit hareketli ortalama kullanılıyorsa standart sapma çarpanını 1,9'a düşürmeyi de önermektedir. 

            Neyse ki, bu hesaplamanın manuel olarak yapılmasına gerek yok, MetaTrader 5 platformunun standart paketiyle birlikte gelen hazır gösterge var. Aşağıdaki görüntüler, göstergenin grafiğe nasıl ekleneceğini göstermektedir. MetaTrader 5 platformundan Ekle menüsünü seçin:

            BB göstergesini ekleme

            Ardından Göstergeler -> Trend -> Bollinger Bands’i seçin:

            BB göstergesini ekleme

            Göstergeyi seçtikten sonra, parametreleri içeren pencere açılacaktır. Göstergenin varsayılan parametrelerini gösterir. Şu ayarlanabilir parametrelere sahiptir:

            1.    Hareketli ortalamanın hesaplandığı periyot.

            2.    Üst ve alt bantları ayarlamak için sapma parametresi.

            3.    Hesaplama için kullanılacak fiyat türü (kapanış, açılış, yüksek, düşük, medyan, tipik, ağırlıklı).

            4.    Göstergeyi grafikte gösterme stili (göstergenin çizgilerinin rengi, türü ve kalınlığı).

            5.    Göstergeye uygulanacak kayma.

            Bu ayarları stratejinize göre ayarlayın.


            BB göstergesi parametreleri

            Ayarladıktan ve Tamama tıkladıktan sonra, gösterge grafikte görüntülenecektir:


            EURUSD, H1 - BB


            Yukarıdaki görüntü, fiyatı çevreleyen iki bandın (Bollinger bantları) varlığını göstermektedir - biri ortalama değerin üzerinde, diğeri ise aşağısında. 

            Bollinger Bands göstergesi stratejileri

            Bu bölümde Bollinger Bands göstergesi stratejileri hakkında konuşacağız ve bu stratejileri faydalı bir şekilde ticaretimizde nasıl kullanacağımıza değineceğiz.

            Bollinger Bands göstergesi, farklı piyasa koşullarında ve piyasa hareketlerinde kullanım için uygundur: yükseliş trendinde, düşüş trendinde veya yatay harekette. Ve her piyasa koşulunda kullanabileceğimiz birçok stratejiye sahiptir, ancak burada bunlardan bazılarını ele alacağız.

            • Yükseliş trendinde

            Öncelikle, fiyatların yükseliş trendinde hareketli ortalamayla nasıl ilişkide olduğunu anlamamız gerekir: fiyatlar yükseliş trendi sırasında çoğu zaman hareketli ortalamanın üzerinde hareket eder.

            Dolayısıyla, fiyatların yükseliş trendinde çoğu zaman hareketli ortalama ile üst bant arasında hareket ediyor olduğunu görürüz. Yükseliş trendi boyunca piyasa alıcıların kontrolünde olduğundan fiyatlar daha yüksek pikler ve daha yüksek çukurlar yaparak hareket edecektir.

            Yükseliş trendi

            Yükseliş trendi


            Yukarıdaki durumda, Bollinger Bands göstergesi, fiyatların hareketli ortalama ve üst bant arasında hareket ediyor olduğunu göstereceği için yükseliş trendini belirlememize yardımcı olabilir. Aşağıdaki görüntü böyle bir duruma örnek göstermektedir: fiyatlar yeşil bölgede, hareketli ortalama ile üst bant arasında hareket ediyor - yükseliş trendi:

            EURUSD, Weekly - yükseliş trendinde BB

            Buna göre, şu şekilde bir strateji oluşturabiliriz:
            • Fiyat hareketli ortalamayı aşağıdan yukarıya doğru çaprazladığında alış yaparız. Kapanış hedefi ise üst bant.
              • Fiyat > MA = Alış, üst bant = hedef

            EURUSD, Weekly - yükseliş trendi için BB stratejisi

            • Düşüş trendinde

            Öncelikle, fiyatların düşüş trendinde hareketli ortalamayla nasıl ilişkide olduğunu anlamamız gerekir: fiyatlar düşüş trendi sırasında çoğu zaman hareketli ortalamanın altında hareket eder.

            Dolayısıyla, fiyatların düşüş trendinde çoğu zaman hareketli ortalama ile alt bant arasında hareket ediyor olduğunu görürüz. Düşüş trendi boyunca piyasa satıcıların kontrolünde olduğundan fiyatlar daha düşük dipler ve daha düşük çukurlar yaparak hareket edecektir.

            Düşüş trendi

            Düşüş trendi

            Yukarıdaki durumda, Bollinger Bands göstergesi, fiyatların hareketli ortalama ve alt bant arasında hareket ediyor olduğunu göstereceği için düşüş trendini belirlememize yardımcı olabilir. Aşağıdaki görüntü böyle bir duruma örnek göstermektedir: fiyatlar kırmızı bölgede, hareketli ortalama ile alt bant arasında hareket ediyor - düşüş trendi:

            EURUSD, Daily - düşüş trendinde BB

            Buna göre, şu şekilde bir strateji oluşturabiliriz:
            • Fiyat hareketli ortalamayı yukarıdan aşağıya doğru çaprazladığında satış yaparız. Kapanış hedefi ise alt bant.
              • Fiyat < MA = Satış, alt bant = hedef

            EURUSD, Daily - düşüş trendi için BB stratejisi

            • Yatay harekette

            Öncelikle, fiyatların yatay harekette nasıl hareket ettiğini anlamamız gerekir: yatay hareket yükseliş ve düşüş trendi dışındaki herhangi bir harekettir.

            Yatay hareket, alıcılar ve satıcılar arasında bir denge olduğunu gösterir, her iki tarafta piyasaya açıkça hakim değildir. Aşağıdaki görüntüler bazı yatay hareketlere örnektir:

            Yatay hareket

            Yatay hareket

            Yatay hareket

            Yatay hareket

            Aşağıdaki örnekte, yeşil bölgedeki fiyatların yukarıya veya aşağıya net bir yöne sahip olmadan yatay şekilde hareket ettiğini görmekteyiz:

            Yatay hareket 


            Yatay hareketin başka varyantları da vardır, ancak bu tür hareketlerin yükseliş ve düşüş trendi dışındaki herhangi bir hareket olduğunu hatırlamak yeterlidir.


            Şimdi yatay harekette fiyatların hareketli ortalamayla nasıl ilişkide olduğunu görelim. Fiyatlar hareketli ortalama etrafında dalgalanacak ve sürekli olarak hareketli ortalamayı yukarı ve aşağı yönde çaprazlayacaktır. Aşağıdaki şekil buna bir örnektir:

            Yatay hareketle MA

            Peki fiyatlar Bollinger Bands göstergesiyle ilişkili olarak nasıl davranacak? Fiyat, alt ve üst bantlar arasında hareket edecektir:

            GBPUSD, 1H - yatay harekette BB

            Fiyat bantlar arasında hareket ettiğinden, ticaret stratejisi şu şekilde olacaktır: alt bantta alış, üst bantta kârı al veya tam tersi şekilde, üst bantta satış, alt bantta kârı al.
            • Fiyat alt bantta = Alış, üst bant = hedef
            • Fiyat üst bantta = Satış, alt bant = hedef

            GBPUSD, 1H - yatay harekette BB stratejisi


            Yukarıdaki görüntüde:
            • Alt bantta alış yapabilir ve üst bantta kâr alınabilir.
            • Üst bantta satış yapabilir ve alt bantta kâr alınabilir.

            Bollinger Bands göstergesine dayalı ticaret sistemi geliştirme

            Bu bölümde Bollinger Bands göstergesine dayalı algoritmik ticaret sistemlerinin nasıl geliştirileceğini ve kodlanacağını öğreneceğiz. Ve daha önce tartıştığımız üç ticaret stratejisini de programlayacağız (yükseliş trendi, düşüş trendi ve yatay hareket).

            Basit bir ticaret sisteminden çok gelişmiş bir ticaret sistemine kadar ticaret sisteminizi istediğiniz şekilde tasarlayabilirsiniz. Örneğin, temel konsepte dayalı olarak sinyaller üretecek basit bir ticaret sistemi geliştirebilirsiniz. Veya sadece sinyal üretmekle kalmayıp, onu diğer yeteneklerle birleştirerek otomatik olarak ticaret işlemi gerçekleştirecek gelişmiş bir ticaret sistemi yazabilirsiniz. Pek çok farklı yaklaşım var. Bu makalede, basit ticaret sistemleriyle çalışacağız ve yalnızca temel konsepti öğrenmek için eğitim amaçlı oluşturacağız. Bu bilgilere dayanarak, benzer sistemler geliştirebilecek veya kendi ticaret sisteminizi kendi stratejinize göre tasarlayabileceksiniz. Umarım bu makale sizin için faydalı olur ve ticaret, yatırım hedeflerinize ulaşmanızda yardım eder.

            Öncelikle hareketli ortalamanın, üst bandın ve alt bandın değerini grafik üzerinde yorum şeklinde gösterilmesini sağlayan saf bir Bollinger Bands kodu yazalım.

            Kod şu şekilde olur:

            //+------------------------------------------------------------------+
            //|                                       Simple Bollinger Bands.mq5 |
            //|                                  Copyright 2022, MetaQuotes Ltd. |
            //|                                             https://www.mql5.com |
            //+------------------------------------------------------------------+
            
            //+------------------------------------------------------------------+
            //| Expert tick function                                             |
            //+------------------------------------------------------------------+
            void OnTick()
              {
               //create an array for several prices
               double MiddleBandArray[];
               double UpperBandArray[];
               double LowerBandArray[];
               
               //sort the price array from the cuurent candle downwards
               ArraySetAsSeries(MiddleBandArray,true);
               ArraySetAsSeries(UpperBandArray,true);
               ArraySetAsSeries(LowerBandArray,true);
               
               //define Bollinger Bands
               int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
               
               //copy price info into the array
               CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
               CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
               CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
               
               //calcualte EA for the cuurent candle
               double MiddleBandValue=MiddleBandArray[0];
               double UpperBandValue=UpperBandArray[0];
               double LowerBandValue=LowerBandArray[0];
               
               //comments
               Comment("MiddleBandValue: ",MiddleBandValue,"\n",
               "UpperBandValue: ",UpperBandValue,"\n","LowerBandValue: ",LowerBandValue,"\n");
               
              }
            //+------------------------------------------------------------------+
            

            Kodu yazıp derledikten sonra kodda herhangi bir hata veya uyarı olmadığından emin olmamız gerekiyor:

            SBB - hata yok

            Ardından, kılavuz penceresinden dosyayı bulun ve grafiğe sürükleyin veya çift tıklayarak çalıştırın:

             SBB - dosya


            SBB çalıştırma penceresi


            Aşağıdaki görüntü, üzerinde programımızın çalıştığı bir grafiğin nasıl göründüğünü göstermektedir:

            Grafiğe eklenmiş SBB

            Şimdi Bollinger Bands göstergesine dayalı basit stratejileri nasıl tasarlayacağımıza geçelim.
              Strateji 1:
                • Yükseliş trendi için Bollinger Bands stratejisi planı: 
                • Fiyat > MA = Alış, üst bant = kârı al hedefi, veya = sinyal yok

                Yükseliş trendi için BB stratejisi planı

                Kod şu şekilde olur:

                //+------------------------------------------------------------------+
                //|                                          Uptrend BB strategy.mq5 |
                //|                                  Copyright 2022, MetaQuotes Ltd. |
                //|                                             https://www.mql5.com |
                //+------------------------------------------------------------------+
                //+------------------------------------------------------------------+
                //| Expert tick function                                             |
                //+------------------------------------------------------------------+
                void OnTick()
                  {
                   //define Ask, Bid
                   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                   
                   //create an array for several prices
                   double MiddleBandArray[];
                   double UpperBandArray[];
                   double LowerBandArray[];
                   
                   //sort the price array from the cuurent candle downwards
                   ArraySetAsSeries(MiddleBandArray,true);
                   ArraySetAsSeries(UpperBandArray,true);
                   ArraySetAsSeries(LowerBandArray,true);
                   
                   //define Bollinger Bands
                   int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                   
                   
                   //copy price info into the array
                   CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                   CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                   CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                   
                   //calcualte EA for the cuurent candle
                   double MiddleBandValue=MiddleBandArray[0];
                   double UpperBandValue=UpperBandArray[0];
                   double LowerBandValue=LowerBandArray[0];
                   
                   //giving buy signal when price > MA
                   if (
                      (Ask>=MiddleBandArray[0])
                   && (Ask<UpperBandArray[0])
                      )
                         {
                         Comment("BUY");
                         }
                    
                   //check if we have a take profit signal      
                   if (
                      (Bid>=UpperBandArray[0])
                      )
                         {
                         Comment("TAKE PROFIT");
                         }  
                   
                      //check if we have no signal      
                   if (
                      (Ask<MiddleBandArray[0])
                      )
                         {
                         Comment("NO SIGNAL");
                         }  
                  }
                //+------------------------------------------------------------------+

                Aşağıdaki ekran görüntüleri bu stratejinin ürettiği sinyalleri göstermektedir:

                Yükseliş trendi için BB - alış


                Yükseliş trendi için BB - kârı al

                Yükseliş trendi için BB - sinyal yok

                Daha sonra aşağıdaki adımları gerçekleştirmemiz gerekir:
                • Kodunuzda hata veya uyarı olmadığından emin olun
                • Dosyayı bulun
                • Dosyayı grafiğe sürükleyerek veya üzerine çift tıklayarak kodu çalıştırın

                UBB - hata yok

                UBB dosyası


                UBB çalıştırma penceresi


                Aşağıdaki görüntü, kodumuzu çalıştırdıktan sonraki pencereyi göstermektedir. Burada program grafik üzerinde çalışıyor:

                Grafiğe eklenmiş UBB

                  Strateji 2:
                    • Düşüş trendi için Bollinger Bands stratejisi planı:
                    • Fiyat < MA = Satış, alt bant = hedef

                    Düşüş trendi için BB stratejisi planı

                    Kod şu şekilde olur:

                    //+------------------------------------------------------------------+
                    //|                                        Downtrend BB strategy.mq5 |
                    //|                                  Copyright 2022, MetaQuotes Ltd. |
                    //|                                             https://www.mql5.com |
                    //+------------------------------------------------------------------+
                    //+------------------------------------------------------------------+
                    //| Expert tick function                                             |
                    //+------------------------------------------------------------------+
                    void OnTick()
                      {
                       //define Ask, Bid
                       double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                       double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                       
                       //create an array for several prices
                       double MiddleBandArray[];
                       double UpperBandArray[];
                       double LowerBandArray[];
                       
                       //sort the price array from the cuurent candle downwards
                       ArraySetAsSeries(MiddleBandArray,true);
                       ArraySetAsSeries(UpperBandArray,true);
                       ArraySetAsSeries(LowerBandArray,true);
                       
                       //define Bollinger Bands
                       int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                       
                       
                       //copy price info into the array
                       CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                       CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                       CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                       
                       //calcualte EA for the cuurent candle
                       double MiddleBandValue=MiddleBandArray[0];
                       double UpperBandValue=UpperBandArray[0];
                       double LowerBandValue=LowerBandArray[0];
                       
                       //giving sell signal when price < MA
                       if (
                          (Bid<=MiddleBandArray[0])
                       && (Bid>LowerBandArray[0])
                          )
                             {
                             Comment("SELL");
                             }
                        
                       //check if we have a take profit signal      
                       if (
                          (Ask<=LowerBandArray[0])
                          )
                             {
                             Comment("TAKE PROFIT");
                             }  
                       
                          //check if we have no signal      
                       if (
                          (Bid>MiddleBandArray[0])
                          )
                             {
                             Comment("NO SIGNAL");
                             }  
                      }
                    //+------------------------------------------------------------------+

                    Aşağıdaki görüntüler, bu strateji tarafından oluşturulan sinyalleri göstermektedir:

                    Düşüş trendi için BB - satış

                    Düşüş trendi için BB - kârı al

                    Düşüş trendi için BB - sinyal yok


                    Daha sonra aynı adımları tekrar gerçekleştiriyoruz:
                    • Kodunuzda hata veya uyarı olmadığından emin olun
                    • Dosyayı bulun
                    • Dosyayı grafiğe sürükleyerek veya üzerine çift tıklayarak kodu çalıştırın

                    DBB - hata yok

                    DBB dosyası


                    DBB çalıştırma penceresi


                    Program çalıştırıldıktan sonra grafikte şu şekilde görünür:

                    Grafiğe eklenmiş DBB



                      Strateji 3:
                        • Yatay hareket için Bollinger Bands stratejisi planı:
                        • Fiyat alt bantta = Alış, üst bant = hedef
                        • Fiyat üst bantta = Satış, alt bant = hedef

                        Yatay hareket için BB stratejisi planı


                        Kod şu şekilde olur:

                        A- Alt banda dokunulduğunda alış sinyali üretilir,

                        //+------------------------------------------------------------------+
                        //|                                     Buy sideways BB strategy.mq5 |
                        //|                                  Copyright 2022, MetaQuotes Ltd. |
                        //|                                             https://www.mql5.com |
                        //+------------------------------------------------------------------+
                        //+------------------------------------------------------------------+
                        //| Expert tick function                                             |
                        //+------------------------------------------------------------------+
                        void OnTick()
                          {
                           //define Ask, Bid
                           double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                           double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                           
                           //create an array for several prices
                           double MiddleBandArray[];
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //sort the price array from the cuurent candle downwards
                           ArraySetAsSeries(MiddleBandArray,true);
                           ArraySetAsSeries(UpperBandArray,true);
                           ArraySetAsSeries(LowerBandArray,true);
                           
                           //define Bollinger Bands
                           int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                           
                           
                           //copy price info into the array
                           CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                           CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                           CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                           
                           //calcualte EA for the cuurent candle
                           double MiddleBandValue=MiddleBandArray[0];
                           double UpperBandValue=UpperBandArray[0];
                           double LowerBandValue=LowerBandArray[0];
                           
                           //giving buy signal when price > MA
                           if (
                              (Ask<=LowerBandArray[0])
                              )
                                 {
                                 Comment("BUY");
                                 }
                            
                           //check if we have a take profit signal      
                           if (
                              (Bid>=UpperBandArray[0])
                              )
                                 {
                                 Comment("TAKE PROFIT");
                                 }  
                           
                          }
                        //+------------------------------------------------------------------+
                        

                        Bu strateji tarafından üretilen sinyaller:

                        Alış sinyali - yatay hareket için BB

                        Alış sinyalinin kârı al seviyesi - yatay hareket için BB


                        Daha sonra aynı adımları tekrar gerçekleştiriyoruz:
                        • Kodunuzda hata veya uyarı olmadığından emin olun
                        • Dosyayı bulun
                        • Dosyayı grafiğe sürükleyerek veya üzerine çift tıklayarak kodu çalıştırın

                        BSBB - hata yok

                        BSBB dosyası


                        BSBB çalıştırma penceresi


                        Program çalıştırıldıktan sonra grafikte şu şekilde görünür:


                        Grafiğe eklenmiş BSBB

                        B- Üst banda dokunulduğunda satış sinyali üretilir,

                        Kod şu şekilde olur:
                        //+------------------------------------------------------------------+
                        //|                                    Sell sideways BB strategy.mq5 |
                        //|                                  Copyright 2022, MetaQuotes Ltd. |
                        //|                                             https://www.mql5.com |
                        //+------------------------------------------------------------------+
                        //+------------------------------------------------------------------+
                        //| Expert tick function                                             |
                        //+------------------------------------------------------------------+
                        void OnTick()
                          {
                           //define Ask, Bid
                           double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                           double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                           
                           //create an array for several prices
                           double MiddleBandArray[];
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //sort the price array from the cuurent candle downwards
                           ArraySetAsSeries(MiddleBandArray,true);
                           ArraySetAsSeries(UpperBandArray,true);
                           ArraySetAsSeries(LowerBandArray,true);
                           
                           //define Bollinger Bands
                           int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                           
                           
                           //copy price info into the array
                           CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                           CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                           CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                           
                           //calcualte EA for the cuurent candle
                           double MiddleBandValue=MiddleBandArray[0];
                           double UpperBandValue=UpperBandArray[0];
                           double LowerBandValue=LowerBandArray[0];
                           
                           //giving sell signal when price < MA
                           if (
                              (Bid>=UpperBandArray[0])
                              )
                                 {
                                 Comment("SELL");
                                 }
                            
                           //check if we have a take profit signal      
                           if (
                              (Ask<=LowerBandArray[0])
                              )
                                 {
                                 Comment("TAKE PROFIT");
                                 }  
                          }
                        //+------------------------------------------------------------------+
                        

                        Aşağıdaki görüntüler, bu stratejinin ürettiği sinyalleri göstermektedir:

                        Satış sinyali - yatay hareket için BB

                        Satış sinyalinin kârı al seviyesi - yatay hareket için BB


                        Daha sonra aynı adımları tekrar gerçekleştiriyoruz:
                        • Kodunuzda hata veya uyarı olmadığından emin olun
                        • Dosyayı bulun
                        • Dosyayı grafiğe sürükleyerek veya üzerine çift tıklayarak kodu çalıştırın

                        SSBB - hata yok


                        SSBB dosyası


                        SSBB çalıştırma penceresi


                        Program çalıştırıldıktan sonra grafikte şu şekilde görünür:

                        Grafiğe eklenmiş SSBB


                        Sonuç

                        Bantlarla ticaret yapma konsepti, yaklaşmakta olan hareketin ne olacağına dair bize net bir beklenti verdiği için çok kullanışlıdır. Bu yöntem için Bollinger Bands dahil birçok araç vardır, Bollinger Bands’in avantajı ise, bantların fiyat hareketine bağlı olarak genişleyip daralabilmesidir, böylece onu herhangi bir piyasa koşuluyla kullanabilirsiniz.

                        Bu makalede Bollinger Bands göstergesi konseptini, hesaplamalarını, göstergeyi kullanarak basit ticaret stratejilerini inceledik ve bu basit stratejilere dayalı basit bir ticaret sistemi geliştirdik.

                        Artık ticaret tarzınıza uygun olarak kendi stratejinizi geliştirebilirsiniz. Umarım makale sizin için faydalı olur ve ticaret hedeflerinize ulaşmanıza yardım sağlar.


                        Referanslar

                        • Bollinger on Bollinger Bands by John Bollinger
                        • https://www.bollingerbands.com/about-us
                        • https://www.investopedia.com/trading/using-bollinger-bands-to-gauge-trends
                        • https://school.stockcharts.com/doku.php?id=technical_indicators:bollinger_bands



                        MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
                        Orijinal makale: https://www.mql5.com/en/articles/3039

                        Bir grafikte birden fazla gösterge (Bölüm 02): Kodlamaya başlangıç Bir grafikte birden fazla gösterge (Bölüm 02): Kodlamaya başlangıç
                        Bu makale serisinin bir önceki bölümünde, bir grafikte birden fazla göstergenin nasıl kullanılabileceğinin kavramlarından ve temellerinden bahsettim. Bu yazımda da kaynak kodunu detaylı olarak sunacağım ve anlatacağım.
                        Bir grafikte birden fazla gösterge (Bölüm 01): Kavramları anlama Bir grafikte birden fazla gösterge (Bölüm 01): Kavramları anlama
                        Bugün, ayrı bir alan işgal etmeyecek şekilde grafiğe nasıl birkaç gösterge ekleyebileceğinizi inceleyeceğiz. Ticaret işlemi gerçekleştirirken, birçok yatırımcı aynı anda birden fazla göstergeyi (örneğin, RSI, STOCHASTIC, MACD, ADX vb.) ve hatta bazı durumlarda endeksi oluşturan farklı varlıkları takip ettiklerinde kendilerini daha güvende hissederler.
                        Bir grafikte birden fazla gösterge (Bölüm 03): Özel tanımlar geliştirme Bir grafikte birden fazla gösterge (Bölüm 03): Özel tanımlar geliştirme
                        Bugün gösterge sisteminin işlevselliğini ilk kez güncelleyeceğiz. Bir önceki makalede, bir grafik alt penceresinde birden fazla göstergenin kullanılmasına olanak sağlayan kodu ele aldık. Ancak sunulan şey, çok daha büyük bir sistemin yalnızca başlangıç temeliydi.
                        Linux'ta MetaTrader 4 Linux'ta MetaTrader 4
                        Bu makalede, MetaTrader 4'i popüler Linux sürümleri olan Ubuntu ve Debian'a kolay bir şekilde nasıl kurabileceğinizi göstereceğiz. Bu sistemler yalnızca sunucularda değil, aynı zamanda yatırımcılar tarafından kişisel bilgisayarlarda da yaygın olarak kullanılmaktadır.