Programlama öğreticileri - sayfa 5

 

Range Breakout EA mql5 Programlama | Bölüm 4/4


Range Breakout EA mql5 Programlama | Bölüm 4/4

Toby, bugün MetaTrader 5 için çığır açan uzman danışmanımızı (EA) tamamlayacağımızı duyurmaktan heyecan duyuyor. Bu video, çığır açan EA hakkındaki kapsamlı serimizin son bölümünü oluşturuyor. Daha önceki videoları izleme fırsatınız olmadıysa takip edebilmeniz için açıklama kısmında linkler vereceğim.

Önceki bölümlerde, aralık hesaplama, alım satım kontrolleri ve pozisyon kapatma mantığı gibi önemli hususları ele aldık. Şimdi, bu sonuç videosunda, EA'mıza ekleyeceğimiz birkaç özelliğimiz daha var. Spesifik olarak, aralığın bir yüzdesine dayalı olarak bir zararı durdur ve karı al işlevini dahil edeceğiz. Ek olarak, bir haftanın günü filtresi sunacağız ve kullanıcıların aralık başına bir veya iki ara arasında geçiş yapmasına olanak tanıyan bir ara modu uygulayacağız.

Hemen kodlama sürecine geçelim. Şimdiye kadar geliştirdiğimiz kod bu kadar. İlk görevimiz, zararı durdur ve kar alma yüzdeleri için girdiler eklemektir. Yüzde olarak ifade edildikleri için tamsayı olarak tanımlayacağız. Varsayılan zararı durdur girişini 150'ye ve kar al girişini 200'e ayarlayalım. Bu değişiklikleri yansıtmak için yorumları da güncelleyeceğiz. Kullanıcının geçerli girdiler sağladığından emin olmak için girdi kontrolleri yapmamız gerekir. Zararı durdur ve kar al girdilerini doğrulamak için on init işlevine ek bir if ifadesi ekleyeceğiz. Zararı durdur girişi sıfırın altında veya 1000'den büyükse, bir hata mesajı gösteririz. Aynı doğrulama işlemi, kar alma girişi için de geçerlidir. Bu kontroller, EA'nın hatalı girdilerden korunmasına yardımcı olacaktır.

Devam edelim, her pozisyon için zararı durdur ve kârı al değerlerini hesaplayalım. Alış pozisyonları için, zararı durdur mevcut fiyatın altındaki aralığın yüzdesi olarak hesaplanacaktır. Teklif fiyatını kullanacağız ve 100'e bölünmüş giriş durdurma değeri ile çarpacağız. Normalleştirilmiş bir fiyat sağlamak için NormalizeDouble işlevini uygulayacağız. Benzer şekilde, satış pozisyonları için zararı durdur, mevcut fiyatın üzerindeki aralığın yüzdesi olarak hesaplanacaktır. Alış fiyatını kullanacağız ve hesaplanan zararı durdur değerini buna ekleyeceğiz. Bu, durdurma kaybı için uygun seviyeyi belirleyecektir.

Kâr al hesaplaması için de aynı mantığı izleyeceğiz. Alış pozisyonları için kar alma, cari fiyatın üzerindeki aralık, satış pozisyonları için ise cari fiyatın altındaki aralık olacaktır. Hesaplanan zararı durdur ve kârı al değerleri ile bunları açık pozisyon çağrılarına dahil edeceğiz. Statik bir sıfır değeri kullanmak yerine, onu hesaplanan zararı durdur ve kârı al değerleri ile değiştireceğiz. Bu ayarlama, EA'nın her pozisyon için zararı durdur ve kârı al seviyelerini doğru bir şekilde ayarlamasını sağlar.

Esneklik sağlamak için, zararı durdur ve kârı al işlevini devre dışı bırakma özelliğini tanıtacağız. Kullanıcı herhangi bir giriş için sıfır girerse, o özelliği kapatmak istediğini gösterir. Bu koşulları kontrol etmek ve hesaplamayı buna göre ayarlamak için if ifadeleri ekleyeceğiz. Şimdi isteğe bağlı kapanma süresi özelliğini ele alalım. Kapanış süresi girişi olarak -1 girildiğinde, EA yalnızca zararı durdur ve kârı al seviyelerine göre pozisyonları kapatacaktır. Bu değişiklik, kullanıcıların pozisyon kapanışı için belirli bir zaman dahil etmek isteyip istemediklerini veya yalnızca zararı durdur ve kârı al parametrelerine güvenmeyi seçmelerine olanak tanır.

Bunu uygulamak için, on tick işlevindeki kapanış zamanı kontrolünü güncelleyeceğiz. Kapanış süresi sıfırdan küçükse, kapalı olduğunu gösterir, zamana dayalı pozisyon kapatma kontrolünü atlayacağız ve yalnızca zararı durdur ve kârı al koşullarına güveneceğiz. Ayrıca, nesne çizme işlevinde menzil görselleştirmesinde ayarlamalar yapacağız. Ayarlanmış bir kapanış süresi yoksa, aralık çizgileri mevcut muma kadar uzanarak, zararı durdur veya kar al seviyelerine ulaşılana kadar kırılma modunun aktif olduğunu gösterir. Öte yandan, bir kapanış zamanı ayarlanırsa, aralık çizgileri yalnızca o muma kadar genişler, bu da koparma modunun belirlenen zamana kadar aktif olduğunu gösterir.

EA'nın çok yönlülüğünü geliştirmek için haftanın günü filtresi ekleyeceğiz. Bu filtre, kullanıcıların EA'nın etkin olmasını istedikleri günleri belirtmelerine olanak tanır. Haftanın günü filtresi için kullanıcının önceden tanımlanmış bir listeden birden fazla gün seçebileceği bir giriş parametresi ekleyeceğiz. Varsayılan olarak, haftanın tüm günleri seçilecektir. Haftanın günü filtresini uygulamak için on tick işlevini değiştireceğiz. Geçerli günün kullanıcının seçtiği filtreye dahil olup olmadığını kontrol etmek için bir if ifadesi sunacağız. Gün dahil edilmemişse, EA pozisyon açma mantığını atlayacak ve bir sonraki tik'e geçecektir.

Son olarak, aralık başına bir veya iki kesinti arasında geçiş yapma seçeneğini uygulayacağız. Şu anda EA, aralık çıkışı başına bir konum açıyor. Ancak, bazı tacirler daha güçlü kırılmalar için iki pozisyon açma esnekliğine sahip olmayı tercih edebilir. Buna uyum sağlamak için, kullanıcının aralık başına bir veya iki koparma seçmesine izin veren bir giriş parametresi sunacağız.

Bu özelliği uygulamak için pozisyon açma mantığını ayarlayacağız. Kullanıcı aralık başına iki koparma seçerse, EA ilk koparmanın ters yönünde ek bir pozisyon açacaktır. Bu şekilde, aynı aralıkta hem yükseliş hem de düşüş eğilimi yakalanabilir. Uygulanan tüm bu yeni özelliklerle birlikte, uzman danışmanımız tüccarlara gelişmiş işlevsellik ve esneklik sağlayacaktır. Aralığın bir yüzdesine dayalı olarak zararı durdur ve kârı al işlevi, riskin yönetilmesine ve kârın elde edilmesine yardımcı olacaktır. Haftanın günü filtresi, kullanıcıların aktif işlem günlerini belirlemesine olanak tanırken, ara modu, işlem stratejilerine bağlı olarak aralık başına bir veya iki kırılmaya göre uyarlanabilir.

Breakout uzman danışmanı hakkındaki bu kapsamlı seriyi faydalı ve bilgilendirici bulduğunuzu umarız. Herhangi bir sorunuz varsa veya daha fazla yardıma ihtiyacınız varsa, lütfen bizimle iletişime geçmekten çekinmeyin. Mutlu ticaret!

Range Breakout EA mql5 Programming | Part 4/4
Range Breakout EA mql5 Programming | Part 4/4
  • 2022.10.14
  • www.youtube.com
I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range breakout...
 

Bollinger bantları EA MT5 Programlama



Bollinger bantları EA MT5 Programlama

Bu videoda Toby, Twitter'da bir bowling etkinliği için özel bir uzman danışman oluşturma sürecini adım adım anlatıyor. Stratejiyi açıklayarak başlıyor: üst Bollinger bandının üzerinde bir mum açıldığında satış yapmak, zararı durdur ve karı almak seviyelerini belirlemek ve Bollinger Bantlarının orta çizgisi aşılırsa ticaretten çıkmak. Aynı mantık satın almak için de geçerlidir.

