Programlama öğreticileri - sayfa 6

 

mql5'te çarpıcı yüksek / düşük koparma ticaret botu! | Bölüm 1



mql5'te çarpıcı yüksek / düşük koparma ticaret botu! | Bölüm 1

Toby, bu videoda, karlı bir çıkış stratejisi oluşturmak için iniş ve çıkışları kullanmayı içeren yeni bir projeyi tanıtmak istiyorum. Ana fikir, mevcut sembolün en yüksek ve en düşük fiyatlarını belirlemek ve bu seviyeleri potansiyel kırılma noktalarını belirlemek için kullanmaktır. Bunun nasıl çalıştığını anlamak için tabloya bir göz atalım.

Başlamak için, son n çubuğu gözlemliyoruz ve en yüksek ve en düşük fiyatları belirliyoruz. Fiyat yüksek seviyenin üzerine çıkarsa, bir satın alma pozisyonu alırız. Tersine, fiyat düşük seviyenin altına düşerse, satış pozisyonu alırız. Bu basit bir konsept, ancak zararı durdur ve puan olarak kar seviyeleri alarak onu geliştireceğiz. Ek olarak, stratejiyi iyileştirmek ve her yüksek ve düşük değerde işlem yapmaktan kaçınmak için filtreler uygulayacağız.

Konsepti göstermek için bir ticaret fırsatı bekleyelim. Burada fiyat alt seviyenin altına düştüğü için satış pozisyonu aldık ve işlemi kârla kapattık. Bu, stratejimiz için temel bir temel oluşturur ve ek bileşenleri dahil ederek stratejimizi daha da geliştirebiliriz.

Şimdi Meta Editöre geçelim ve kodlamaya başlayalım. YouTube klasöründe yeni bir dosya oluşturacağız ve ona "Toby's Breakout EA" adını vereceğiz. Dosyada, EA'mız için gerekli girdileri tanımlayacağız. Bunlara sihirli sayı, parti büyüklüğü, dikkate alınması gereken çubuk sayısı, zararı durdurma ve kar alma dahildir. Uygun varsayılan değerleri ayarlayacağız ve her girişi açıklamak için yorumlar sağlayacağız.

Ardından, geçerli olduklarından emin olmak için kullanıcı girişlerini kontrol edeceğimiz onInit işlevine geçeceğiz. Bu doğrulamayı gerçekleştirmek için checkInputs adlı ayrı bir işlev oluşturacağız. Girişlerden herhangi biri yanlışsa, bir hata mesajı görüntüler ve EA'nın başlamasını engelleriz.

onInit işlevi içinde, sağlanan girişi kullanarak ticaret nesnemizin sihirli sayısını da ayarlayacağız. Bu, daha sonra EA tarafından açılan pozisyonları filtrelememize ve yönetmemize izin verecektir.

Şimdi onTick fonksiyonunu inceleyelim. Mevcut tick ve önceki tick değerlerini kaydederek başlayacağız. Bu, fiyat hareketlerini izlememize ve herhangi bir önemli seviyeyi geçip geçmediğimizi belirlememize yardımcı olacaktır. Geçerli tik'i almak için SymbolInfoTick işlevini kullanacağız ve herhangi bir hata oluşursa bir hata mesajı görüntüleyeceğiz ve EA'yı durduracağız.

Ardından, üç özel işlev ekleyeceğiz: countOpenPositions, normalizePrice ve closePositions. Bu işlevler, pozisyonlarımızı yönetmemize, açık pozisyon sayısını saymamıza, fiyatları normalleştirmemize ve gerektiğinde pozisyonları kapatmamıza yardımcı olacaktır.

OnTick işlevine geri dönerek, hem alış hem de satış için açık pozisyonları sayarak başlayacağız. Bu işlem sırasında bir hata oluşursa, zaten özel işlevde işlendiği için EA'yı bir hata mesajı görüntülemeden durduracağız. Daha sonra herhangi bir açık satın alma pozisyonu olup olmadığını ve yüksek seviyenin sıfır olup olmadığını kontrol edeceğiz. Bu, yüksek seviyeyi belirlediğimizi ve mevcut satın alma pozisyonu bulunmadığını garanti eder.

Buradan, koparma stratejisinin mantığını kodlamaya devam edebiliriz. Satış pozisyonları ve düşük seviye için benzer kontroller uygulayacağız. Bu if ifadeleri, ilgili seviyelerin kırılmasına bağlı olarak bir alış veya satış pozisyonu alıp almayacağımızı belirlememize yardımcı olacaktır.

Temel bir yapıya sahip olduğumuzda, daha fazla bileşen ve filtre ekleyerek stratejiyi daha da geliştirebiliriz. Bu, alım satım sinyallerini iyileştirmek ve genel performansı iyileştirmek için ek girdi parametreleri ve koşulları içerebilir.

Bu, ilk kodlama sürecini kapsar. Bu adımları izleyerek, daha fazla geliştirme ve optimizasyon için bir başlangıç noktası görevi görebilecek, iniş ve çıkışlara dayalı bir çığır açıcı EA oluşturabiliriz.

Algoritma:

  1. İlk olarak, pozisyonları açmak ve kapatmak istediğimiz seviyeleri tanımlarız: yüksek seviye ve düşük seviye.
  2. Açık alış ve satış pozisyonlarının (count_buy ve count_sell) sayısını takip etmek için değişkenleri başlatıyoruz.
  3. Piyasanın her tikinde, alış ve satış fiyatları da dahil olmak üzere önceki tikin verilerini alırız.
  4. Potansiyel bir satın alma pozisyonunu kontrol etmek için önceki tikin satış fiyatını yüksek seviye ile karşılaştırırız. Satış fiyatı yüksek seviyeden yüksekse ve açık alım pozisyonu yoksa, belirtilen lot büyüklüğünü kullanarak bir alım pozisyonu açar, zararı durdurur ve kar alırız. Count_buy değişkenini artırıyoruz ve bir alış pozisyonunun açıldığını gösteren bir mesaj görüntülüyoruz.
  5. Potansiyel bir satış pozisyonunu kontrol etmek için, önceki tikin alış fiyatını düşük seviye ile karşılaştırırız. Alış fiyatı alt seviyenin altındaysa ve açık satış pozisyonu yoksa, belirtilen lot büyüklüğünü kullanarak satış pozisyonu açar, zararı durdurur ve karı alırız. Count_sell değişkenini artırıyoruz ve satış pozisyonunun açıldığını gösteren bir mesaj gösteriyoruz.
  6. Gerekirse pozisyonları kapatmayı da düşünmeliyiz. Herhangi bir açık alış pozisyonu varsa ve bir önceki tikin satış fiyatı yüksek seviyenin altına düşerse, tüm alım pozisyonlarını kapatırız. Count_buy değişkenini azaltıyoruz ve bir alış pozisyonunun kapatıldığını gösteren bir mesaj görüntülüyoruz.
  7. Benzer şekilde, açık satış pozisyonu varsa ve bir önceki tikin alış fiyatı alt seviyenin üzerine çıkarsa, tüm satış pozisyonlarını kapatırız. count_sell değişkenini azaltıyoruz ve bir satış pozisyonunun kapatıldığını gösteren bir mesaj görüntülüyoruz.

Algoritma, önceden tanımlanmış yüksek ve düşük seviyelere ilişkin alış ve satış fiyatlarına dayalı olarak potansiyel giriş ve çıkış noktalarını sürekli olarak kontrol eder. Koşullar oluştuğunda pozisyon açar ve fiyatlar ters yönde hareket ettiğinde pozisyonları kapatır.

Stunning high / low breakout trading bot in mql5! | Part 1
Stunning high / low breakout trading bot in mql5! | Part 1
  • 2023.02.09
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this first part we will calculate the high and low level. Th...
 

Yüksek / düşük koparma ticaret botu mql5 | Bölüm 2



Yüksek / düşük koparma ticaret botu mql5 | Bölüm 2