Toby daha sonra bir şablon kullanarak yeni bir uzman danışman oluşturduğu MetaEditor'a geçer. Şablonu temizler ve sihirli sayı, parti büyüklüğü, dönem, sapma, zararı durdur ve kârı al gibi EA için girdi parametreleri ekler. Bu parametreler için varsayılan değerleri ayarlar ve kodu derler.

Daha sonra Toby, Bollinger bandı göstergesinin tutacağı ve üst, ortalama ve alt bantlar için tamponlar dahil olmak üzere EA için küresel değişkenleri tanımlar. Ayrıca mevcut kene ve ticaret için değişkenler yaratır.

OnInit işlevine geçerek Toby, kullanıcı girişlerinin geçerli olup olmadığını kontrol eder. Girişlerden herhangi biri geçersizse, bir hata mesajı görüntüler ve geri döner. Ticaret nesnesi için sihirli sayıyı belirler ve Bollinger bandı göstergesi için gösterge tutamacını oluşturur. Tanıtıcı oluşturma başarısız olursa, bir hata mesajı görüntüler ve geri döner. Daha sonra arabellekleri seri olarak ayarlar ve kodu derler.

OnTick işlevinde Toby, özel bir işlev kullanarak mevcut tikin bar açık tik olup olmadığını kontrol eder. Bar açık tik değilse döner. Bu bir bar açık tik ise, SymbolInfoTick işlevini kullanarak mevcut tik'i alır ve bunu currentTick değişkeninde saklar. Daha sonra CopyBuffer işlevini kullanarak en son gösterge değerlerini alır ve bunları ilgili arabelleklerde saklar. Kopyalanan değerlerin sayısı 3'e eşit değilse, bu bir hata olduğunu gösterir, bir hata mesajı görüntüler ve geri döner.

Bu noktada Toby, uzman danışmanı kodlamanın ilk adımlarını tamamlamıştır. Kodu derler ve gösterge değerlerini doğrulamak ve kodun doğru çalıştığından emin olmak için MetaTrader'da görsel bir geriye dönük test kullanır.

Ardından, Bollinger Bantları stratejisine dayalı ticaret sinyalleri üretme mantığını uygulamamız gerekiyor. Üst bandın üzerinde bir satış sinyali gösteren bir mumun açılıp açılmadığını kontrol ederek başlayacağız. Bu koşul karşılanırsa, zararı durdur ve karı al seviyesinde bir satış işlemi gerçekleştiririz. Benzer şekilde, aynı çıkış koşullarıyla bir satın alma işlemi gerçekleştirerek bir satın alma sinyali için alt bandın altında bir mum açılıp açılmadığını kontrol edeceğiz.

İşte kodun açıklaması:

  • Önce isNewBar() işlevini kullanarak mevcut tikin bar açık tik olup olmadığını kontrol ederiz. Yanlış döndürürse, mevcut onay için ticaret sinyali oluşturmayı atlarız.

  • Daha sonra ilgili arabelleklerden en son gösterge değerlerini alıyoruz: UpperBand, baseLine ve lowerBand.

  • Ardından, bir önceki mumun açılış fiyatının üst bandın üzerinde olup olmadığını kontrol ederiz (open[1] > UpperBand). Bu koşul doğruysa, ticaret nesnesinin Sell() yöntemini kullanarak bir satış işlemi açarak bir satış sinyali üretiriz. İlgili yöntemleri kullanarak lot büyüklüğünü, zararı durdur ve kar alma seviyelerini belirliyoruz.

  • Benzer şekilde, bir önceki mumun açılış fiyatının alt bandın altında olup olmadığını kontrol ederiz (open[1] < lowerBand). Doğruysa, ticaret nesnesinin Buy() yöntemini kullanarak bir alış ticareti açarak bir satın alma sinyali üretiriz. Yine lot büyüklüğünü, zararı durdur ve kârı al seviyelerini belirliyoruz.

  • Son olarak, açık bir ticaret varsa, mevcut mumun kapanış fiyatının orta çizgiyi (temel çizgi) geçip geçmediğini kontrol ederiz. Bu koşul doğruysa, ticaret nesnesinin Close() yöntemini kullanarak ticareti kapatırız.

Beklendiği gibi çalıştığından emin olmak için kodu derlemeyi ve MetaTrader'da test etmeyi unutmayın.

Verilen kodda, gerçekleştirilen birkaç görev vardır. Her adımın ayrıntılı bir açıklaması aşağıda verilmiştir:

  1. Değişkenleri başlat:

    • Alış pozisyonlarının ve satış pozisyonlarının sayısını sıfıra ayarlayın.
    • Geçerli hücreyi sıfıra ayarlayın.
  2. Açık pozisyonları sayın:

    • Şu anda açık olan tüm pozisyonlar arasında geçiş yapın.
    • Her pozisyonun biletini alın ve işlemin başarılı olup olmadığını kontrol edin.
    • Başarılı olursa, pozisyonun sihirli numarasını alın.
    • Sihirli sayı, girilen sihirli sayıyla eşleşirse, alım veya satım pozisyonları için ilgili sayacı artırın.
  3. Yeni bir pozisyonun açılıp açılamayacağını kontrol edin:

    • Açık satın alma pozisyonu olup olmadığını kontrol edin.
    • Mevcut fiyatın Bollinger Bantlarının alt tamponunun altında veya ona eşit olup olmadığını kontrol edin.
    • Satın alma pozisyonu için açık kalma süresinin mevcut çubuğun açık kalma süresinden farklı olup olmadığını kontrol edin.
  4. Stop Loss'u hesaplayın ve kar elde edin:

    • Giriş durdurma kaybını (puan olarak) mevcut fiyattan çıkararak zararı durdur hesaplayın.
    • Kar alma girişini (puan olarak) mevcut fiyata ekleyerek kar alma oranını hesaplayın.
    • Kâr alma girişi sıfırsa, kâr alma değişkenini sıfır olarak ayarlayın.
  5. Zararı durdur ve karı al:

    • Kaybı durdurmayı normalleştirmek ve kene boyutuna göre kar almak için bir işlev tanımlayın.
    • Geçerli sembol için onay boyutunu alın.
    • Zararı durdur ve kârı al değerlerini kene boyutuna bölerek normalleştirin.
  6. Yeni bir satın alma pozisyonu açın:

    • Normalleştirilmiş zararı durdur ve karı al dahil olmak üzere belirtilen parametrelerle bir satın alma pozisyonu açmak için Ticaret nesnesini kullanın.
  7. Bir satış pozisyonu açmak için üst bant geçişini kontrol edin:

    • Açık satış pozisyonu olup olmadığını kontrol edin.
    • Mevcut fiyatın Bollinger Bantlarının üst tamponunun üzerinde veya ona eşit olup olmadığını kontrol edin.
    • Satış pozisyonu için açık kalma süresinin mevcut çubuğun açık kalma süresinden farklı olup olmadığını kontrol edin.
    • Mevcut alış fiyatını kullanarak satış pozisyonu için zararı durdur ve karı al hesaplayın.
    • Zararı durdur ve karı al değerlerini normalleştirin.
    • Normalleştirilmiş zararı durdur ve karı al dahil olmak üzere belirtilen parametrelerle bir satış pozisyonu açın.
  8. Bollinger Bantlarının orta çizgisi geçilirse pozisyonları kapatın:

    • Açık alım ve satım pozisyonlarını sayın.
    • Alış pozisyonlarının sayısı sıfırdan büyükse ve mevcut alış fiyatı üst tamponun üzerindeyse, tüm alış pozisyonlarını kapatın.
    • Satış pozisyonlarının sayısı sıfırdan büyükse ve mevcut satış fiyatı alt tamponun altında veya ona eşitse, tüm satış pozisyonlarını kapatın.
  9. Pozisyonları kapatmak için işlevi tanımlayın:

    • Açık pozisyonları saymak için mevcut kodu kopyalayın ve giriş parametresine göre kapalı pozisyonlara değiştirin (tüm pozisyonlar için 0, alış pozisyonları için 1, satış pozisyonları için 2).

Kod, belirli koşullara dayalı olarak açık pozisyonları saymak ve yönetmek, yeni pozisyonlar açmak ve pozisyonları kapatmak için çeşitli kontroller ve hesaplamalar gerçekleştirir.

Bollinger bands EA MT5 Programming
Bollinger bands EA MT5 Programming
  • 2022.11.28
  • www.youtube.com
Today I will show you how to code a simple Bollinger bands EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully work...
 

mql5'te grafik panel nasıl oluşturulur | Bölüm 1/2


mql5'te grafik panel nasıl oluşturulur | Bölüm 1/2

Toby, bilgileri görüntülemek ve grafiğin arka plan rengini değiştirmek için bir düğme eklemek için MQL5'te basit bir grafik panelin nasıl oluşturulacağını gösterecek. Bu panelin herhangi bir uzman danışman için oluşturulabileceğinden bahsediyor, ancak örnek olarak EA zaman aralığını kullanacaktır. Toby, yorumlarda video konusunun bir kullanıcı tarafından istendiğini belirtiyor ve izleyicileri gelecek videolar için konu önermeye teşvik ediyor.

Toby, Meta Düzenleyici'yi açar ve zaman aralığı koparma EA'sı için dosyayı yükler. "Zaman aralığı EA paneli" adı verilen yeni bir uzman danışman olarak kaydeder ve derler. Paneli ayrı bir sınıf olarak bir içerme dosyasına yazacağını, bu sayede herhangi bir uzman danışmanda kullanımını kolaylaştıracağını açıklıyor. Toby, "grafik panel" adlı yeni bir içerme dosyası oluşturur ve panel boyutu, yazı tipi boyutu ve yazı tipi rengi için girdileri tanımlar.

Kontroller klasöründen o sınıftaki işlevleri kullanmasına izin verecek olan "dialog.mqh" dosyasını içerir. Toby, "CAppDialog" sınıfından miras alan "CGraphicalPanel" adlı bir sınıf tanımlar. Sınıfın yöntemleri için özel bir bölüm, yapıcı, yıkıcı, başlatma işlevi ve grafik olay işleyicisi için ortak bir bölüm ekler. Ayrıca sınıf yöntemleri için bir yorum bölümü içerir.

Daha sonra Toby, sınıf tanımından sonra sınıf yöntemlerinin gövdesini yazar. Yöntemlerin sınıfa ait olduğunu belirtir ve yapıcıyı, yıkıcıyı, başlatma işlevini ve grafik olay işleyicisini yazar. Her yöntemin amacını açıklamak için yorumlar ekler. Toby, hataları veya uyarıları kontrol etmek için kodu derler.

Toby, CFDialog sınıfını kullanarak bir diyalog paneli oluşturan panel oluşturma işlevini uygular. Giriş parametrelerine göre panelin adını, alt penceresini, konumunu ve boyutunu ayarlar. Panel oluşturma başarısız olursa, bir mesaj yazdırır ve false döndürür. Ayrıca grafiği güncellemek için bir grafik yenileme işlevi ekler. Toby, hatasız olduğundan emin olmak için kodu yeniden derler.

Uzman danışman dosyasında Toby, grafik panel içerme dosyasını içerir ve genel değişken bölümünde "panel" adlı panel sınıfından bir nesne oluşturur. Paneli onInit işlevinde başlatır ve grafik olaylarını panele iletmek için bir grafik olay işleyicisi ekler. Toby, grafik olay işleyicisinin gövdesini yazar ve panelin grafik olay fonksiyonunu uygun parametrelerle çağırır.

Son olarak Toby, paneli yok eden ve nedenini belirten onDeinit işlevine bir yok etme paneli işlevi ekler. Kodu tekrar derler ve MetaTrader'da test eder. Toby, uzman danışmanı tabloya sürükleyip bırakarak panelin işlevselliğini gösteriyor. Panelin butonunu kullanarak uzman danışmanı da kapatır.

Hey, ben Toby, bugün size MQL5'te nasıl grafik panel oluşturacağınızı göstereceğim. Bu aslında eğitimin ikinci kısmı. İlk bölümde sol tarafta basit bir panel oluşturduk ve kaçırdıysanız linkini açıklamada bulabilirsiniz. Bugünkü videomuzda panele bazı etiketler ve buton ekleyeceğiz. Bu örnek için, zaman aralığı koparma EA'yı kullanacağız. Bu uzman danışman nasıl kod yazılacağını öğrenmekle ilgileniyorsanız, kanalımda bir kodlama serim var. İlk bölümün linkini açıklamada da bulabilirsiniz.

Başlamak için MQL5 editörüne geçelim ve kodlamaya başlayalım. Burada grafik panel içerme dosyamız var ve ayrıca paneli görüntülemek için değiştirdiğimiz zaman aralığı koparma EA'mız var. İnclude dosyasına gidelim ve kullanıcıdan gelen girdi değerlerini kontrol edelim. Sınıfımızda private method bölümünün altında "check inputs" adında bir method oluşturacağız. OnInit işlevinden sonra bu yöntemi çağıracağız. Yöntem false döndürürse, OnInit işlevinden de false döndürürüz. Bu şekilde, eğer girişler geçersizse, daha fazla ilerlemeyeceğiz. Derleyelim ve devam edelim.

Şimdi panele etiket eklemeye başlayalım. Etiketler ve butonlar için gerekli class dosyalarını eklememiz gerekiyor. Dahil etme bölümüne gideceğiz ve etiketler için "controls/label.mqh" ve düğmeler için "controls/button.mqh" ekleyeceğiz. Daha sonra etiket değişkenlerimizi tanımlayacağız. Girişler, sihirli sayı, lotlar, başlangıç zamanı, süre ve kapanış zamanı için etiketlerimiz olacak. Derleyelim ve devam edelim.

createPanel işlevinde, etiketleri panele ekleyeceğiz. "M_L_Input" değişkenini kullanarak giriş etiketini oluşturacağız. Etiket için metin, renk ve yazı tipi boyutunu ayarlayacağız. Ardından etiketi panele yapıştıracağız. Bu işlemi diğer etiketler için de tekrarlayacağız. Tüm etiketleri ekledikten sonra sol taraftaki paneli derleyip kontrol edeceğiz. Daha iyi hizalama için etiketlerin konumlarını ayarlamamız gerekebilir. Derleyip kontrol edelim.

Şimdi panele butonu ekleyelim. "CButton" türünde bir "M_B_ChangeColor" değişkeni tanımlayacağız. Düğme için konumu, metni, metin rengini, arka plan rengini ve yazı tipi boyutunu ayarlayacağız. Son olarak panele butonu ekleyeceğiz. Derledikten sonra panelde butonu göreceğiz. Bu aşamada düğmenin herhangi bir işlevi yoktur, ancak bunu daha sonra ekleyeceğiz.

Ardından, panelin arka plan rengini ve yazı tipi adını değiştirelim. Bunu yapmak için "Defiance.mqh" dosyasını ekleyeceğiz ve varsayılan ayarlar için yeni değerler tanımlayacağız. Varsayılan yazı tipi adı ve arka plan rengi ayarlarının tanımını kaldıracağız ve ardından onlar için yeni değerler tanımlayacağız. "Consolas" yazı tipi adını ve koyu gri bir arka plan rengi kullanacağız. Derlemeden sonra, yeni arka plan rengi ve yazı tipiyle güncellenmiş paneli göreceğiz.

Son olarak uzman danışmandan gelen gerçek değerleri panel üzerinde gösterelim. Uzman danışman dosyasını içerme dosyamıza dahil edeceğiz ve giriş değişkenlerine erişeceğiz. Etiketleri, uzman danışmanın gerçek değerleri ile güncelleyeceğiz. Derlemeden sonra, panelde görüntülenen giriş değerlerini göreceğiz.

MQL5'te grafik panel oluşturmaya ilişkin bugünkü eğitimimiz bu kadar. Bir sonraki bölümde butona fonksiyonellik ekleyeceğiz ve paneli tamamlayacağız. Daha fazlası için takipte kalın!

How to create a graphical panel in mql5 | Part 1/2
How to create a graphical panel in mql5 | Part 1/2
  • 2022.12.04
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

mql5'te grafik panel nasıl oluşturulur | Bölüm 2/2


mql5'te grafik panel nasıl oluşturulur | Bölüm 2/2