Bu videomuzda high-low kaplamalı siyah Audi aracımız üzerinde çalışmaya devam ediyoruz. Önceki oturumumuzun devamı olarak, şimdi ticaret mantığını dahil edeceğiz ve bazı ek bileşenleri tanıtacağız. Başlamak için, pozisyonlarımız için zarar durdurmayı hesaplayacağız. Stop Loss girişi sıfır ise, "SL" değişkenini sıfırlayarak stoploss olmadığını belirtiriz. Aksi takdirde, geçerli teklif fiyatı eksi giriş durdurma kaybı çarpı puan değeri olarak ayarlarız.

Ardından, kar alma işlemini hesaplıyoruz. Kâr al girişi sıfır ise "TP" değişkenini sıfırlıyoruz. Aksi takdirde, mevcut satış fiyatı artı girdi alma karı çarpı puan değeri olarak ayarlarız. Tutarlı fiyat değerleri sağlamak için, "normalleştirilmiş fiyat" işlevini kullanarak zararı durdur ve kârı normalleştiriyoruz.

Yerinde ticaret mantığı ile, pozisyon açmak için daha önce cTrade sınıfı kullanılarak ilan edilen ticaret nesnesini kullanırız. Bir satın alma pozisyonu için, mevcut sembolü, lot büyüklüğü için girdi lotlarını, fiyat için mevcut alış fiyatını, zararı durdur için zararı durdur değişkenini ve karı almak için kârı al değişkenini kullanırız. Benzer şekilde, bir satış pozisyonu için, fiyat için mevcut satış fiyatını kullanırız. Bu konumu diğerlerinden ayırmak için "Yüksek-Düşük Kayıtlı EA" uzman danışmanımıza ait olduğunu belirten bir yorum ekliyoruz.

Kodu derledikten sonra test için MetaTrader'a geçiyoruz. Zaman çerçevesini ve dönemi belirterek görsel bir test oluşturduk. Varsayılan girişlerle testi çalıştırıp yüksek ve düşük değerleri gözlemliyoruz. "Yalnızca Açık Fiyat" modunu kullanarak, yüksek veya düşük seviye geçildiğinde açılan pozisyonları görebiliriz. Bir sonraki adımda, EA'nın tick modunu sadece açık tick'lerde işlem yapacak şekilde değiştiriyoruz. Bu, kararlı sistemler oluşturmak için daha güvenilir ve daha hızlı bir test ortamı sağlar.

İleriye dönük olarak, inceleme döneminin en başında veya sonunda aşırı noktalarda işlem yapılmasını önlemek için bir dizin filtresi uyguluyoruz. Yeniden inceleme döneminde filtrelenmesi gereken çubukların yüzdesini temsil eden "Dizin Filtresi" adlı bir girdi sunuyoruz. Örneğin, yeniden inceleme süresi 50 çubuksa ve dizin filtresi 10'a ayarlanmışsa, ilk beş veya son beş çubuk içindeki aşırı noktalar filtrelenir. Bu aralığı görselleştirmek için grafikte bir dikdörtgen çiziyoruz. Gerekli global değişkenleri ekliyoruz, başlangıç değerlerini ayarlıyoruz ve "I Highest" ve "I Lowest" fonksiyonlarını kullanarak yüksek ve düşük indeksleri hesaplamak için "OnTick" fonksiyonunda değişiklikler yapıyoruz.

Ek olarak, "Dizin Filtresi" girişini dahil etmek ve değerini doğrulamak için "CheckInputs" işlevini güncelliyoruz. Ayrıca "CheckIndexFilter" adında yeni bir işlev yaratıyoruz ve bu işlev, dizin ve filtre ayarlarına göre bir uç noktanın filtrelenip filtrelenmeyeceğini kontrol ediyor. Uygulamayı tamamlamak için kodu derliyoruz ve görsel bir teste geçiyoruz. İndeks filtresine göre, pozisyonların yalnızca aşırı noktalar tanımlanan aralık içinde olduğunda açılıp açılmadığını doğrularız. Aşağıdaki segmentte, gereksinimlerimize daha iyi uyacak şekilde EA'nın onay modunu değiştirmeyi planlıyoruz. Açık onay moduna geçerek EA'nın yalnızca açık onaylar üzerinde çalışmasına izin vererek sistem güvenilirliğini ve verimliliğini artıracağız.

Onay modunu açmak için onay modunu değiştirdikten sonra, EA'mızda daha fazla geliştirme yapmaya devam ediyoruz. Yapacağımız iyileştirmelerden biri, bir zaman filtresinin eklenmesi olacak. Zaman filtresini uygulamak için iki yeni giriş sunuyoruz: "Başlangıç Saati" ve "Bitiş Saati". Bu girdiler, ticarete izin verilmesi gereken zaman aralığını belirlememize izin verir. Örneğin, başlangıç saatini 8 ve bitiş saatini 18 olarak ayarlarsak, EA yalnızca sabah 8 ile akşam 6 arasında pozisyon açar. Zaman filtresini dahil etmek için, yeni girişleri doğrulamak ve başlangıç saatinin bitiş saatinden daha az olmasını sağlamak için "CheckInputs" işlevini güncelliyoruz. Pozisyonları açmadan önce geçerli zamanı belirtilen aralığa göre kontrol etmek için "OnTick" işlevini de değiştiriyoruz.

Zaman filtresi yerindeyken, kodu derleriz ve pozisyonların yalnızca belirtilen zaman aralığında açıldığını doğrulamak için görsel bir test gerçekleştiririz. Ardından, başka bir geliştirmeye geçiyoruz: yayılma filtresi ekleme. Yayılma filtresi, EA'nın pozisyon açmaktan kaçınacağı, izin verilen maksimum yayılmayı tanımlamamıza izin verir. Yayılma filtresini uygulamak için "Maks Yayılma" adlı yeni bir girdi sunuyoruz. "OnTick" işlevinde, pozisyonları açmadan önce mevcut spreadin izin verilen aralık içinde olduğundan emin olmak için bir kontrol ekliyoruz.

"Maks Yayılma" girişini doğrulamak ve pozitif bir değer olduğundan emin olmak için "CheckInputs" işlevini de güncelliyoruz. Yayılma filtresi uygulandıktan sonra, kodu derleriz ve pozisyonların yalnızca yayılma belirtilen maksimum değerin altında olduğunda açıldığını doğrulamak için görsel bir test gerçekleştiririz. Son olarak, grafikte açık pozisyonların sayısını izlemek ve görüntülemek için bir özellik sunuyoruz. "Position Count" adında yeni bir global değişken yaratıyoruz ve onu sıfır olarak başlatıyoruz. "OnTick" fonksiyonunda, her pozisyon açıldığında pozisyon sayısını artırırız.

Grafikte konum sayısını görüntülemek için, geçerli sayımı gösteren bir metin nesnesi oluşturmak için "ObjectSetText" işlevini kullanıyoruz. Metin nesnesini her işarette en son sayım değeriyle güncelleriz. Kod derlendikten sonra, grafikte gösterilen pozisyon sayısını gözlemlemek ve açık pozisyon sayısını doğru bir şekilde yansıttığından emin olmak için görsel bir test gerçekleştiririz.

Uygulanan bu geliştirmelerle, EA'mızın işlevselliğini ve performansını önemli ölçüde iyileştirdik. Zaman filtresi, dağılım filtresi ve pozisyon sayısı ekranı, ticaret süreci üzerinde daha fazla kontrol ve görünürlük sağlar.

Bir sonraki videoda, EA'mızın performansını daha da artırmak için ek optimizasyonları ve ince ayar tekniklerini keşfedeceğiz.

High / low breakout trading bot mql5 | Part 2
High / low breakout trading bot mql5 | Part 2
  • 2023.02.12
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this second part we will code the trade logic to open positi...
 

İnanılmaz yüksek / düşük koparma ticaret botu mql5 | Bölüm 3



İnanılmaz yüksek / düşük koparma ticaret botu mql5 | Bölüm 3