Merhaba, bu Toby. Bugün size MQL5'te nasıl grafik panel oluşturacağınızı göstereceğim. Bu, eğitim serisinin ikinci bölümüdür. İlk bölümde sol tarafta basit bir panel oluşturduk. Eğer kaçırdıysanız, buraya bağlayacağım. Bugünkü videomuzda panele etiketler ve buton ekleyeceğiz. Bu örnek için, zaman aralığı koparma EA'yı kullanacağız. Bu uzman danışman nasıl kodlanır öğrenmek istiyorsanız kanalımda kodlama serim var. İlk bölümün linkini de buraya bırakıyorum.

Media editöre geçelim ve kodlamaya başlayalım. Grafik panel dosyamız ve paneli görüntüleyen değiştirilmiş zaman aralığı koparma EA dosyasına sahibiz. Dahil etme dosyasında, kullanıcının giriş değerlerini doğrulamak için "checkInputs" adlı bir yöntem oluşturacağız. OnInit işlevinde paneli oluşturmadan önce bu yöntemi çağıracağız. Girişlerden herhangi biri geçersizse, bir hata mesajı görüntüler ve false döndürürüz. Aksi takdirde, paneli oluşturmaya devam edeceğiz.

Ardından, panele etiketler ve bir düğme ekleyeceğiz. Etiketleri ve düğmeleri kullanmak için sınıf dosyalarını dahil etmemiz gerekir. Sınıftaki etiketler ve düğmeler için gerekli include ifadelerini ekleyeceğiz. Ardından, etiketler ve düğme için özel değişkenler tanımlayacağız.

CreatePanel fonksiyonunda paneli oluşturduktan sonra panele etiketler ve buton ekleyeceğiz. Konumlarını, metinlerini, renklerini ve yazı tipi boyutlarını ayarlayacağız. Son olarak Add yöntemini kullanarak panele ekleyeceğiz.

Kodu derleyeceğiz ve paneli kontrol edeceğiz. Etiketler ve düğme panelde görüntülenmelidir. Daha iyi bir görünüm için panelin arka plan rengini ve yazı tipi adını da değiştireceğiz. Uzman danışmandan gelen gerçek değerleri panelde görüntülemek için uzman danışman dosyasını dahil et bölümüne dahil edeceğiz. Ardından, CreatePanel işlevinde, uzman danışmandan girdi değerlerini alacağız ve etiketlerde göstereceğiz. Kodu derleyeceğiz ve paneli tekrar kontrol edeceğiz. Etiketler artık uzman danışmandan gelen gerçek girdi değerlerini göstermelidir. Bu işlemi tüm giriş değerleri için tekrarlayacağız.

Bu adımları tamamladığımızda, etiketli ve düğmeli grafik panel hazır olacaktır. Şimdi panelde kalan etiketlerin değerlerini eklemeye geçebiliriz. Bunu sihirli sayı etiketi için yaptığımızla aynı şekilde yapacağız. İnclude dosyamıza geri dönelim ve etiketleri oluşturacağımız kısmı bulalım. Burada partiler, başlangıç zamanı, süre ve kapanış zamanı değerlerini görüntülemek için kodu ekleyeceğiz.

Parti etiketi için "sihirli sayı" metnini "lot" ile değiştireceğiz ve y koordinatını 70 olarak güncelleyeceğiz. Başlangıç zamanı etiketi için, adı "başlangıç zamanı" olarak değiştirip y-koordinatını güncelleyeceğiz. Koordinatı 90 olarak ayarlayın. Süre etiketinin adını "duration" olarak değiştirip y koordinatını 110 olarak güncelleyeceğiz. Son olarak kapanış saati etiketinin adını "kapanış saati" olarak değiştirip güncelleyeceğiz. y koordinatı 130'a.

Bu değişiklikleri yaptıktan sonra kodu derleyebiliriz.

Şimdi uzman danışmanımıza bakıp derlersek partilerin gerçek değerlerini, başlangıç saatini, süreyi ve kapanış saatini panelde görebilmemiz gerekir. Ardından, düğmenin işlevselliğini uygulayalım. Şu an butona tıkladığımızda herhangi bir işlem yapmıyor. Bunu değiştirelim. İnclude dosyamızda butonu oluşturduğumuz bölümü bulacağız. Burada, düğme tıklaması için bir olay işleyicisi ekleyebiliriz. Bu amaçla OnChartEvent işlevini kullanacağız. Event handler içerisinde butona tıklandığında hangi işlemi yapmak istediğimizi belirtebiliriz.

Şimdilik buton tıklandığında bir mesaj görüntüleyelim. Terminale bir mesaj çıktısı almak için Yazdır işlevini kullanabiliriz. Olay işleyiciyi ekledikten sonra kodu derleyebiliriz.

Şimdi, uzman danışmanı çalıştırıp butona tıklarsak, terminalde görüntülenen mesajı görmeliyiz.

Bu kadar! MQL5'te etiketler ve düğme içeren bir grafik paneli başarıyla oluşturduk. Etiketler, uzman danışmanın giriş değerlerini görüntüler ve düğmenin bir tıklama olayı işleyicisi vardır.

Düğmeye daha fazla işlevsellik eklemekten çekinmeyin veya paneli gereksinimlerinize göre özelleştirin. Değişikliklerin etkili olduğunu görmek için hem içerme dosyasını hem de uzman danışman dosyasını derlemeyi unutmayın.

How to create a graphical panel in mql5 | Part 2/2
How to create a graphical panel in mql5 | Part 2/2
  • 2022.12.12
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

mql5'te dinamik konum boyutlandırma | MT5 programlama



mql5'te dinamik konum boyutlandırma | MT5 programlama

Merhaba, ben Toby. Bugün, burada gösterilene benzer sonuçlar elde edebilmeniz için MQL5'te dinamik lot büyüklüğünü nasıl hesaplayacağınızı göstereceğim. Kendiniz için deneyebilirsiniz.

Pekala, hadi başlayalım. Bu videoda, şu anda sabit bir parti büyüklüğü kullanan bir stratejiye dinamik bir parti büyüklüğü hesaplaması ekleyeceğiz. Bu, işlem başına 100$ veya hesap bakiyesinin bir yüzdesi gibi belirli bir tutarı riske atmamıza izin verecektir. Ek olarak, dinamik parti büyüklüğü hesaplamasıyla stratejinin daha da geliştirilip geliştirilemeyeceğini belirlemek için bir geriye dönük test gerçekleştireceğiz. Ayrıca size strateji ve ayarları konusunda rehberlik edeceğim.

Başlamak için MetaEditor'a geçelim ve kodlamaya başlayalım. İşte MetaEditor'dayız ve bu gösteri için, dinamik parti büyüklüğü hesaplamasını dahil etmek için 'Zaman Aralığı EA'yı kullanacağım. Ancak, seçtiğiniz herhangi bir uzman danışmanı kullanabilirsiniz. Bu EA'yı daha önce kanalımızda bir seri halinde kodlamıştık. Aynı uzman danışmanı kullanmak isterseniz, ilk bölüme bir bağlantı vereceğim.

Öncelikle 'Time Range EA' dosyasını açalım. Şimdi yeni bir isimle kaydedelim. 'Farklı Kaydet'i tıklayın ve 'Zaman Aralığı EA Dinamik Lotlar' olarak adlandırın. Harika, dosya kaydedildi.

Bu uzman danışman, dinamik parti büyüklüğü hesaplamasını ekleyeceğimiz yerdir. Dosyayı derleyelim ve strateji test cihazındaki girdileri inceleyelim. MetaTrader 5 platformunda strateji test aracını açın ve gerekirse uzman danışmanları yenileyin. Şimdi, 'Zaman Aralığı EA Dinamik Lotları'nı seçin. Girdiler sekmesinde, halihazırda sabit bir değeri kabul eden 'Parti Büyüklüğü' girişini göreceksiniz. İşlem başına 100$ veya hesap bakiyesinin bir yüzdesini riske edecek değerler girebilmemiz için bunu değiştirmemiz gerekiyor.

MetaEditor'a geri dönerek, 'giriş' bölümünün altına dinamik bir parti büyüklüğü girişi ekleyeceğiz. 'Sihirli Sayı'dan sonra biraz boşluk bırakın ve 'Lot Modu Enum' adlı bir numaralandırma (enum) tanımlayın. Bu numaralandırmada üç seçenek olacaktır: 'Sabit', 'Para' ve 'Hesabın Yüzdesi'. Bu, istenen parti modunu kolayca seçmemizi sağlayacaktır. Okunabilirliği artırmak için her seçenek için yorum sağlayın.

Ardından, bu numaralandırmayı bir girdi olarak kullanacağız. Örneğin, "Lot Mode Enum" türüyle bir "giriş" tanımlayın ve bunu "Lot Giriş Modu" olarak adlandırın. Varsayılan değeri 'Parti Modu Sabit' olarak ayarlayın ve bu girişin amacını açıklayan bir yorum ekleyin.

Kodu derleyin ve strateji test cihazında nasıl göründüğünü kontrol edin. 'Sabit', 'Para bazında Lot' ve 'Hesabın Yüzdesine göre Lot' arasında seçim yapmanızı sağlayan 'Parti Modu' açılır menüsünü göreceksiniz.

Şimdi, seçilen parti moduna bağlı olarak farklı değerleri barındırmak için 'Parti Boyutu' girişini değiştirelim. Giriş türünü 'çift' olarak değiştirin ve yorumu şu seçenekleri yansıtacak şekilde değiştirin: 'Lot/Para/Yüzde'. Kodu yeniden derleyin ve değişikliklerin yansıtıldığından emin olmak için strateji test aracını kontrol edin.

Kullanıcının girişini doğrulamak için 'CheckInput' işlevini değiştireceğiz. Girişin kabul edilebilir aralıkta olduğundan emin olmak için her lot modu seçeneği için kontroller ekleyin. 'Sabit' lot modu için, lot büyüklüğü sıfırın üzerinde olmalı ve belirli bir limiti (örn. 10 lot) aşmamalıdır. Bu koşullar karşılanmazsa uygun bir hata mesajı görüntüleyin. Bu işlemi 'Para' ve 'Hesabın Yüzdesi' lot modları için tekrarlayın ve limitleri buna göre ayarlayın. Ek olarak, bu iki lot modundan herhangi biri seçilirse, stoploss'un aktif olup olmadığını kontrol etmemiz gerekecek.

MQL5'te dinamik parti büyüklüğü hesaplamasının uygulanmasına dahil olan adımların kısa bir özeti:

  1. Ticaret stratejiniz için izin verilen minimum ve maksimum lot boyutlarını belirleyin.
  2. Partilerin değişebileceği artışı temsil eden istenen parti adım boyutunu tanımlayın.
  3. Ticaret için zararı durdurma mesafesini hesaplayın.
  4. Başlangıç lot büyüklüğünü hesaplamak için zararı durdurma mesafesini kullanın.
  5. Hesaplanan parti büyüklüğünün izin verilen minimum değerin altında olup olmadığını kontrol edin ve gerekirse ayarlayın.
  6. Hesaplanan parti boyutunun izin verilen maksimum değeri aşıp aşmadığını kontrol edin ve gerekirse ayarlayın.
  7. Hesaplanan parti boyutunun geçerli bir adım boyutu olup olmadığını kontrol edin ve gerekirse en yakın geçerli adım boyutuna ayarlayın.
  8. Son hesaplanan parti büyüklüğünü döndürün.
  9. İşlemi açmak için hesaplanan lot büyüklüğünü kullanın.

Bu adımları izleyerek, lot büyüklüğünüzün, işlem başına istediğiniz riske ve işlem stratejinizin kısıtlamalarına göre dinamik olarak hesaplanmasını sağlayabilirsiniz.

Dynamic position sizing in mql5 | MT5 programming
Dynamic position sizing in mql5 | MT5 programming
  • 2022.12.18
  • www.youtube.com
Today I will show you how to code dynamic position sizing for Metatrader 5 in mql5. We create two functions to calculate a dynamic position size for any Expe...
 

mql5'te takip eden durdurma kaybı | MT5 programlama



mql5'te takip eden durdurma kaybı | MT5 programlama

Bugün, MQL5'teki herhangi bir uzman danışmana nasıl eğitim durdurma kaybı ekleyeceğiniz konusunda adım adım rehberlik edeceğim. Bu videonun sonunda, stratejimizin bir ticaret durdurma kaybı ile geliştirilip geliştirilemeyeceğini değerlendirmek için bir geriye dönük test de yapacağız. Öyleyse başlayalım.

Kodlamaya başlamadan önce, ticaret durdurma kaybının temel kavramını anlayalım. Belirli bir fiyattan bir pozisyona girdiğimizi düşünün. Başlangıçta, stop-loss'umuz belirli bir seviyede belirlenir. Fiyat lehimize hareket ettikçe stoploss'u fiyatın gerisinde takip ediyoruz ve her zaman aynı mesafeyi koruyoruz. Fiyat geri dönerse, zararı durdur yerinde kalır. Fiyat bizim yönümüzde hareket etmeye devam ederken, stop-loss'umuzun izini sürmeye devam ediyoruz. Sonunda, fiyat tersine dönebilir ve pozisyonumuzu durdurabilir. Ana fikir, önemli piyasa trendlerinden kar elde etmek ve trend sona erdiğinde pozisyondan çıkmaktır.

Şimdi kodlamaya başlamak için MetaEditor'a geçelim. Bu amaçla herhangi bir uzman danışmandan yararlanabilirsiniz ancak bu video için bir önceki videoda kodladığımız dinamik lot boyutuna sahip "Timeline GA"yı kullanacağız. Dosyayı açın ve "Kaybı Durdur" adlı yeni bir uzman danışman olarak kaydedin. Her şeyin hatasız olduğundan emin olmak için kodu derleyin.

Uzman danışmanımıza bir ticaret durdurma kaybı eklemek için birkaç adımı izlememiz gerekiyor. İlk olarak, takip eden stoploss için ek bir giriş ekleyelim. Giriş bölümünde, "EnableTrailingStopLoss" adlı bir boole girdi değişkeni ekleyin ve varsayılan değerini "false" olarak ayarlayın. Bu girdi, ticaret durdurma kaybını etkinleştirmemize veya devre dışı bırakmamıza izin verecektir. Değişiklikleri dahil etmek için kodu derleyin.

Şimdi MetaTrader platformuna geri dönün ve Strateji Test Aracını açın. Uzman danışmanımız "İzleyen Kaybı Durduran Dinamik Lotlar"ı seçin. Giriş sekmesinde, yeni eklenen "EnableTrailingStopLoss" girişini bulacaksınız. Ticaret durdurma kaybını etkinleştirmek için "yanlış"tan "doğru"ya değiştirin.

Ardından stop-loss'umuzu güncelleyecek fonksiyonu yazalım. Bu fonksiyonu "ClosePosition" fonksiyonunun önüne yerleştireceğiz. İşlev içinde, öncelikle, alım satım stoploss'u etkinleştirip etkinleştirmediğimizi ve pozisyon için mevcut bir stoploss olup olmadığını kontrol edin. Değilse, devam etmeye gerek yoktur, bu nedenle fonksiyondan geri dönün.

Şimdi, tüm açık pozisyonları dolaşalım. Her pozisyon için uzman danışmanımıza ait olup olmadığını kontrol edeceğiz. Pozisyon tipini (al ya da sat), mevcut zararı durdur ve kar alma değerlerini alın. Geçerli fiyat ve sembolün aralığına dayalı olarak yeni zarar durdurmayı hesaplayın ve kullanıcı tanımlı durdurma kaybı yüzdesi ile çarpın. Durdurma kaybını pozisyon tipine göre ayarlayın.

Yeni durdurma kaybı ile pozisyonu değiştirmeden önce birkaç kontrol yapmamız gerekiyor. İlk olarak, hataları önlemek için yeni stoploss'un mevcut stoploss'tan farklı olduğundan emin olun. Ek olarak, bazı brokerler bir durdurma seviyesi empoze ederek, zararı durdurmanın mevcut fiyata çok yakın ayarlanmasını önler. Yeni durdurma kaybının durma seviyesine uyup uymadığını kontrol edin ve değilse bir sonraki pozisyona geçin.

Son olarak, pozisyonu yeni zararı durdur ve mevcut kar al değeriyle değiştirin. Değişiklik başarısız olursa, karşılaşılan sorunu belirten bir hata mesajı yazdırın. Başka konumların işlenmesini önlemek için işlevden dönün.

Hata veya uyarı olmadığından emin olmak için kodu derleyin. Şimdi, güncelleme durdurma kaybı işlevi tamamlandı.