Bugünkü videoda Toby, MK5 için yüksek-düşük çıkış yapan EA'nın geliştirilmesine devam ediyor. Stratejiye iki yeni bileşen ekliyor ve ayrıca sonunda birden çok geriye dönük test gerçekleştiriyor.

Toby, çalışır durumda olduğundan emin olmak için EA'yı derleyerek başlar. Ardından, bir çıkış ve trend takip sistemi olarak stratejinin etkinliğini artırmak için takip eden bir zararı durdurma girdisi ekler. Giriş, etkinleştirilebilen veya devre dışı bırakılabilen bir boole değişkenidir. Toby ayrıca her bir pozisyon için zararı durdur değerlerini hesaplamak ve güncellemek için "updateStopLoss" adlı bir işlev oluşturur.

Takip eden zarar durdurmayı uygulamak için Toby, başka bir EA'dan "updatePosition" işlevini kopyalar ve buna göre değiştirir. Kayıp durdurma mesafesi için bir parametre ekler ve bu girdiye göre yeni durdurma kaybı değerinin hesaplanmasını ayarlar. Ayrıca, stoploss değerinin normalleştirilmesini sağlamak için "normalizedPrice" adlı bir işlevi de içerir. Bu değişiklikleri yaptıktan sonra Toby, hata olmadığından emin olmak için kodu yeniden derler.

Ardından Toby, "updateStopLoss" işlevini entegre ettiği "OnTick" işlevine geçer. Takip eden stoploss'un aktif olup olmadığını kontrol etmek için bir if ifadesi ekler ve aktifse, stoploss değerlerini takip etmek için "updateStopLoss" işlevini çağırır. Ayrıca, fonksiyonun hem alış hem de satış pozisyonlarına uygulanmasını sağlar.

Kodu derledikten sonra Toby, stratejiye bir sonraki bileşen olan bir boyut filtresi eklemeye devam ediyor. Boyut filtresi, yüksek ve düşük değerlerin birbirinden çok uzak olduğu ve daha geniş bir aralığı gösteren kanalların filtrelenmesine izin verir. Toby, boyut filtresi için nokta olarak bir girdi ekler ve kanal boyutunun belirtilen sınırı aşıp aşmadığını kontrol etmek için kodu buna göre ayarlar. Ayrıca boyut filtresini yüksek ve alçak çizgilerin görselleştirilmesine dahil eder.

Toby daha sonra, hem takip eden durdurma kaybının hem de boyut filtresinin doğru çalıştığını doğrulamak için Strateji Test Aracını kullanarak görsel bir test yapar. Zararı durdur davranışını ve boyut filtresi durumuna göre çizgilerdeki renk değişikliklerini gözlemler.

Videonun son bölümünde Toby, EA'nın son 10 yıldaki performansını değerlendirmek için geriye dönük testler yapıyor. Optimizasyon kriterlerini kurtarma faktörü olarak belirler ve belirli bir sembol ve zaman çerçevesi kullanır. Toby, kalan yılları örneklem dışı bir test olarak kullanmayı planlıyor.

Toby, takip eden bir durdurma kaybı ve bir boyut filtresinin eklenmesi de dahil olmak üzere, yüksek-düşük koparma EA'sında çeşitli iyileştirmeler yapar. Ayrıca, EA'nın performansını değerlendirmek için geriye dönük testlerin nasıl yürütüleceğini de gösteriyor.

Amazing high / low breakout trading bot mql5 | Part 3
Amazing high / low breakout trading bot mql5 | Part 3
  • 2023.02.16
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this third part we will code a trailing stop loss and add a ...
 

En iyi şamdan modeli EA'yı mql5'te kodlayalım! | Bölüm 1



En iyi şamdan modeli EA'yı mql5'te kodlayalım! | Bölüm 1

Merhaba, ben Toby ve bu videoda kanalımda yeni bir EA kodlama projesi başlatıyorum. Şamdan kalıplarına odaklanacağız ve Doji, Sabah Yıldızı, Yükselen Yıldız ve diğerleri gibi çeşitli kalıpların ticaretini yapabilen bir EA oluşturacağız. EA ayrıca farklı koşulları görüntülemek için bir panele sahip olacaktır. Zaten EA ile bazı ön testler yaptım ve sonuçlar, özellikle farklı semboller arasında oldukça ilginç oldu. Bu yaklaşımın oldukça etkili bir stratejiye yol açabileceğine inanıyorum. Haydi dalalım!

EA'yı kodlamaya başlamadan önce, genel strateji fikrini tartışalım. İlerlerken ne yaratmayı hedeflediğimizi anlamak çok önemlidir. Konsepti açıklamak için basit bir diyagram oluşturdum. EA'mız, yalnızca her çubuğun açık fiyatıyla çalışacaktır. Örneğin, mevcut çubuğu (dizin 0) ve önceki çubuğu (dizin 1) ele alalım. Doji, Sabah Yıldızı, Akşam Yıldızı, Yükselen Yıldız ve çok daha fazlası gibi çeşitli grafik kalıplarını veya Şamdan kalıplarını takas edebilen bir EA yaratmak istiyoruz.

Bunu başarmak için farklı koşullar tanımlayacağız. Örneğin, 2. çubuğun yüksek fiyatının 1. çubuğun en yüksek fiyatından daha yüksek olması gerektiği bir koşul belirleyebiliriz. Başka bir koşul da 3. çubuğun açık fiyatının 3. çubuğun kapanış fiyatından düşük olması olabilir, bu da yükseliş mumu. Bu koşulları birleştirerek, bir sonraki çubuğun açılışında bir alış ticaretini tetikleyebiliriz. Benzer koşulları tersten satış sinyalleri için de uygulayabiliriz.

Ek olarak, her Şamdanın sadece Açılış, Yüksek, Düşük ve Kapanış fiyatlarını değil, aynı zamanda aralık boyutu veya gövde boyutu gibi diğer faktörleri de dikkate almak istiyorum. Örneğin, vücut boyutunu Şamdan'ın toplam aralığına bölerek hesaplayabiliriz. Bu hesaplama, Doji çubuklarını belirlememize yardımcı olabilir. Hatta 50 puandan büyük bir vücut ölçüsü gerektirmek gibi belirli değerler bile belirleyebiliriz. Bu seçeneklerle, tek bir EA kullanarak çeşitli desenler oluşturabilir ve test edebiliriz. Heyecan verici bir yolculuk olacağa benziyor!

Şimdi MetaEditor'a geçelim ve kodlamaya başlayalım. Ama başlamadan önce görüşlerinizi almak istiyorum. Bu videoları faydalı bulduysanız ve bu gece iyi uyumak istiyorsanız, lütfen bir beğeni bırakın. Ayrıca, karanlık mod ile varsayılan beyaz arka plan arasında geçiş yapmayı düşünüyorum. Tercihinizi oylamanız için bir anket oluşturacağım. Karanlık modda her şeyi doğru okuyabilirseniz, yorumlarda bana bildirin.

Pekala, hadi kodlamaya geçelim! MetaEditor'da, YouTube klasörümün altında yeni bir EA oluşturacağım. Adını 'Mum Desenli EA' koyacağım. Gereksiz yorumları kaldırarak ve kod yapısını düzenleyerek temiz bir şablonla başlayacağız. Derledikten ve hata olmadığından emin olduktan sonra sonraki adımlara geçeceğiz.

Girişler bölümünde, aynı MetaTrader örneğinde çalışan diğer EA'larla çakışmaları önlemek için bu EA için benzersiz bir tanımlayıcı olması gereken sihirli sayı gibi bazı önemli parametreleri tanımlayacağız. Buna rastgele bir sayı atayalım.

Bu, ilk kurulum ve giriş parametrelerini kapsar. Artık bir sonraki bölüme geçmeye hazırız. Bizi izlemeye devam edin!

Let's code the ultimate candlestick pattern EA in mql5! | Part 1
Let's code the ultimate candlestick pattern EA in mql5! | Part 1
  • 2023.03.01
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. In this first part we will create the conditions for the candlestick pa...
 

Mql5'te şamdan deseni EA! | Bölüm 2



Mql5'te şamdan deseni EA! | Bölüm 2

Bugünün videosunda, ben Toby ve MetaTrader 5'te basit Şamdan kalıbı Uzman Danışmanımızı (EA) kodlamaya devam edeceğiz. Şu anda bu kodlama serisinin ikinci bölümündeyiz, yani ilk bölümü kaçırdıysanız burada strateji fikrini daha ayrıntılı olarak açıkladı, o videonun bağlantısını burada bulabilirsiniz. Kodlamaya başlamadan önce, video kaydetmek için tercih edilen renk teması hakkında YouTube'da yaptığım son anketin sonuçlarını paylaşmak istiyorum. 140 oydan halkın çoğunluğu (90) koyu arka planı tercih ederken, 50 kişi beyaz arka planı tercih etti. Ben şahsen koyu arka planı gözler için daha kolay buluyorum ve kendi EA'larımı kaydetmek için de kullanıyorum.

Bahsetmek istediğim bir diğer konu ise yakın zamanda MQL5 için Visual Studio Code kurmuş olmam. Kodlama projeleriniz için Visual Studio Code kullanmakla ilgileniyorsanız, yorumlarda bana bildirin, bununla ilgili bir video çekeceğim.

Şimdi, EA'mızı kodlamaya geri dönelim. Bir önceki videoda, birinci koşul için girişleri bırakmıştık. Şimdi başka bir koşul oluşturacağız ve ikinci koşul için bir girdi ekleyeceğiz. Birinci koşul bölümünü kopyalayacağız ve giriş değişkenlerinde gerekli değişiklikleri yaparak ikinci koşul olarak yeniden adlandıracağız. Şimdilik, sadece iki koşulla basit tutacağız, ancak gelecekte daha fazlasını ekleyebiliriz. Bu değişiklikleri yaptıktan sonra, hata veya uyarı olmadığından emin olmak için kodu derleyeceğiz.

Bazı izleyiciler, daha iyi okunabilirlik için yazı tipi boyutunun artırılmasını istedi. Ekranda daha fazla kod görmeyi tercih etsem de, daha büyük yazı tipi boyutlarına olan ihtiyacı anlıyorum. Ancak, şimdilik mevcut yazı tipi boyutuna bağlı kalacağız. Gerekirse, gelecekte ayarlamalar yapabilirim.

Ardından, girdileri global değişken bölümünde oluşturduğumuz koşul dizimize bağlayacağız. Bunu gerçekleştirmek için "setInputs" adlı özel bir işlev oluşturacağız. Bu işlev, girişler kontrol edilmeden önce çağrılacaktır. setInputs işlevinin kodunu yazdıktan sonra, doğruluğunu doğrulamak için kodu yeniden derleyeceğiz.

Devam ederken, gerekli kriterleri karşıladıklarından emin olmak için girdileri kontrol edeceğiz. Gerekli kontrolleri yapmak için her girdi için bir if ifadesi kullanacağız. Herhangi bir girişin geçersiz olduğu tespit edilirse, kullanıcıya bir uyarı gösteririz ve checkInputs işlevinden false döndürürüz. Sıfırın altında veya sıfıra eşit olmadığından emin olarak sihirli sayıyı kontrol ederek başlayacağız. Ardından lot büyüklüğünü kontrol etmeye, zararı durdurmaya ve kar girdilerini almaya devam edeceğiz. Ek olarak, daha sonra ele alacağımız koşul dizisi için bir kontrol eklememiz gerekecek.

Kodu daha modüler hale getirmek için, ticaret nesnemiz için sihirli sayıyı ayarlamak amacıyla bir setInputs işlevi kullanacağız. Bu, pozisyon ararken veya ticaretle ilgili işlemleri yürütürken faydalı olacaktır. Bu değişikliği yaptıktan sonra, doğruluğunu onaylamak için kodu yeniden derleyeceğiz.

Şimdi EA'nın ana operasyonlarının gerçekleştiği onTick fonksiyonuna geçelim. İlk olarak, isNewBar fonksiyonumuzu kullanarak mevcut tikin bar açık tik olup olmadığını kontrol edeceğiz. Bir bar açık tik olmadığını belirten yanlış döndürürse, basitçe geri döner ve bir sonraki tik için bekleyeceğiz.

Ardından, mevcut sembolün tikini alacağız. Bu, teklif verme, sorma ve kene ile ilgili diğer bilgilere erişim sağlayacaktır. SymbolInfoTick işlevini kullanacağız ve sonucu bir değişkende saklayacağız. Bu işlem başarısız olursa, başarısızlığı belirten bir mesaj görüntüleyeceğiz ve onTick işlevinden geri döneceğiz.

Ardından, countOpenPositions işlevimizi kullanarak açık pozisyonları sayacağız. Bu bize şu anda açık olan alış ve satış pozisyonlarının sayısını verecektir. Bu işlem başarısız olursa, başarısızlığı belirten bir hata mesajı görüntüleyeceğiz ve onTick işlevinden geri döneceğiz.

Açık pozisyon sayısını aldıktan sonra açık pozisyon olup olmadığını kontrol edeceğiz. Varsa, açık pozisyonların sayısını gösteren bir mesaj görüntüleyeceğiz. Aksi takdirde, bir sonraki adıma geçeceğiz.

Şimdi, bir for döngüsü kullanarak her açık pozisyonun içinden geçeceğiz. Döngünün içinde, PositionGetTicket işlevini kullanarak konum bilgisini alacağız. Bilet numarasını bir değişkende saklayacağız ve hata ayıklama amacıyla bilet numarasını içeren bir mesaj görüntüleyeceğiz.

Ardından, PositionGetInteger işlevini ve POSITION_TYPE özelliğini kullanarak pozisyonun türünü (al veya sat) kontrol edeceğiz. Pozisyon alış pozisyonu ise alış pozisyonları için gerekli kodu çalıştırırız. Benzer şekilde, pozisyon bir satış pozisyonu ise, satış pozisyonları için kodu çalıştıracağız.

Alış pozisyonları için, mevcut alış fiyatının pozisyonun zararı durdur seviyesinden düşük olup olmadığını kontrol ederiz. Eğer öyleyse, stoploss seviyesine ulaşıldığını belirten bir mesaj görüntüleyeceğiz ve PositionClose işlevini kullanarak pozisyonu kapatacağız.

Benzer şekilde, satış pozisyonları için mevcut satış fiyatının pozisyonun zararı durdur seviyesinden yüksek olup olmadığını kontrol edeceğiz. Eğer öyleyse, zararı durdur seviyesine ulaşıldığını belirten bir mesaj görüntüleyeceğiz ve pozisyonu kapatacağız.

Gerekli pozisyonları kapattıktan sonra, yeni bir pozisyon açıp açmamamız gerektiğini belirlemek için koşullarımızı kontrol eden bir sonraki adıma geçeceğiz. Bu amaçla checkConditions işlevini kullanacağız. CheckConditions işlevi, tüm koşulların karşılandığını belirten true döndürürse, yeni bir pozisyon açmak için gerekli kodu çalıştırırız. Aksi takdirde, bir sonraki işarete devam edeceğiz.

Yeni bir pozisyon açma kodunda, hacmi, zararı durdur, kârı al ve diğer gerekli parametreleri belirleyeceğiz. Alım satım talebini göndermek ve pozisyonu açmak için OrderSend işlevini kullanacağız. İşlem talebi başarılı olursa, pozisyonun başarıyla açıldığını gösteren bir mesaj görüntüleyeceğiz. Aksi takdirde, bir hata mesajı gösteririz.

Son olarak, hata veya uyarı olmadığından emin olmak için kodu derleyeceğiz ve her şey başarılı olursa, EA'mızı bir demo veya canlı hesapta test etmeye hazır olacağız.