Bu işlevi uzman danışmanımıza entegre etmek için, onu "OnTick" işlevi içinde çağırmamız gerekiyor. Araları kontrol ettikten sonra işlev çağrısını yapın. Bu, stoploss'un alınan her tick için güncellenmesini sağlar.

Değişiklikleri onaylamak için kodu son bir kez derleyin. Artık uzman danışmanımız, kullanıcı tanımlı parametrelere dayalı olarak zarar durdurmayı takip etme yeteneğine sahiptir. İzleyen zarar durdurma özelliğini etkinleştirmek veya devre dışı bırakmak için giriş değişkenini ekledik ve açık pozisyonlar için zararı durdur özelliğini güncelleme işlevini uyguladık.

Şimdi, ticaret durdurma kaybının etkinliğini değerlendirmek için uzman danışmanımızı geriye dönük test etmeye devam edelim. MetaTrader platformunda, Strateji Test Aracını açın ve test için uzman danışmanımız "Kaybı Durdur"u seçin. Test için istenen sembolü ve zaman çerçevesini seçin.

Girdiler sekmesinde, takip eden zarar durdurma yüzdesi ve lot boyutu dahil olmak üzere yapılandırılacak çeşitli parametreler bulacaksınız. Bu parametreleri tercihlerinize ve ticaret stratejinize göre ayarlayın.

Arka testi başlatmak için Başlat düğmesine tıklayın. Uzman danışman, belirtilen parametrelere dayalı olarak alım satımları yürütecek ve fiyat bizim lehimize hareket ettikçe stop-loss dinamik olarak ayarlanacaktır.

Geriye dönük test tamamlandıktan sonra sonuçları Sonuçlar ve Grafik sekmelerinde inceleyebilirsiniz. İzleyen zararı durdurmanın strateji üzerindeki etkisini değerlendirmek için kar ve zarara, düşüşe ve diğer performans ölçütlerine dikkat edin.

Geriye dönük test sonuçları tatmin ediciyse, canlı işlem hesabınızda işlem durdurma kaybı ile uzman danışmanı kullanmayı düşünebilirsiniz. Ancak, herhangi bir ticaret kararı vermeden önce stratejinin performansını kapsamlı bir şekilde değerlendirmek ve daha fazla test veya optimizasyon yapmak çok önemlidir.

Sonuç olarak, MQL5'i kullanarak uzman danışmanımıza başarılı bir şekilde ticaret durdurma kaybı ekledik. Stop Loss'u fiyatın arkasında takip ederek, olumlu piyasa trendlerinde kârı maksimize etmeyi ve trend tersine döndüğünde kayıpları minimuma indirmeyi hedefliyoruz. Gerçek ticaret hesaplarına uygulamadan önce herhangi bir değişikliği veya stratejiyi kapsamlı bir şekilde test etmeyi unutmayın.

Lütfen bunun genel bir kılavuz olduğunu ve bu tür değişiklikleri uygulamadan önce programlama ve ticaret ilkelerini iyi anlamanın çok önemli olduğunu unutmayın. Her zaman dikkatli olun ve gerekirse profesyonel bir finansal danışmana danışmayı düşünün.

Trailing stop loss in mql5 | MT5 programming
Trailing stop loss in mql5 | MT5 programming
  • 2022.12.31
  • www.youtube.com
Today I will show you how to code a trailing stop loss in mql5. You can use the same function to add a trailing stop loss to any other Expert Advisor for Met...
 

mql5'te basit bir RSI EA kodlayın | MT5 Programlama



mql5'te basit bir RSI EA kodlayın | MT5 Programlama

Bu eğitimde Toby kendini tanıtıyor ve eğitimin amacını açıklıyor; bu, MetaEditor kullanarak basit bir Expert Advisor'ın (EA) nasıl kodlanacağını gösteriyor. EA, aşırı satım ve aşırı alım koşullarına dayalı alım ve satım sinyalleri oluşturmak için RSI göstergesini kullanacaktır. Toby ayrıca EA'ya bir zararı durdur, karı al ve ters sinyalde alım satımlardan çıkma seçeneğinin dahil edileceğinden bahseder.

Toby, MetaEditor'da yeni bir EA dosyası oluşturarak başlar ve mevcut kodu temizler. Daha sonra EA için sihirli sayı, lot boyutu, RSI dönemi, RSI seviyesi, zararı durdur, karı al ve ters sinyalde işlemleri kapatma seçeneği gibi girdi parametrelerini tanımlar. Bu giriş parametrelerine varsayılan değerler atar ve her birini açıklamak için yorumlar ekler.

Giriş parametrelerini tanımladıktan sonra Toby, genel değişkenler bölümünü oluşturmaya geçer. RSI gösterge tutamacı için değişkenler, RSI değerlerini saklamak için bir arabellek, geçerli keneyi saklamak için bir kene türü değişkeni, pozisyonları açmak ve kapatmak için bir ticaret nesnesi ve çubuk başına yalnızca bir ticaretin açılmasını sağlamak için iki tarih-saat değişkeni bildirir. CTrade sınıfına erişmek için gerekli #include direktifini de içerir.

Ardından Toby, OnInit() işlevinde girdi parametresi doğrulamasını uygular. Her giriş parametresinin belirtilen kriterleri karşılayıp karşılamadığını kontrol eder ve herhangi bir giriş geçersizse bir hata mesajı görüntüler. Hata mesajlarını yazdırmak için Alert() işlevini kullanır ve bir hatayla karşılaşılırsa OnInit() işlevinden geri döner.

Giriş doğrulamaya ek olarak Toby, ticaret nesnesi için sihirli sayıyı ayarlar ve RSI göstergesi tutamacını oluşturur. Tanıtıcı oluşturmanın başarılı olup olmadığını kontrol eder ve başarısız olursa bir hata mesajı görüntüler. Ayrıca, değerlerle çalışmayı basitleştirmek için RSI arabelleği serisini ayarlar.

OnDeinit() işlevinde Toby, kaynakları boşaltmak için IndicatorRelease() işlevini kullanarak RSI göstergesini serbest bırakır.

OnTick() işlevine geçerek Toby, SymbolInfoTick() işlevini kullanarak geçerli onay işaretini alarak başlar. Onay alma işleminin başarılı olup olmadığını kontrol eder ve başarısız olursa bir hata mesajı görüntüler. Mevcut kenenin satış ve alış fiyatlarını ileride kullanmak üzere global değişken currentTick'e atar.

Daha sonra Toby, CopyBuffer() işlevini kullanarak RSI gösterge değerlerini alır. Değerleri rsiValues adlı bir değişkene atar ve alma işleminin başarılı olup olmadığını kontrol eder. Daha fazla analiz için iki RSI değerini tamponda saklar.

Alınan gerekli verilerle, Toby artık ticaret mantığını OnTick() işlevinde uygulamaya devam edebilir. Ancak metinde verilen kod kesilmiş ve kalan ayrıntılar eksik.

Öğretici, giriş parametresi tanımı, giriş doğrulaması, genel değişken bildirimi, RSI göstergesi işleme ve mevcut onay işareti alma dahil olmak üzere EA'nın ilk kurulumunu kapsar. Öğretici, sonraki adımlarda ticaret mantığını uygulamak için temel oluşturur.

Code a simple RSI EA in mql5 | MT5 Programming
Code a simple RSI EA in mql5 | MT5 Programming
  • 2023.01.08
  • www.youtube.com
Today I will show you how to code a simple RSI EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Expe...
 

Mql5'te inanılmaz RSI ticaret botu! | MT5 programlama



Mql5'te inanılmaz RSI ticaret botu! | MT5 programlama

Hey, ben Toby ve bugün size %100 kazanma oranı olan bir stratejiyi nasıl kodlayacağınızı göstereceğim. Bu eğitimde, mevcut bir Uzman Danışmanı (EA) değiştireceğiz ve RSI göstergesine bir filtre ekleyeceğiz. Kodlama sürecinde size adım adım rehberlik edeceğim. Başlayalım!

Adım 1: Stratejiyi Oluşturma MetaEditor'da çalışıyor olacağız. Önceki videoda oluşturduğumuz EA'yı açın. Henüz izlemediyseniz, izlemeniz için linkini bırakıyorum. Dosyayı "RSI_MA_Filter_EA" gibi yeni bir adla kaydedin.

Adım 2: Girdileri Değiştirmek Filtreyi uygulamak için, hareketli bir ortalama periyot girişi eklememiz gerekiyor. Ayrıca, hareketli ortalamanın çalıştığı zaman çerçevesi için bir girdi de ekleyeceğiz. Zararı durdur, kârı al ve ters sinyal girişlerini olduğu gibi tutacağız.

Adım 3: Global Değişkenleri Ayarlama Global değişkenler bölümünde, RSI göstergesini hareketli ortalamadan ayırt etmek için tutamacı ve arabelleği yeniden adlandırmamız gerekiyor. Hareketli ortalama için bir tanıtıcı ve arabellek ekleyeceğiz. Ek olarak, açık zamanlı alım ve açık zamanlı satışla ilgili gereksiz değişkenleri kaldırabiliriz.

Adım 4: onInit İşlevinde Değişiklikler Yapma onInit işlevinde, hareketli ortalama dönem girişi için bir kontrol ekleyeceğiz. Ayrıca fiyat kapanışı yerine açılış fiyatını kullanmak için RSI tutamacını değiştireceğiz. Ardından, hareketli ortalama göstergesi için tanıtıcı ve arabellek oluşturacağız.

Adım 5: İşareti Kaldırma İşlevinin Güncellenmesi İşareti kaldırma işlevinde, önce mevcut tikin yeni bir çubuk açık tik olup olmadığını kontrol edeceğiz. Değilse, geri dönüp bir sonraki bar açık tikini bekleyeceğiz. Bu kontrolü gerçekleştirmek için özel bir işlev ekleyeceğiz. Ardından, hareketli ortalamanın değerlerini alıp tamponda saklayacağız. Ayrıca, hareketli ortalama filtresini dahil etmek için alış ve satış pozisyonlarını açma koşullarını da ayarlayacağız.

Adım 6: Derleme ve Test Etme Gerekli tüm değişiklikleri yaptıktan sonra, herhangi bir hata olup olmadığını kontrol etmek için kodu derleyeceğiz. Her şey başarıyla derlenirse, strateji test cihazında EA'yı test etmeye devam edebiliriz. 2012'den günümüze geçmiş verileri kullanarak, RSI ve hareketli ortalama dönemleri için uygun girdileri seçerek, zararı durdur, karı al ve zıt bir sinyalde işlemleri kapatma seçeneğiyle görsel bir test yapacağız.

Bu öğreticiyi takip ederek, %100 kazanma oranına sahip bir stratejiyi nasıl kodlayacağınızı öğrendiniz. Mevcut bir EA'yı değiştirdik ve RSI göstergesine hareketli bir ortalama filtresi ekledik. Dosyanızı kaydetmeyi ve hatasız derlemeyi unutmayın. Artık strateji test cihazını kullanarak stratejiyi MetaTrader 5 platformunda test edebilirsiniz. Gelecekteki kodlama çabalarınızda iyi şanslar!

Amazing RSI trading bot in mql5! | MT5 programming
Amazing RSI trading bot in mql5! | MT5 programming
  • 2023.01.15
  • www.youtube.com
Today I will show you how to code a RSI trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Ex...
 

Donchian kanalı özel Gösterge EA | MT5 programlama



Donchian kanalı özel Gösterge EA | MT5 programlama

Hey, bu Toby. Bugün size MQL5'te özel bir göstergeyi nasıl kodlayacağınızı göstereceğim. Bir Donchian Kanalı göstergesi oluşturacağız ve daha sonra bunu karlı bir Uzman Danışman (EA) geliştirmek için kullanacağız. EA hazır olduğunda, performansını değerlendirmek için bazı geriye dönük testler yapacağız. Sonuçlardan da görebileceğiniz gibi, strateji oldukça iyi bir performans sergiliyor. Başlayalım!

Şimdi, Strateji Test Aracı'ndaki sonuçları analiz edelim. Donchian Channel Uzman Danışmanı umut verici sonuçlar gösteriyor. Bu nedenle, ilk adımımız stratejiyi tanımlamaktır. Özel bir Donchian Kanalı göstergesi kodlayacağız ve bunu Uzman Danışmanı oluşturmak için kullanacağız. Grafikteki temel strateji fikrini özetleyelim.

Mavi çizgiler, bu videoda kodlayacağımız Donchian Kanalı göstergesini temsil ediyor. Donchian Kanalı, önceki n-çubuklarının en yüksek ve en düşük seviyesini gösterir. Birçok tacir, fiyat üst bandın üzerine çıktığında bir satın alma işlemine girdikleri koparma stratejileri geliştirmek için Donchian Kanalını kullanır. Ancak, bu EA için zıt yaklaşımı keşfedeceğiz. Fiyat Donchian Kanalı'nın üst bandının üzerine çıktığında bir satış işlemi yapacağız. Benzer şekilde, fiyat Donchian Kanalı'nın alt bandının altına düştüğünde bir alış pozisyonu alacağız. Ayrıca puanlara veya kanalın yüzdesine göre bir stop-loss belirleyeceğiz. Ek olarak, kanalın boyutunu dikkate almak için Donchian Channel EA'ya bir filtre ekleyebiliriz.

Şimdi, özel Donchian Kanalı göstergemizi kodlamaya başlamak için Meta Düzenleyiciye atlayalım.

Meta Düzenleyicide, yeni bir özel gösterge dosyası oluşturarak başlayalım. Gereksiz yorumları kaldırarak ve parantezleri hizalayarak kodu biraz temizleyeceğiz. Ardından, göstergenin özelliklerini tanımlayacağız. Ayrı bir pencere yerine ana grafik penceresinde görüntülenmesi gerektiğini belirteceğiz. Göstergemizin sahip olacağı arabellek ve grafik sayısını da bildireceğiz, ki bu durumda bu iki olacaktır.

Devam ederken, özel göstergemiz için girdileri tanımlayacağız. Bu girişler, kullanıcıların göstergeyi bir grafiğe uygularken özelleştirmesine olanak tanır. Donchian Kanalı dönemi, kanalın ofseti (yüzde olarak) ve kanalın rengi için girdiler oluşturacağız.

Kodu derledikten sonra indikatör için gerekli değişkenleri tanımlayacağımız Global değişkenler bölümüne geçeceğiz. Donchian Kanalının üst ve alt değerleri için arabellekler ve üst ve alt değerlerin yanı sıra ilk çubuk indeksini depolamak için ek değişkenler oluşturacağız.

OnInit işlevinde, arabelleklerimizi başlatacağız ve grafikteki göstergeyi tanımlamak için kullanılacak gösterge kısa adını ayarlayacağız.

Son olarak OnCalculate fonksiyonunda Donchian Channel göstergesi için hesaplama yapacağız. Grafikte ilerlemek için yeterli çubuk olup olmadığını kontrol edeceğiz. Değilse, sıfır döndürürüz. Aksi takdirde, açık fiyatları kullanarak her çubuk için üst ve alt değerleri hesaplarız. Bu değerleri karşılık gelen arabelleklerde saklayacağız.

Kod herhangi bir hata veya uyarı olmadan derlendikten sonra, özel göstergemizi test edebiliriz. Bir tablo açın, Gezgin'e gidin ve Donchian Kanalım göstergesini bulun. Grafiğin üzerine sürükleyip bırakın. Gösterge ayarlarında istenen periyodu, ofseti ve rengi belirtin.

Donchian channel custom Indicator EA | MT5 programming
Donchian channel custom Indicator EA | MT5 programming
  • 2023.01.29
  • www.youtube.com
Today I will show you how to code a Donchian channel custom indicator EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a...
 

mql5'te harika Donchian Kanalı ticaret botu! | MT5 programlama



mql5'te harika Donchian Kanalı ticaret botu! | MT5 programlama

Özel göstergeyi grafiğe ekledikten sonra, Donchian Kanalının mavi çizgiler olarak görüntülendiğini göreceksiniz. Donchian Kanalı göstergesi, önceki 'n' çubuklarının en yüksek ve en düşük seviyesini gösterir. Genellikle tüccarların, fiyat Donchian Kanalı'nın üst bandının üzerine çıktığında alım satım işlemlerine girdiği ve alt bandın altına geçtiğinde alım satım işlemleri yaptığı koparma stratejileri oluşturmak için kullanılır.

Ancak, bu EA (Uzman Danışman) için zıt yaklaşımı test etmek istiyoruz. Fiyat üst bandın üzerine çıktığında satın almak yerine satacağız ve bunun tersi de geçerli. Yani, fiyat Donchian Kanalının üst bandının üzerine çıktığında satış pozisyonu alacağız ve alt bandın altına geçtiğinde ise alım pozisyonu alacağız.