Bu videoyu bitiriyor. Bir sonraki bölümde, ek özellikler ekleyerek ve stratejimizi iyileştirerek EA'mızı oluşturmaya devam edeceğiz. Herhangi bir sorunuz veya öneriniz varsa, lütfen bunları aşağıdaki yorumlarda bırakın. İzlediğiniz için teşekkürler, bir sonraki videoda görüşmek üzere!

Candlestick pattern EA in mql5! | Part 2
Candlestick pattern EA in mql5! | Part 2
  • 2023.03.05
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5.As an algo trader I dev...
 

mql5'te harika şamdan deseni EA! | Bölüm 3



mql5'te harika şamdan deseni EA! | Bölüm 3

Bu videoda Toby kendini tanıtıyor ve MetaTrader5'te Şamdan kalıbı Uzman Danışmanını (EA) geliştirmeye devam etmeye odaklanılacağını duyuruyor. Amaç, ilk geriye dönük testi yapmak ve bir sonuç elde etmek için gerekli olan temel mantığı yazmaktır. Toby, izleyicileri henüz yapmamışlarsa dizinin önceki bölümlerine göz atmaya teşvik ediyor.

Toby, Meta Düzenleyiciyi açar ve önceki videoda kaldığı yerden kodlamaya başlar. Alış ve satış pozisyonları açmak için kodu zaten uyguladıklarını, ancak şimdi durum kontrollerini eklemeleri gerektiğini açıklıyor. Bunu yapmak için Toby, hem alım hem de satım işlemlerinin koşullarını kontrol etmek için çağrılabilecek özel bir işlev oluşturmayı planlıyor.

Toby, kodlama sürecine başlamadan önce mevcut kodda herhangi bir hata olmadığından emin olmak istiyor. Hataları veya uyarıları kontrol etmek için kodu derler.

Ardından Toby, "koşulları kontrol et" adı verilen özel işlev için mantığı yazmaya devam ediyor. Bu işlev, bir for döngüsü kullanarak her koşulu yineleyecektir. Döngü içinde, her bir koşulu değerlendirmek için "bir koşulu kontrol et" adlı başka bir özel işlevi çağıracaklar.

Toby, alım/satım ticareti için parametreleri ve kontrol edilecek koşulun indeksini alan "bir koşulu kontrol et" işlevini oluşturur. Bu fonksiyon içerisinde, koşulun aktif olup olmadığının belirlenmesi gibi çeşitli kontroller gerçekleştirilir. Bir koşul etkin değilse işlev, ilgili olmadığını belirterek doğru değerini döndürür.

Koşulları kontrol etmek için Toby'nin çubuk verilerini alması gerekiyor. Açık, yüksek, düşük ve kapanış fiyatlarını içeren önceden tanımlanmış bir yapı olan mql oranları türünde bir değişken bildirir. Oranlar dizisini seri olarak ayarlarlar ve koşullar için gerekli verileri almak için kopya oranı işlevini kullanırlar.

Çubuk verilerini başarıyla elde ettikten sonra Toby, koşulları karşılaştırmak ve değerlendirmek için kullanılacak olan A ve B değişkenlerinin değerlerini belirlemeye devam eder. Değerler, açık, yüksek, düşük, yakın, aralık, gövde, oran veya değer gibi koşulun moduna göre belirlenir. Değerler, alım satım mı yoksa satış mı olduğu dikkate alınarak buna göre atanır.

Değerler ayarlandıktan sonra, Toby hata veya hata olup olmadığını kontrol etmek için kodu derler.

Toby, değişkenler ve durumlarda gerekli ayarlamaları yaparak mod B koşulları için süreci tekrarlar.

Son olarak Toby, kodda hata olmadığından emin olarak ve kodun mantığını anlamanın önemini vurgulayarak videoyu sonlandırıyor.

Awesome candlestick pattern EA in mql5! | Part 3
Awesome candlestick pattern EA in mql5! | Part 3
  • 2023.03.09
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

Şaşırtıcı sonuçlar! Mql5'te şamdan deseni EA! | 4. Bölüm


Şaşırtıcı sonuçlar! Mql5'te şamdan deseni EA! | 4. Bölüm

Merhaba, ben Toby. Bugünkü videomuzda Şamdan kalıbı uzman danışmanı (EA) kodlamasına devam edeceğiz. Bu video için bazı özel hedeflerimiz var. İlk olarak, EA'ya çeşitli koşulları ve bunlara karşılık gelen alım/satım sinyallerini gösterecek bir panel ekleyeceğiz. EA'nın işlevselliğini sağlamak için ek giriş kontrolleri de gerçekleştireceğiz. Son olarak, birkaç geriye dönük test yapacağız ve bazı ilginç sonuçları sizinle paylaşacağız. Öyleyse başlayalım.

Devam etmeden önce, bu Şamdan kalıp kodlama serisinin önceki bölümlerini izlemediyseniz, önce onlara göz atmanızı tavsiye ederim. Linkleri açıklamada bulabilirsiniz.

Bu videoda, EA'mız için bir grafik panel oluşturarak başlayacağız. Panel, alım ve satım sinyallerini gösteren çarpılarla farklı koşulları temsil eden çizgiler içerecektir. Koşullar karşılanırsa, EA belirtilen yönde işlem yapacaktır. Ek olarak, strateji test cihazında optimizasyonu kolaylaştırmak için giriş kontrolleri uygulayacağız.

Paneli kodlamaya başlamak için MetaEditor'u açıp dahil etme klasörüne gideceğiz. İnclude klasörünün içinde YouTube adında yeni bir klasör oluşturacağız. YouTube klasörü içinde grafik panel dosyasını oluşturacağız. Dosyanın varsayılan içeriğini temizleyeceğiz ve panelimiz için gerekli dosyaları ekleyeceğiz.

Ardından, panelimiz için gerekli etiketleri tanımlayacağız. Her etiket, sayı, koşul, alış, satış vb. gibi belirli bir öğeyi temsil edecektir. Ayrıca, her koşul için birden çok satırı görüntülemek üzere etiket dizileri oluşturacağız.

Etiketleri tanımladıktan sonra Panel sınıfını kodlamaya geçeceğiz. Bu sınıf, üyelerine erişmemizi sağlayan CAppDialog sınıfından miras alacaktır. Panel etiketleri ve yapıcı, yıkıcı, onInit, update ve bannerChartEvent gibi birkaç yöntem için özel bir bölüm oluşturacağız.

Yapıcı paneli başlatacak, yıkıcı ise temizliğini yapacak. onInit yöntemi, EA'nın onInit işlevinden çağrılacak ve paneli oluşturacaktır. Panelin içeriğini güncellemek için her tıklamada güncelleme yöntemi çağrılacaktır. Son olarak bannerChartEvent yöntemi, panelle ilgili olayları işleyecektir.

createPanel yönteminin içinde, grafik kimliği, ad, alt pencere ve koordinatlar gibi istenen parametrelerle asıl paneli oluşturacağız. Panelin başarıyla oluşturulmasını sağlayacağız ve öyleyse doğru, aksi takdirde yanlış döndüreceğiz.

Panel sınıfı kodlandıktan sonra onu uzman danışman dosyamıza ekleyeceğiz. Sihirli sayıyı ayarladıktan sonra panel nesnesinin bir örneğini oluşturacağız ve onun onInit yöntemini çağıracağız. Panel oluşturma başarısız olursa uygun bir hata mesajı döndürürüz.

Şamdan desen kodlama serimizin bu bölümü için bu kadar. Bir sonraki videoda, EA'mıza işlevsellik eklemeye ve daha fazla test yapmaya devam edeceğiz. Daha ilginç sonuçlar için takipte kalın.

Surprising results! Candlestick pattern EA in mql5! | Part 4
Surprising results! Candlestick pattern EA in mql5! | Part 4
  • 2023.03.13
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

mql5'te özel bir ölçüt kodlayın



mql5'te özel bir ölçüt kodlayın

Merhaba, bu Toby. Bu videoda, MQL5'te Expert Advisor Optimization'ınız için özel bir ölçütün nasıl kodlanacağını göstereceğim. Örnek olarak Hilo bracket EA'yı kullanacağız. Amaç, optimizasyon sonuçlarını sıralamada hem kar faktörünü hem de işlem sayısını dikkate alan özel bir kriter oluşturmaktır.

Başlamak için, EA'nızı kodlama ortamında (Visual Studio Code gibi) açın ve yeni bir adla kaydedin. Ardından, EA'nıza "OnTester" adlı önceden tanımlanmış bir işlev ekleyin. Bu işlev, özel ölçütleri hesaplar ve değerini döndürür. İşlem sayısını ve kâr faktörünü elde etmek için "TestStatistics" işlevini kullanabilirsiniz. Özel ölçütleri hesaplamak için bu iki değeri çarpın.

Hata olmadığından emin olmak için kodu derleyin. Şimdi MetaTrader'a geçin ve bir optimizasyon gerçekleştirin. EA'nızı seçin ve özel kriterlerinizi kullanmak için optimum arama kriteri olarak "Özel Maks"ı seçin. Optimizasyonu başlatın ve sonuçları bekleyin. Özel kriterlerin, kar faktörü ile çarpılan işlem sayısına göre hesaplandığını göreceksiniz.

Kâr faktörünün ağırlığını ayarlamak isterseniz kodunuzdaki "MathPower" işlevini kullanabilirsiniz. Örneğin, daha fazla ağırlık vermek için kar faktörünü 4'ün gücüne yükseltebilirsiniz. Güncellenen sıralamayı görmek için optimizasyonu yeniden derleyin ve çalıştırın.

Ek olarak, 100'den az işlem içeren kombinasyonları hariç tutmak için koda bir if ifadesi ekleyebilirsiniz. İşlem sayısı 100'ün altındaysa, sıfır değeri döndürebilirsiniz. Bu, yalnızca yeterli sayıda işlem içeren kombinasyonların dikkate alınmasını sağlar.

Bu adımları izleyerek, Uzman Danışmanınız için en iyi optimizasyon sonuçlarını sıralamak ve seçmek için kendi özel kriterlerinizi oluşturabilirsiniz. Herhangi bir değişiklik yapmadan önce değiştirilmiş EA'nızı yeni bir adla kaydetmeyi unutmayın. Bu videoyu faydalı bulduysanız, lütfen bir beğeni bırakın ve gelecek videolar için isteklerinizi veya fikirlerinizi yorumlarda paylaşmaktan çekinmeyin. Teşekkürler, bir sonraki videoda görüşmek üzere!

Code a custom criteria in mql5
Code a custom criteria in mql5
  • 2023.03.31
  • www.youtube.com
In this video I show you step by step how to code a custom criteria for the Metatrader 5 strategy tester. With a custom criterion, you can create your own ra...
 

mql5'te stokastik ticaret botu! | Bölüm 1



mql5'te stokastik ticaret botu! | Bölüm 1

Bu videoda MetaTrader 5'te basit bir stokastik EA'nın nasıl kodlanacağını göstereceğim. Videonun sonuna doğru, stratejinin son 10 yıldaki performansını değerlendirmek için geriye dönük test de yapacağız.

Genel strateji fikrini anlayarak başlayalım. Yaygın olarak bilinen stokastik göstergeyi kullanacağız. EA, stokastik alt seviyeyi geçtiğinde bir alış ticareti ve üst seviyeyi geçtiğinde bir satış ticareti yürütecektir. Grafiğe bakarken, beynimizin karlı işlemlere odaklanma eğiliminde olduğunu hatırlamak önemlidir, bu nedenle etkinliğini değerlendirmek için stratejiyi kodlamak ve geriye dönük test etmek çok önemlidir.

Şimdi, EA'yı kodlamaya başlamak için Visual Studio Code'a geçelim. Varsayılan MetaEditor'u kullanarak YouTube klasöründe yeni bir dosya oluşturacağız ve bunu "Stochastic EA" olarak adlandıracağız. Ardından, dosyayı Visual Studio Code'da açacağız ve okunabilirliği artırmak için bazı biçimlendirme ayarlamaları yapacağız.

Kodu bölümler halinde düzenleyeceğiz ve içermelerle başlayacağız. Yalnızca CTrade sınıfını içeren "trades.mqh" adlı bir dosya eklememiz gerekir. Bundan sonra, EA'mız için girdileri tanımlayacağız. Sihirli sayı ve lot büyüklüğü gibi girdiler için genel bir bölümümüz olacak, ardından zararı durdur, kârı al ve zıt bir sinyalde işlemleri kapatacak bir ticaret bölümümüz olacak. Ardından, K periyodu ve üst seviye dahil olmak üzere stokastik göstergeye özel bir girdi bölümümüz olacak.

Girdiler tanımlandıktan sonra, stokastik gösterge tanıtıcısı, arabellek, geçerli tik ve ticaret nesnesi için değişkenleri bildireceğimiz global değişkenler bölümüne geçeceğiz. Global değişkenlerden sonra onInit fonksiyonunu implemente edeceğiz. Giriş değerlerinin izin verilen aralık içinde olmasını sağlayacak olan checkInputs işlevini kullanarak kullanıcı girişlerini kontrol ederek başlayacağız. Herhangi bir giriş yanlışsa, "Başlatma parametreleri yanlış" olarak döneriz.