Ek olarak, her işlem için puan veya kanalın yüzdesi olarak bir zarar durdurma belirleyeceğiz. Kanalın boyutuna göre Donchian Channel EA'ya bir filtre eklemeyi de düşünebiliriz. Şimdi, özel Donchian Channel göstergemizi kodlamaya başlamak için MetaEditor'a geçelim.

MetaEditor'da, sol üst köşedeki "Yeni"ye tıklayarak, "Özel Gösterge"yi seçerek ve "İleri"ye tıklayarak yeni bir özel gösterge dosyası oluşturun. Dosyayı "MyDonchianChannel" olarak adlandırın ve işlemi tamamlamak için "İleri" ve "Bitir"e tıklayın. Dosya oluşturulduktan sonra, gereksiz yorumları kaldırarak ve parantezleri hizalayarak kodu temizleyin. Ardından, herhangi bir hata veya uyarı olup olmadığını kontrol etmek için kodu derleyin.

Şimdi özel göstergemizin özelliklerini tanımlayalım. Ana grafik penceresinde görüntülenmesini istiyoruz, bu nedenle "indicator_chart_window" özelliğini true olarak ayarlayın. Göstergemiz için arabellek ve çizim sayısını da tanımlamamız gerekiyor. İki satırımız (üst ve alt) olduğundan, "indicator_buffers"ı 2'ye ve "indicator_plots"u 2'ye ayarlayın.

Ardından, özel göstergemiz için giriş parametrelerini tanımlayacağız. Donchian Kanalı periyodu, ofset yüzdesi ve gösterge çizgilerinin rengi için girdilere ihtiyacımız var. Uygun türleri (nokta ve ofset için tamsayı ve renk için renk) kullanarak bu girişleri tanımlayın ve her giriş için varsayılan değerleri ve yorumları ayarlayın.

Hata veya uyarı olmadığından emin olmak için kodu yeniden derleyin.

Şimdi özel göstergenin "onCalculate" işlevini kodlamaya geçelim. İlk olarak, grafikteki çubuk sayısının giriş periyodu artı birden az olup olmadığını kontrol edin. Eğer öyleyse, göstergeyi hesaplamak için yeterli çubuk yok, bu yüzden sıfırla dönün. Ardından, Donchian Kanalını hesaplamaya başlamak istediğimiz ilk çubuğu temsil eden "birinci" değişkeni ayarlayın. Önceki hesaplama yapılmadıysa (previous_calculated sıfırdır), "ilk" giriş periyoduna ayarlayın. Aksi takdirde, önceki_hesaplanan eksi bir olarak ayarlayın. Şimdi, bir for döngüsü kullanarak çubuklar arasında döngü yapmamız gerekiyor. Döngüyü "ilk" çubuktan başlatın ve geçerli çubuk, tablodaki toplam çubuk sayısından az olana kadar devam edin. Her döngü yinelemesinin sonunda çubuk sayacını artırın.

Döngünün içinde, her çubuğun açık fiyatlarını kullanarak Donchian Kanalının üst ve alt değerlerini hesaplayın. Bu değerleri sırasıyla "üst" ve "alt" değişkenlerde saklayın.

Ofseti hesaplamak için alt değeri üst değerden çıkarın ve giriş ofseti bölü 100 ile çarpın. Bu bize ofset değerini puan veya kanalın yüzdesi olarak verecektir. Son olarak, hesaplanan değerleri, arabellek dizini ve çubuk sayacını kullanarak karşılık gelen arabelleklerde saklayın. Tamponlardaki değerleri hesaplayıp sakladıktan sonra, her arsa için gösterge etiketlerini ayarlamamız gerekiyor. Bu etiketler, göstergenin özellikler penceresinde görüntülenecektir.

SetIndexLabel() işlevini kullanarak, arabellek indeksini ve etiketi parametre olarak ileterek üst ve alt çizimler için etiketleri atayın. Ardından, SetIndexStyle() ve SetIndexColor() işlevlerini kullanarak gösterge çizgilerinin renklerini ayarlayacağız. Her satır için arabellek indeksini, çizgi stilini (örn. STYLE_SOLID) ve istenen rengi belirtin.

Son olarak, göstergeyi görsel olarak daha çekici hale getirmek için bazı ek kodlar ekleyeceğiz. Indicator_shortname özelliğini boş bir dizeye ayarlayarak göstergenin adını gizleyebiliriz. Ek olarak, ObjectCreate() ve ObjectSetText() fonksiyonlarını kullanarak üst bandın mevcut değeri ile bir grafik etiketi ekleyebiliriz.

Hata veya uyarı olmadığından emin olmak için kodu bir kez daha derleyin.

Tebrikler! Özel Donchian Kanalı göstergesini başarıyla kodladınız. Artık ticaret stratejinizi uygulamak için bu göstergeyi Uzman Danışmanınızda kullanabilirsiniz.

Bir sonraki adımda, koparma stratejisine dayalı işlemleri yürütmek için Donchian Kanalı göstergesini kullanacak Uzman Danışmanı (EA) kodlamaya geçeceğiz. MetaEditor'da yeni bir dosya açın, "DonchianChannelEA" olarak adlandırın ve "Uzman Danışman" seçeneğini seçin. Dosyayı oluşturmak için "İleri" ve "Son" düğmesini tıklayın. Gereksiz yorumları kaldırarak ve parantezleri hizalayarak ilk kodu temizleyin.

İlk olarak, EA'mız için giriş parametrelerini tanımlayacağız. Bunlar, Donchian Kanalı için lot büyüklüğünü, zararı durdur, kârı al ve dönemi ve mahsupları içerecektir. Uygun türleri kullanarak bu girişleri tanımlayın ve her giriş için varsayılan değerleri ve yorumları ayarlayın. Ardından, OnInit() işlevini kodlayacağız. Bu fonksiyonun içinde, gerekli parametrelerle iCustom() fonksiyonunu çağırarak Donchian Channel göstergesini başlatacağız.

Gösterge tutamacını, üst bant değerlerini ve alt bant değerlerini saklamak için değişkenler oluşturun. Doğru indekslemeyi sağlamak için dizileri seri olarak ayarlamak üzere ArraySetAsSeries() işlevini kullanın. Şimdi ticaret mantığını işleyecek olan ana OnTick() fonksiyonunu kodlamaya geçelim.

Donchian Kanalı'nı hesaplamak için yeterli çubuk olup olmadığını kontrol ederek başlayın. Değilse, sıfır ile dönün. CopyBuffer() işlevini kullanarak göstergeden geçerli üst ve alt bant değerlerini alın. Şimdi bir satın alma sinyali olup olmadığına bakacağız. Fiyat üst bandın üzerine çıkarsa, OrderSend() işlevini kullanarak bir satış pozisyonu açın. Uygun emir tipini (OP_SELL), parti büyüklüğünü, zararı durdur ve kar alma seviyelerini belirleyin. OrderSend() işlevi tarafından döndürülen olası hataları işlemeyi unutmayın.

Benzer şekilde, bir satış sinyali olup olmadığını kontrol edin. Fiyat alt bandın altına düşerse, OrderSend() işlevini kullanarak bir satın alma pozisyonu açın. Uygun emir tipini (OP_BUY), parti büyüklüğünü, zararı durdur ve kar alma seviyelerini belirleyin.

Hata veya uyarı olmadığından emin olmak için kodu derleyin.

Bu kadar! Donchian Kanalı Uzman Danışmanı için kodlamayı tamamladınız. Artık EA'yı bir demo hesabında test edebilir veya performansını değerlendirmek için geçmiş verileri kullanarak geriye dönük test yapabilirsiniz. EA'nızı kapsamlı bir şekilde test etmeyi ve canlı bir ticaret hesabında kullanmadan önce risk yönetimi tekniklerini uygulamayı unutmayın. Sağlanan kodun temel bir uygulama olduğunu ve özel ticaret gereksinimlerinize uyması için daha fazla değişiklik veya geliştirme gerektirebileceğini lütfen unutmayın.

Awesome Donchian Channel trading bot in mql5! | MT5 programming
Awesome Donchian Channel trading bot in mql5! | MT5 programming
  • 2023.02.02
  • www.youtube.com
Today I will show you how to code a Donchian channel trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully w...