Ardından, kullanıcı tarafından sağlanan giriş değerini kullanarak ticaret nesnesi için sihirli sayıyı belirleyeceğiz. Ardından sembol, periyot, K periyodu, D periyodu (sinyal hattı olmadığında 1'e ayarlanır), yavaşlama değeri, MA yöntemi (SMA) ve fiyat alanını belirterek yerleşik stokastik işlevi kullanarak gösterge tutamacını oluşturacağız. (düşük/yüksek). Gösterge tanıtıcısının oluşturulmasının başarılı olup olmadığını kontrol edeceğiz. Geçersiz bir tanıtıcı döndürürse, bir uyarı mesajı görüntüler ve "Başarısız oldu" döndürürüz. Son olarak, bir zaman serisi olduğunu belirtmek için arraySetAsSeries işlevini kullanarak tamponu ayarlayacağız.

Ardından, her girişin geçerliliğini doğrulayacak olan checkInputs işlevini tanımlayacağız. Sihirli sayı ve lot büyüklüğünün izin verilen aralık içinde olup olmadığını kontrol edeceğiz ve değilse false döndüreceğiz. Ek olarak, lot boyutunun 10'dan büyük olmamasını sağlamak gibi ek kontroller ekleyebiliriz. onInit işlevi ve checkInputs işlevi tamamlandıktan sonra artık kodu derleyebilir ve videodaki sonraki adımlara geçebiliriz.

İşlev, birkaç adımı gerçekleştirmek için tasarlanmıştır. İlk olarak, mevcut işareti alır ve onu "CT" global değişkeninde saklar. Daha sonra "CopyBuffer" fonksiyonunu kullanarak gösterge değerlerini elde etmeye devam eder. İşlev hataları kontrol eder ve başarılı olursa değerleri "Ana" tamponda saklar. Bir hata varsa, bir mesaj yazdırır ve işlevden çıkar.

Bir sonraki adım, açık pozisyonların sayısını saymayı içerir. Bu, "CountOpenPositions" işlevi kullanılarak yapılır ve sayı, "CountBuy" ve "CountSell" olmak üzere iki tamsayı değişkeninde saklanır. Konumların sayılmasında bir hata varsa, bir mesaj yazdırılır ve fonksiyondan çıkılır.

İşlev daha sonra bir alış veya satış ticaretini kontrol eder. Açık bir alış pozisyonu yoksa (CountBuy sıfırdır), bir alış ticaretinin açılıp açılmayacağını belirlemek için gösterge değerlerini kontrol eder. Alım satım açmanın şartları, mevcut gösterge değerinin belirlenen alt seviyenin altında olması ve önceki gösterge değerinin alt seviyenin üzerinde olmasıdır. Bu koşullar karşılanırsa, bir satın alma pozisyonunun açıldığını gösteren bir mesaj yazdırılır. Benzer şekilde işlev, açık satış pozisyonu yoksa (CountSell sıfırdır) bir satış ticaretini kontrol eder. Bir satış işlemi açmanın koşulları, gösterge değerinin belirli bir üst seviyenin üzerinde olması ve bir önceki gösterge değerinin üst seviyenin altında olmasıdır. Bu koşullar karşılanırsa, satış pozisyonunun açıldığını belirten bir mesaj yazdırılır.

Ticaret mantığı uygulandıktan sonra, "ClosedSignal" giriş parametresi true olarak ayarlanırsa işlev tüm satış pozisyonlarını kapatır. Tüm satış pozisyonlarını kapatmak için 2 parametre değeriyle "Pozisyonları Kapat" işlevini kullanır. Pozisyonları kapatmada bir hata olursa fonksiyondan çıkar ve bir mesaj yazdırır. Ardından fonksiyon, giriş parametrelerine dayalı olarak zararı durdur ve kârı al değerlerini hesaplar. Giriş durdurma kaybı değeri sıfır ise, durdurma kaybı sıfır olarak ayarlanır; aksi takdirde, mevcut tick fiyatı ve giriş stoploss değeri baz alınarak hesaplanır. Kâr alma değeri hesaplanırken de aynı süreç izlenir.

Bir pozisyon açmadan önce fonksiyon, "NormalizePrice" fonksiyonunu kullanarak zararı durdur ve karı al fiyatlarını normalleştirir. Normalizasyonda bir hata varsa fonksiyondan çıkılır. Son olarak işlev, ticaret nesnesinin "PositionOpen" yöntemini kullanarak bir pozisyon açar. Pozisyon, tür (al veya sat), hacim, fiyat, zararı durdur ve kar al değerlerine göre açılır. Bir sipariş yorumu da dahildir.

İşlev, hata olmamasını sağlamak için derlenir ve ardından, istenen ticari açılışların ve kapanışların belirtilen koşullara göre gerçekleşip gerçekleşmediğini görmek için geçmiş veriler kullanılarak MetaTrader'da test edilebilir. Bir pozisyon açtıktan sonra fonksiyon, "GetLastError" fonksiyonunu kullanarak hataları kontrol eder. Bir hata varsa, bir mesaj yazdırır ve çıkar.

Son olarak işlev, "LastTick" ve "LastSignal" global değişkenlerini sırasıyla mevcut tik ve sinyal türüyle (al veya sat) günceller. Bu, son işlenen onay işaretini takip etmek ve gelecekteki hesaplamalar için sinyal vermek için yapılır.

Bu fonksiyon mevcut tick'i alır, gösterge değerlerini alır, açık pozisyon sayısını sayar, ticaret fırsatlarını kontrol eder, belirlenen koşullara göre pozisyon açar, gerekirse satış pozisyonlarını kapatır, zararı durdur ve kar al değerlerini hesaplar, fiyatları normalleştirir, pozisyon açar , hataları işler ve genel değişkenleri günceller.

Bu işlevi bir MetaTrader 5 ortamında kullanmak için, onu bir uzman danışmana veya komut dosyasına entegre etmeniz ve işlem stratejinize göre giriş parametrelerini ve gösterge değerlerini özelleştirmeniz gerekir. Ek olarak, pozisyonları yönetmek, hataları ele almak ve diğer ticaret işlemlerini gerçekleştirmek için başka işlevleri uygulamanız gerekebilir.

Sağlanan açıklamanın, sağlanan bilgilere dayalı genel bir anlayış olduğunu ve gerçek uygulamanın, belirli işlem platformuna ve kullanılan programlama diline bağlı olarak değişebileceğini lütfen unutmayın.

Stochastic trading bot in mql5! | Part 1
Stochastic trading bot in mql5! | Part 1
  • 2023.04.13
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will create a fully working stochastic Expert Advisor for Metat...
 

MetaTrader 5 için Stokastik EA | Bölüm 2



MetaTrader 5 için Stokastik EA | Bölüm 2

Bu videoda Toby kendisini sunucu olarak tanıtıyor ve stokastik göstergeyi kullanarak ticaret stratejilerini geliştirmek için basit bir filtreyi tartışacaklarından bahsediyor. Toby, filtrenin yalnızca stokastik göstergeye değil, diğer göstergelere de uygulanabileceğinden bahseder.

Toby, kodlama eğitiminin ilk bölümünde EA'nın (Uzman Danışman) ve göstergenin temel mantığını ele aldıklarını açıklıyor. Bu bölümde, stratejiyi geliştirmek için farklı giriş sinyalleri ve bir filtre eklemeyi planlıyorlar. Toby, kodlamaya geçmeden önce hedefi anlamanın önemini vurguluyor. Göstergenin alt ve üst bölgelerinden çıkmaya dayalı ikinci bir giriş sinyali türü ve sinyalleri tersine çevirme seçeneği dahil olmak üzere EA'ya eklemek istedikleri bileşenleri açıklarlar.

Toby daha sonra MQL5 kodlaması için önerdikleri bir düzenleyici olan Visual Studio Code'a geçmeyi önerir. Üzerinde çalışacakları kodun ilk bölümde oluşturulan EA olduğunu belirtiyorlar. Doğru çalıştığından emin olmak için derledikten sonra kodlamaya devam ederler.

İlk adım, farklı modlar için bir numaralandırma (numaralandırma) kullanarak sinyal modu için bir giriş eklemektir. "Çıkış normal", "giriş çapraz normal", "çıkış çapraz ters" ve "giriş çapraz ters" gibi seçeneklerle "sinyal modu" adı verilen numaralandırmayı oluştururlar. Toby, her seçeneğin anlamını ve ticaret stratejisini nasıl etkilediğini açıklıyor.

Enum'u ekledikten sonra, Toby bunu kodda bir girdi olarak ekler ve varsayılan seçeneği "exit cross normal" olarak atar. Ayrıca herhangi bir hata olup olmadığını kontrol etmek için kodu derlediklerinden emin olurlar.

Ardından Toby, yeni sinyalleri kontrol etmek için OnTick() işlevindeki sinyal modunu kullanmayı planlıyor. Toby, kodu basitleştirmek ve karmaşık if deyimlerinden kaçınmak için, sinyal mantığını işlemek üzere "kontrol sinyali" adlı ayrı bir işlev yazmaya karar verir. Bu işlevin, bir işlemin açılıp açılmayacağını belirten bir Boolean değeri döndüreceğini açıklıyorlar.

Toby, iki parametre alan "kontrol sinyali" işlevini oluşturur: alım veya satım sinyalini kontrol edip etmediğini belirtmek için bir Boolean parametresi ve açık pozisyonların sayısı için bir tamsayı parametresi. Fonksiyonun amacını ve parametreleri açıklayan bir yorum eklerler. Ayrıca, bir pozisyon zaten açıksa, false döndürmek için bir kontrol eklerler.

Ardından Toby, seçilen sinyal moduna göre geçişleri kontrol etmek için kod ekler. Her geçiş seçeneği için "üst çıkış çaprazı", "üst giriş çaprazı", "alt çıkış çaprazı" ve "alt giriş çaprazı" gibi Boolean değişkenleri oluştururlar. Stokastik gösterge tamponlarının değerlerine atıfta bulunarak her geçiş koşulunun arkasındaki mantığı açıklarlar.

Geçiş kontrollerini ekledikten sonra Toby, hata olmadığından emin olmak için kodu derler. Ayrıca eksik if deyimini ekler ve derleme hatalarını düzeltirler.

"Kontrol sinyali" işlevi ve çapraz kontroller yerinde olduğunda, Toby OnTick() işlevine geri döner ve alım ve satım pozisyonlarını kontrol etmek için mevcut if ifadelerini "sinyali kontrol et" işlevine yapılan çağrılarla değiştirir. Uygun parametreleri ve açık pozisyon sayımını fonksiyona iletirler ve bir ticaret açmadan önce doğru olup olmadığını kontrol ederler.

Kodu tekrar derledikten sonra Toby, EA'nın mantığını test etmek için MetaTrader'a geçer. EA'yı seçerler, yalnızca açık fiyat modunu seçerler ve test için görsel modu etkinleştirirler. Her sinyal modu için giriş parametrelerini yapılandırırlar ve görsel testi çalıştırırlar. Toby, beklendiği gibi davrandığından emin olmak için EA'yı kapsamlı bir şekilde test etmenin önemli olduğunu açıklıyor.

Toby, görsel test sonuçlarına göre tüm sinyal modlarının doğru çalıştığı sonucuna varır. Eğitimin bir sonraki bölümünde bir filtre eklemeye geçmenizi önerirler.

Şu anda, bir sinyali kontrol etmek için "bir" ve "iki" değerlerini alıyoruz. Ancak, tamponumuzla 0 indeksinden başlayacağımız şekilde bunu değiştirmek istiyorum. Ek olarak, kontrol sinyali için üç değer almalıyız. Kontrol çubukları temizle filtremiz aktifse, ek değerlere ihtiyacımız olabilir. Bu değişiklikleri uygulamak için kodu değiştirmemiz gerekiyor.

Öncelikle gösterge değerlerini aldığımız yere kadar ilerleyelim. "İndikatör değerlerini al" satırımızın olduğu "untick" fonksiyonunda bazı değişiklikler yapmamız gerekiyor. İlk parametre, göstergenin tampon numarasını temsil eder. Biz sadece 0 indeksindeki ana satırla ilgileniyoruz. Yani bu aynı kalıyor. Ancak, başlangıç konumu şu anda dizin 1'e ayarlı ve iki değer alıyoruz. Başlangıç konumunu dizin 0 olarak değiştirmek ve en az üç değer almak istiyoruz. Bu nedenle, kodu 0 dizininden başlayacak ve üç değer alacak şekilde değiştiriyoruz: sıfır, bir ve iki.

Kontrol çubukları temizle filtremiz aktifse, filtreyi kontrol etmek için ek gösterge değerleri almamız gerekir. "Üç" artı girdi temizleme çubukları değerimizi almamız gerekiyor. Örneğin, giriş temizleme çubukları değeri 5 olarak ayarlanmışsa, toplam sekiz değere ihtiyacımız var. Bu nedenle, 0 dizininden başlayarak gerekli değer sayısına kadar değerleri almak için kodu buna göre değiştiririz.

Bu değişiklikleri yaptıktan sonra, alınan değerleri "Main" adlı tamponda saklamamız gerekiyor. Ek olarak, fonksiyonun istenen değerleri, üç artı giriş silme çubukları değerimizi almada başarılı olup olmadığını kontrol etmeliyiz. Bu kontrolü dahil etmek için kodu değiştiriyoruz.

Ardından, sinyali kontrol ettiğimiz kodu güncellememiz gerekiyor. Ana arabelleğe 0 dizininden erişmek yerine, şimdi çapraz kontrol için 1 ve 2 dizininden erişmemiz gerekiyor. 0 indeksinin tüm örneklerini 1 ile ve indeks 1'i 2 ile değiştiriyoruz.

Artık doğru gösterge değerlerine sahibiz ve for döngüsüne geçebiliriz. Hata olmamasını sağlamak için kodu derlememiz gerekir.

For döngüsünde, 3. indeksten başlayarak temiz çubuk filtremizi kontrol etmek istiyoruz. Bu, sinyal geçiş kontrolünden sonraki konumdur. Sayacımız üç artı şeffaf çubuk değerinin altına düşene kadar bu döngüye devam ediyoruz. Örneğin clear bar değeri 5 ise sayaç 8 olur. Bu, döngümüzün son değeri olan index 7'ye kadar kontrol ettiğimiz anlamına gelir. Bu döngünün amacı, bu çubuklar arasında üst çizgide geçiş olmamasını sağlamaktır. Kodu bu değişiklikleri yansıtacak şekilde güncelliyoruz.

For döngüsünün içinde önce üst seviyeyi kontrol ediyoruz. Main[i-1] tamponundaki değeri giriş üst seviyesi ile karşılaştırırız. Daha büyükse ve Main[i] arabelleğindeki değer, giriş üst seviyesinden küçük veya ona eşitse, bir geçişimiz olur. Diğer yöndeki bir geçiş için ters koşulu da kontrol ederiz. Kodu buna göre değiştiriyoruz.

For döngüsünden sonra başka bir if-else ifadesi ekliyoruz. Giriş temizleme çubuklarımız ters ise, doğru döndürürüz çünkü filtre tersine çevrildiğinde bir geçiş isteriz. Aksi halde false döndürürüz.

Son olarak, alt düzey kontrol için benzer bir if-else ifadesi ekliyoruz. Mevcut if ifadesini kopyalayıp alt seviye kontrol için gerekli değişiklikleri yapıyoruz.

Bu değişiklikleri yaptıktan sonra hata olmaması için kodu tekrar derliyoruz. Şimdi OnTick fonksiyonumuzda check clear bars fonksiyonunu kullanabiliriz.

OnTick fonksiyonunda, sinyali kontrol ettiğimiz if ifadesine check clear bars fonksiyonunu ekliyoruz.

Optimizasyon işlemine devam edelim. 2019'dan başlayarak Euro/Dolar sembolünü ve zaman dilimini seçtik. Sadece açık fiyatı ve hızlı jenerik algoritmayı kullanacağız. Optimizasyon hedefimiz, clearbars filtremiz için en iyi parametreleri bulmaktır.

Optimizasyona başlamadan önce optimize etmek istediğimiz parametreleri tanımlayalım. Bu durumda, silme çubukları filtresinin, filtre için dikkate alınacak çubuk sayısını belirleyen yeniden inceleme dönemini optimize edeceğiz. 5'ten 20'ye kadar değişen değerleri 5'er artarak test edeceğiz. Ek olarak, 50'den 150'ye kadar olan değerleri 25'er artarak test ederek filtre için üst ve alt seviye eşiklerini optimize edeceğiz.

Şimdi optimizasyonu çalıştıralım ve sonuçları analiz edelim. Her bir parametre kombinasyonunun performansını değerlendirmek için net kara, toplam işlemlere ve kar faktörüne bakacağız. Bu metriklere dayanarak, en yüksek karı sağlayan en iyi parametre değerlerini belirleyebiliriz.

Optimizasyonu çalıştırdıktan sonra sonuçları inceleyebilir ve en iyi performansı gösteren parametre değerlerini belirleyebiliriz. 10'luk bir inceleme süresi, 100'lük üst seviye eşiği ve 75'lik alt seviye eşiğinin en yüksek net karı ve kâr faktörünü sağladığını görebiliriz.

Optimum parametre değerlerini belirledikten sonra, stratejimizi daha büyük bir veri setinde geriye dönük test etmek veya canlı bir ticaret hesabına yerleştirmek için bunları kullanabiliriz.

Optimizasyon sonuçlarının geçmiş verilere dayandığını ve gelecekteki performansı garanti etmeyebileceğini unutmayın. Stratejinin performansını sürekli olarak izlemek ve değerlendirmek ve parametreleri gerektiği gibi ayarlamak önemlidir.

Optimize edilmiş parametrelerle, stratejimizi daha da hassaslaştırabilir ve iyileştirme için diğer olasılıkları keşfedebiliriz. Stratejinin etkinliğini artırmak için ek filtreler veya koşullar eklemeyi düşünebiliriz.

Sonuç olarak, optimizasyon süreci, temizleme çubukları filtremiz için en iyi parametre değerlerini bulmamıza yardımcı olarak stratejinin performansını iyileştirir ve potansiyel olarak karlılığı artırır. Ticaret stratejilerinin geliştirilmesi ve rafine edilmesinde değerli bir araçtır.

Stochastic EA for MetaTrader 5 | Part 2
Stochastic EA for MetaTrader 5 | Part 2
  • 2023.05.01
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will improve our stochastic Expert Advisor for Metatrader 5. We...
Neden: