Programlama öğreticileri - sayfa 4

 

C++ FONKSİYONLARI (2020) - Özyineleme nedir? Yinelemeli fonksiyonları öğrenin!


C++ FONKSİYONLARI (2020) - Özyineleme nedir? Yinelemeli fonksiyonları öğrenin! PROGRAMLAMA EĞİTİMİ

Özyineleme, bir işlevin kendisini çağırdığı bir süreçtir ve karşılık gelen işleve özyinelemeli işlev denir.

Özyineleme, programlamada öğrencilerin kafasını karıştıran konulardan biridir ve bu videoda özyinelemenin nasıl çalıştığını açıklıyorum ve ayrıca aynı problemin farklı çözümlerini karşılaştırıyorum (döngüler ve özyineleme kullanarak).

C++ FUNCTIONS (2020) - What is recursion? Learn recursive functions! PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What is recursion? Learn recursive functions! PROGRAMMING TUTORIAL
  • 2020.10.28
  • www.youtube.com
Recursion is a process in which a function invokes itself, and the corresponding function is called a recursive function.Recursion is one of those topics in ...
 

C++'da bir ATM uygulaması nasıl oluşturulur? (Yeni başlayanlar için)


C++'da bir ATM uygulaması nasıl oluşturulur? (Yeni başlayanlar için) - PROGRAMLAMA EĞİTİMİ (2020)

Kanalıma hoş geldiniz! Ben Saldina ve programlama ile ilgili videolar hazırlıyorum. Bununla ilgileniyorsanız, kanalıma abone olmayı ve bu videoyu beğenmeyi düşünün.

Bu videoda size ATM uygulaması nasıl yapılır onu göstereceğim. İlk olarak, uygulamanın işlevlerini planlayalım. Aşağıdakilere ihtiyacımız olacak:

  1. Çek dengesi
  2. Depozito
  3. Para çekmek
  4. Menüyü göster

Şimdi "Menüyü Göster" işlevini uygulayarak başlayalım. Kullanıcıya menü seçeneklerini gösteren "showMenu" adında bir fonksiyon oluşturacağız.

Menüyü tanımladıktan sonra, onu görüntülemek için "showMenu" fonksiyonunu çağıracağız. Ardından, kullanıcının bir seçenek belirlemesine izin vereceğiz.

Kullanıcının seçimini yapmak için bir anahtar durumu kullanacağız. Her durum için ilgili eylemi gerçekleştireceğiz. 1. seçenek durumunda, bakiyeyi göstereceğiz. 2. seçenek söz konusu olduğunda, depozito tutarını isteyeceğiz ve bakiyeyi buna göre güncelleyeceğiz. 3. seçenek durumunda, bakiyeyi güncellemeden önce para çekme miktarını isteyeceğiz ve geçerli olup olmadığını kontrol edeceğiz. Son olarak, programdan çıkmak için bir seçenek 4 ekleyeceğiz.

Kullanıcının menüyle art arda etkileşime geçmesini sağlamak için bir do-while döngüsü kullanacağız. Döngü, kullanıcı 4. seçeneği seçene kadar devam edecektir.

Hesaplar arasında para transferi gibi daha fazla özellik ekleyerek programı geliştirmekten çekinmeyin. Kodunuzu yorumlarda paylaşın, ben de gözden geçireyim. Beğenmeyi, abone olmayı ve zil simgesine basmayı unutmayın. Bir sonraki videoda görüşmek üzere!

How to build an ATM application in C++? (For beginners) - PROGRAMMING TUTORIAL (2020)
How to build an ATM application in C++? (For beginners) - PROGRAMMING TUTORIAL (2020)
  • 2020.08.03
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

C++ İŞLEVLERİ (2020) - Genel işlevler ve şablonlar nelerdir? PROGRAMLAMA EĞİTİMİ


C++ İŞLEVLERİ (2020) - Genel işlevler ve şablonlar nelerdir? PROGRAMLAMA EĞİTİMİ

Herkese merhaba, kanalıma hoş geldiniz! Benim adım Saldina ve programlama ile ilgili videolar hazırlıyorum. Programlama ile ilgileniyorsanız, lütfen kanalıma abone olun ve bu videoya bir başparmak verin. Desteğiniz daha fazla kişiye ulaşmama ve programlama bilgisini yaymama yardımcı oluyor.

Bu videoda C++'daki jenerikler ve şablonlardan bahsetmek istiyorum. Jenerikler, aynı kodu farklı veri türleri ile kullanmamıza izin verir. Bu, farklı veri türleriyle çalışan tek bir işleve sahip olabileceğimiz anlamına gelir.

Bu kavramı anlamak için bir örnek verelim. İki değişkenin değerlerini değiştiren bir işlev oluşturmak istediğimizi varsayalım. Başlangıçta, iki tamsayı değişkeni değiş tokuş etmek için bir işlev yaratıyoruz, ancak bunu diğer veri türleriyle de çalışacak şekilde genişletebiliriz.

Genel bir işlev oluşturmak için C++'da şablonlar kullanırız. "şablon" anahtar kelimesini ve ardından genellikle "T" olarak adlandırılan tür adını kullanarak bir şablon türü tanımlarız. İşlevin içinde, belirli veri türünü "T" ile değiştiriyoruz. Bu, işlevi jenerik yapar ve farklı veri türleriyle çalışabilir.

Artık her veri türü için ayrı işlevler oluşturmamıza gerek yok. Şablon işlevi, takas mantığını destekleyen herhangi bir veri türüyle kullanılabilir.

Fonksiyonu test etmek için, istenilen tipte değişkenler yaratıp bunları jenerik takas fonksiyonuna iletiyoruz. C++'daki tür çıkarım mekanizması, türü açıkça belirtmemize izin verir.

Jenerikleri ve şablonları kullanarak kod tekrarını ortadan kaldırabilir ve daha esnek ve yeniden kullanılabilir kodlar yazabiliriz. Bu yaklaşım, her tür için ayrı işlevler oluşturmadan farklı veri türlerini işlememizi sağlar.

Umarım bu video, C++'daki jenerikler ve şablonlar kavramını anlamanıza yardımcı olmuştur. Yararlı bulduysanız, lütfen kanalıma abone olun ve bu videoyu beğenin. Desteğiniz büyük beğeni topluyor. İzlediğiniz için teşekkür ederim, bir sonraki videomda görüşmek üzere. Güle güle!

C++ FUNCTIONS (2020) - What are generic functions and templates? PROGRAMMING TUTORIAL
C++ FUNCTIONS (2020) - What are generic functions and templates? PROGRAMMING TUTORIAL
  • 2020.11.11
  • www.youtube.com
Generic programming is used to increase the efficiency of the code. The advantage of writing generic code is code reusability (which means that code that was...
 

Modern C++'da Lambda ifadeleri (adım adım derinlemesine eğitim)


Modern C++'da Lambda ifadeleri (adım adım derinlemesine eğitim)

Kanalıma hoş geldiniz millet! Bu videoda, modern C++'da çok önemli bir konuyu, lambda ifadeleri olarak da bilinen lambdaları tartışacağım. Muhtemelen lambdaları daha önce duymuşsunuzdur ve bugün modern C++'da lambdaları kullanarak daha hızlı ve temiz kod yazmaya başlamak için bilmeniz gereken her şeyi açıklayacağım.

En önemli kavramları ele alacağım, ancak lambdaların öğrenilecek çok şeyi olan geniş bir konu olduğunu unutmayın. Ek örnekler ve pratik istiyorsanız, açıklamada modern C++'daki lambdalara odaklanan ücretsiz bir kitap sağlayacağım. Kontrol etmekten çekinmeyin.

Lambda ifadeleri, modern C++'ta kullanıma sunulmuştur ve C++11 ve üzeri sürümlerde mevcuttur. Ana amaçları, satır içi anonim işlevler yazmanıza izin vermektir. Peki satır içi anonim işlevler nelerdir? Normal işlevler, kodu bir kez yazmanıza ve bu koda tekrar ihtiyaç duyduğunuzda işlevi çağırarak yeniden kullanmanıza izin vererek gereksiz kod ihtiyacını ortadan kaldırır. Öte yandan, bir satır içi işlev, yeniden kullanılması amaçlanmayan küçük, basit bir işlevdir düzenli fonksiyonlar Genellikle ad gerektirmeyen ve ayrı bir işlev oluşturma çabasına değmeyen küçük kod parçacıkları için kullanılırlar. Burası lambdaların özlü, okunması kolay, hızlı çalıştırılan ve her şeyi tek bir yerde tutan isimsiz işlevler yazmanın bir yolunu sağladığı için parladığı yerdir.

Şimdi koda geçelim. Bu gösteri için, C++ kullanıcı arayüzü uygulamaları oluşturmak için ideal bir IDE olan C++Builder'ı kullanacağım. C++ kullanıcı arabirimi uygulamaları hakkında bilgi edinmekle ilgileniyorsanız, açıklamada C++Builder'ı indirebileceğiniz bir bağlantı sağlayacağım. Başlamak için bir konsol uygulaması oluşturalım. "Dosya"yı ve ardından "Yeni Diğer"i tıklayın ve "Konsol Uygulaması"nı seçin. C++'ın seçildiğinden emin olun ve "Tamam"ı tıklayın. İşte ilk kodumuz. Üzerine bir kaç ekleme yapalım.

Öncelikle, kodu çalıştırdıktan sonra konsol penceresini açık tutmak için bir "sistem duraklatma" komutu ekleyeceğim. Ardından, giriş/çıkış işlemleri için "iostream" kitaplığını dahil edeceğim. Artık kodumuz çalışmaya hazır ve programı çalıştırırsak "Hello, World!" mesaj. Şimdi bir lambda ifadesinin yapısına bir göz atalım. Önceki kodu kaldıracağım ve basit bir örnekle başlayacağız. Bir lambda oluşturmak için şu sözdizimini kullanırız: açılı parantezler (yakalama yan tümcesi), parantezler (parametreler) ve kıvrımlı parantezler (işlev tanımı).

Capture yan tümcesinin içinde, çevreleyen kapsamdan lambda içinde kullanmak istediğimiz değişkenleri belirtebiliriz. Şimdilik capture deyimini boş bırakıp parametrelere odaklanalım. Parametreleri parantez içinde tanımlayabiliriz. Bu örnekte, "p" adlı tek bir parametre kullanacağım. Son olarak lambda'nın fonksiyon gövdesini süslü parantezler içinde tanımlıyoruz. Şimdi bir problemle karşılaşacağımız bir örnek oluşturalım ve lambda kullanarak çözelim. Bir vektörle çalışacağız, bu yüzden "vektör" kitaplığını dahil etmemiz gerekiyor. "v" adında bir tamsayı vektörü yaratacağım ve onu bazı değerlerle başlatacağım. Ardından, "algoritma" kitaplığından "for_each" adlı kullanışlı bir işlevi tanıtacağım. Bu işlev, vektörümüz gibi bir aralıktaki öğeleri yineler ve her öğeye belirli bir işlevi uygular.

"for_each" işlevinin içinde, "v.begin()" ve "v.end()" kullanarak aralığı belirteceğiz. Şimdi, her bir öğeyle ne yapmak istediğimizi tanımlayalım. Başlangıçta, size kodla ilgili bir problem göstereceğim ve ardından çözüm olarak lambdaları tanıtacağım. Parametreyi basan aşırı yüklenmiş işleci olan bir yapı ekledim. "for_each" işlevinin vektördeki tüm öğeleri yazdırmasını bekliyoruz. Kodu çalıştırırsak, beklendiği gibi çalışmadığını göreceğiz. Yalnızca son öğeyi yazdırır. Bunun nedeni, aşırı yüklenmiş operatörün değere göre iletilmesi ve her çağrı için parametreyi kopyalayarak hatalı çıktıya neden olmasıdır. Bunu düzeltmek için aşırı yüklenmiş operatörü bir lambda ifadesi ile değiştirebiliriz. Daha önce tartıştığımız lambda ifadesi sözdizimini kopyalayıp "for_each" işlevinin içine yapıştıracağım. Şimdi kodu tekrar çalıştıralım.

Gördüğünüz gibi lambda ifadesi mükemmel çalışıyor ve vektördeki tüm öğeleri yazdırıyor. Lambda ifadesi, kodu basitleştirir ve okunabilirliği artırır. Ayrıca, daha önce karşılaştığımız sorundan kaçınarak her çağrıya doğru parametrenin iletilmesini sağlar. Şimdi, kapsayıcı kapsamdan değişkenleri yakalama yetenekleri olan lambdaların başka bir yararlı özelliğini keşfedelim. Bu özellik, lambdaların değişkenlere erişmesine ve bunları lambda içinde kullanmasına izin verir. Ancak, varsayılan olarak, lambdalar değişkenleri değere göre yakalar, yani değişkenin bir kopyasını oluştururlar.

Bir sonraki örneğimizde, "çarpan" adında bir değişken oluşturup 2'ye ayarlayacağım. Lambda'nın içinde, bu değişkeni vektördeki her elemanı çarpmak için kullanacağım. Bu sefer tanıtım amacıyla "for_each" işlevi yerine aralık tabanlı bir for döngüsü kullanacağım. Kodu çalıştırırsak yakalanan değişken sayesinde vektördeki elemanların 2 ile çarpıldığını görürüz. Ancak, değişkenleri değere göre yakalamanın bir sınırlaması vardır. Yakalanan değişkeni lambda içinde değiştiremeyiz.

Bu sınırlamanın üstesinden gelmek için değişkeni referans olarak yakalayabilir ve değerini değiştirmemize izin verebiliriz. Bunu lambda ifadesine bir artırma işlemi ekleyerek göstereceğim. Şimdi, kodu çalıştırırsak, vektördeki öğelerin 2 ile çarpıldığını ve ardından 1 ile artırıldığını göreceğiz. Kapsayan kapsamdan değişkenleri yakalamak esneklik sağlar ve lambdaların harici verilerle sorunsuz bir şekilde çalışmasına izin verir. Değişkenleri referansa göre yakalamanın, ömür boyu yönetim ve olası veri yarışları gibi etkileri olabileceğini akılda tutmak önemlidir. Bu özelliği kullanırken dikkatli olun ve lambda'nın yürütülmesi sırasında yakalanan değişkenin geçerli kaldığından emin olun.

Özetlemek gerekirse, lambda ifadeleri, modern C++'ta özlü ve okunabilir kod yazmak için güçlü araçlardır. Küçük kod parçacıkları için ayrı işlevlere olan ihtiyacı azaltarak satır içi anonim işlevler oluşturmanıza olanak tanırlar. Lambda'lar, değişkenlere kendi kapsamlarından da erişerek esneklik sağlar ve kodun yeniden kullanımını geliştirir.

Umarım bu videoyu modern C++'daki lambda ifadelerini anlamada faydalı bulmuşsunuzdur. Herhangi bir sorunuz varsa, aşağıdaki yorumlarda sormaktan çekinmeyin. Daha fazla C++ eğitimi için bu videoyu beğenmeyi ve kanalıma abone olmayı unutmayın. İzlediğiniz için teşekkürler ve mutlu kodlamalar!

Lambda expressions in modern C++ (in depth step by step tutorial)
Lambda expressions in modern C++ (in depth step by step tutorial)
  • 2021.11.17
  • www.youtube.com
A lambda is an unnamed function that is used for short snippets of code that cannot be reused and are not worth naming. It makes the code cleaner, easier to ...
 

Profesyoneller için Visual Studio İpuçları ve Püf Noktaları - Visual Studio Eğitimi



Profesyoneller için Visual Studio İpuçları ve Püf Noktaları - Visual Studio Eğitimi

Herkese merhaba! Benim adım Leslie Richardson ve Visual Studio Hata Ayıklama ve Tanılama ekibinde program yöneticisi olarak çalışıyorum. Bu videoda, Visual Studio 2019'daki Autos, Locals ve Watch pencereleri için arama özelliği adı verilen yeni bir özelliği tartışacağım için heyecanlıyım. Bu özellik, hata ayıklama deneyiminizi büyük ölçüde geliştirmek ve değerli zamanınızdan tasarruf ederek sizi daha üretken kılmak için tasarlanmıştır.

Bu özelliği göstermek için, Visual Studio 2019'da açık bir .NET Core uygulamam olduğu bir senaryoyu ele alalım. Bu uygulamada birden çok tarif nesnesi içeren bir listem var. Karşılaştığım zorluk, özellikle liste 61 nesne içerdiğinde oldukça can sıkıcı olabilen bu listede belirli tarifleri bulmak. Her nesneyi manuel olarak genişletmek, başlık özelliğini bulmak ve "salata" gibi arama kriterlerimle eşleşip eşleşmediğini kontrol etmek zaman alan bir iştir.

Bu işlemi basitleştirmek için "Hata Ayıklayıcı Görüntüsü" adlı bir özellik kullanacağım. Bu özellik, nesnelerin Otomatikler, Yereller ve İzleme pencereleri dahil olmak üzere çeşitli hata ayıklayıcı pencerelerinde nasıl görüntüleneceğini özelleştirmeme olanak tanıyor. Nesnelerimin sınıf tanımına "Debugger Display" özniteliğini ekleyerek, bu pencerelerin değer sütununda hangi özelliğin gösterilmesi gerektiğini belirleyebilirim. Bu durumda, her tarifi başlığına göre görüntülemek istiyorum, bu nedenle "Hata Ayıklayıcı Ekranı" özelliğini tarif başlığı özelliğini gösterecek şekilde ayarlıyorum.

Şimdi, tarif listesini tekrar genişlettiğimde, her bir nesnenin başlığını hemen görebiliyorum, bu da her birini ayrı ayrı genişletmeden istenen tarifleri bulmayı çok daha kolaylaştırıyor. Bu önemli bir gelişme, ancak 61 öğeyle ilgilendiğim belirli tarifleri bulmak yine de zaman alabilir. İzleme penceresi için arama özelliğinin kullanışlı olduğu yer burasıdır.

Listeyi manuel olarak kaydırmak veya genişletmek yerine, sağlanan arama işlevini kullanabilirim. "Salata" gibi arama terimimi giriyorum ve enter tuşuna basıyorum. Visual Studio beni hemen anahtar kelimenin ilk geçtiği yere götürerek çok fazla zaman ve emek tasarrufu sağlıyor. Visual Studio tarafından bulunan diğer eşleşmeler arasında gezinmek için "Sonrakini Bul" düğmesini de kullanabilirim. Eşleşmeler listesinde ileri ve geri gitmek için, aramanın derinliğini belirleyen arama adımı parametresini ayarlayabilirim.

Arama özelliğine ek olarak, Hata Ayıklayıcı Görüntüleme özelliğinin C#, F# veya Visual Basic kullananlar gibi yönetilen kod kullanıcıları için kullanılabilir olduğunu da belirtmek isterim. C++ kullanıcıları için, NATVIS adlı eşdeğer bir özellik mevcuttur. NATVIS ile, hata ayıklayıcı pencerelerinde görüntülenecek özellikleri tanımlayabileceğiniz ayrı bir XML dosyası oluşturmanız gerekir.

Umarım bu açıklama yardımcı olmuştur. İzlediğiniz için teşekkürler!

Şimdi, Visual Studio'nun arayüzünü nasıl daha düzenli hale getirebileceğimizi ve performansını nasıl iyileştirebileceğimizi keşfedelim. Çözümleri Visual Studio'da açtığımızda, Çözüm Gezgini'ni son kullandığımız andan itibaren belgelerin durumunu, kaydırma konumlarını ve genişletilmiş/daraltılmış bölümleri hatırlar. Bu yararlı olabilse de CPU döngülerini de tüketir ve her zaman istenmeyebilir. Yeni bir başlangıç yapmak ve performansı artırmak için bazı ayarları değiştirebiliriz.

Araçlar > Seçenekler menüsünde, Projeler ve Çözümler bölümünün altında dikkate alınması gereken iki ayar vardır. "Çözüm yükünde belgeleri yeniden aç" seçeneği, daha önce açılan belgeleri hatırlar ve "Çözüm yükünde çözüm gezgini proje hiyerarşi durumunu geri yükle" seçeneği, Çözüm Gezgini'nin genişletilmiş/daraltılmış durumunu hatırlar. Bu seçeneklerin işaretini kaldırarak, Visual Studio bir çözümü açarken önceki durumu geri yüklemeyecektir. Bunun yerine, Çözüm Gezgini'nde herhangi bir belge açık veya genişletilmiş bölümler olmadan temiz bir sayfa ile başlayacaktır. Bu, performansı artırmaya yardımcı olabilir ve her çözüm için yeni bir başlangıç sağlayabilir.

Visual Studio'da Git ile çalışırken üretkenliğinizi ve işbirliğinizi geliştirebilecek çeşitli özellikler vardır. Git Değişiklikleri penceresi, Git deponuzun kapsamlı bir görünümünü sağlar ve değişiklikleri doğrudan Visual Studio içinden hazırlamanıza, işleme koymanıza ve göndermenize olanak tanır. Görünüm > Git Değişiklikleri'ne giderek bu pencereye erişebilirsiniz. Ek olarak Visual Studio, kodunuzun farklı sürümleri arasındaki farkları vurgulayan yerleşik bir Git diff aracı sağlar. Solution Explorer'da bir dosyaya sağ tıklayıp "Değiştirilmemiş Dosyayla Karşılaştır" veya "En Son Dosyayla Karşılaştır"ı seçerek bu özelliğe erişebilirsiniz.

Visual Studio'daki bir diğer yararlı özellik, kodu yeniden düzenleme yeteneğidir. Yeniden düzenleme, davranışını değiştirmeden kodunuzun yapısını ve okunabilirliğini geliştirmeye yardımcı olur. Visual Studio, değişkenleri veya yöntemleri yeniden adlandırma, kodu ayrı yöntemlere veya sınıflara ayıklama ve kod bloklarını yeniden düzenleme gibi çeşitli yeniden düzenleme seçenekleri sağlar. Bu yeniden düzenleme seçeneklerine erişmek için, yeniden düzenleme yapmak istediğiniz koda sağ tıklayın ve içerik menüsünden "Yeniden Düzenleme" öğesini seçin. Bir sembolü yeniden adlandırmak için Ctrl + R, Ctrl + R gibi yaygın yeniden düzenleme işlemleri için klavye kısayollarını da kullanabilirsiniz.

Kodlama deneyiminizi daha da geliştirmek için Visual Studio'daki kod parçacıklarından yararlanabilirsiniz. Kod parçacıkları, bir kısayol yazıp Sekme tuşuna basarak kodunuza hızla eklenebilen önceden tanımlanmış kod şablonlarıdır. Visual Studio, farklı programlama dilleri ve çerçeveleri için çok çeşitli yerleşik kod parçacıkları sağlar. Yinelenen kodlama görevlerini otomatikleştirmek için kendi özel kod parçacıklarınızı da oluşturabilirsiniz. Kod parçacıklarına erişmek ve bunları yönetmek için Araçlar > Kod Parçacıkları Yöneticisi'ne gidin.

Hata ayıklama, geliştirme sürecinin önemli bir parçasıdır ve Visual Studio, güçlü hata ayıklama yetenekleri sunar. Yürütmeyi duraklatmak ve değişkenlerin ve nesnelerin durumunu incelemek için kodunuzda kesme noktaları ayarlayabilirsiniz. Hata ayıklama sırasında, belirli değişkenlerin veya ifadelerin değerlerini izlemek için İzleme penceresini kullanabilirsiniz. Acil pencere, hata ayıklama sırasında kod yürütmenize ve ifadeleri değerlendirmenize olanak tanır. Yalnızca belirli bir koşul karşılandığında tetiklenen koşullu kesme noktalarından ve hata ayıklayıcıyı duraklatmadan iletileri Çıktı penceresine yazdıran izleme noktalarından da yararlanabilirsiniz.

Visual Studio, kodunuzun kalitesini ve doğruluğunu sağlamak için çok önemli olan birim testini de destekler. MSTest, NUnit veya xUnit gibi çeşitli test çerçevelerini kullanarak birim testleri oluşturabilirsiniz. Visual Studio, çözümünüzdeki tüm kullanılabilir testleri görüntüleyen ve bunları tek tek veya gruplar halinde çalıştırmanıza veya hata ayıklamanıza izin veren bir Test Gezgini penceresi sağlar. Beklenen sonuçları doğrulamak için test yöntemlerini ve iddiaları tanımlamak için öznitelikleri kullanabilirsiniz. Visual Studio ayrıca, kodunuzun ne kadarının birim testleri tarafından kapsandığını gösteren kod kapsamı analizi sunar.

Büyük projeler veya çözümlerle çalışırken, kod tabanında gezinmek ve anlamak zor olabilir. Visual Studio, kodda gezinme ve anlamaya yardımcı olacak çeşitli özellikler sağlar. Çözüm Gezgini, çözümünüzün yapısını keşfetmenize ve belirli dosyalara veya sınıflara hızla gitmenize olanak tanır. Çözümünüzdeki sembolleri, dosyaları veya türleri aramak için Şuraya Git özelliğini (Ctrl + ,) da kullanabilirsiniz. CodeLens özelliği, kodunuzla ilgili referanslar, değişiklikler ve test kapsamı gibi ek bilgileri doğrudan düzenleyici içinde görüntüler.

Web geliştirme için Visual Studio, HTML, CSS ve JavaScript gibi popüler web teknolojileri için mükemmel destek sunar. HTML düzenleyici, IntelliSense, kod biçimlendirme ve HTML sayfalarınızı doğrudan düzenleyici içinde önizleme yeteneği gibi özellikler sağlar. CSS düzenleyici, renk seçiciler, CSS için IntelliSense özellikleri ve CSS değişikliklerinin canlı önizlemesi gibi benzer özellikler sunar. Visual Studio ayrıca kesme noktaları belirlemenize, değişkenleri incelemenize ve sorunları tanımlayıp düzeltmek için kodunuzda adım adım ilerlemenize olanak tanıyan JavaScript hata ayıklamasını da destekler.

Visual Studio, geliştirme deneyiminizi geliştirebilecek geniş bir uzantı ve eklenti ekosistemine sahiptir. Bu uzantılar, belirli çerçeveler veya platformlar için ek işlevsellik, dil desteği ve araçlar sağlar. Uzantılar > Uzantıları Yönet'e giderek doğrudan Visual Studio içinden uzantılara göz atabilir ve yükleyebilirsiniz. Bazı popüler uzantılar, gelişmiş kod analizi ve yeniden düzenleme araçları sunan ReSharper'ı ve hafif, platformlar arası bir kod düzenleyici sağlayan Visual Studio Code'u içerir.

Ortak projeler üzerinde çalışırken Visual Studio, Azure DevOps ve GitHub gibi işbirliği platformlarıyla entegrasyon sunar. Visual Studio projenizi uzak bir Git deposuna kolayca bağlayabilir ve değişiklikleri gönderme, çekme ve birleştirme gibi yaygın Git işlemlerini gerçekleştirebilirsiniz. Visual Studio ayrıca kod incelemeleri, iş öğesi izleme ve sürekli entegrasyon ve dağıtım iş akışları için araçlar sağlar.

Visual Studio, .NET, C++, Python, JavaScript ve çok daha fazlası dahil olmak üzere çok çeşitli programlama dillerini ve çerçevelerini destekler. IntelliSense, kod parçacıkları ve her dile göre uyarlanmış hata ayıklama yetenekleri gibi dile özgü özellikler sağlar. Tercih ettiğiniz programlama dilleri için geliştirme deneyimini daha da geliştirmek için dile özgü uzantılar ve SDK'lar yükleyebilirsiniz.

Performans optimizasyonu ve sorun giderme için Visual Studio, uygulamalarınızdaki darboğazları ve bellek sızıntılarını belirlemeye yardımcı olan profil oluşturma araçları sunar. Performance Profiler, kodunuzun performansını analiz etmenize ve optimize edilebilecek alanları belirlemenize olanak tanır. Bellek Profilcisi, uygulamalarınızdaki bellekle ilgili sorunları saptamanıza ve tanılamanıza yardımcı olur. Bu profil oluşturma araçları, kodunuzu optimize etmenize ve uygulama performansını iyileştirmenize yardımcı olacak ayrıntılı raporlar ve içgörüler sağlar.

Visual Studio ayrıca Android ve iOS gibi platformlar için mobil uygulama geliştirme desteği sağlar. Xamarin veya React Native gibi çerçeveleri kullanarak platformlar arası mobil uygulamalar oluşturabilirsiniz. Visual Studio, kullanıcı arayüzleri tasarlamak, mobil uygulamalarda hata ayıklamak ve bunları öykünücülere veya fiziksel cihazlara dağıtmak için araçlar sunar. Arka uç entegrasyonu ve depolama için Azure Mobile Apps gibi bulut hizmetlerinden de yararlanabilirsiniz.

Visual Studio, geleneksel masaüstü ve web uygulamalarına ek olarak Nesnelerin İnterneti (IoT) uygulamalarının geliştirilmesini destekler. Visual Studio'yu kullanarak Raspberry Pi, Arduino gibi cihazlar ve diğer IoT cihazları için uygulamalar oluşturabilirsiniz. Visual Studio IoT geliştirme araçları, IoT senaryoları için proje şablonları, hata ayıklama desteği ve dağıtım seçenekleri sağlar.

Visual Studio ayrıca Azure gibi popüler bulut platformları için entegrasyonlarla bulut geliştirme yetenekleri sunar. Bulut kaynaklarını doğrudan Visual Studio içinden oluşturabilir, yönetebilir ve dağıtabilirsiniz. Bulut uygulamaları oluşturmak ve dağıtmak, bulut hizmetleriyle bütünleştirmek ve bulut kaynaklarınızı izlemek için araçlar sağlar.

Bunlar, Visual Studio'nun geliştiricilere sunduğu birçok özellik ve yetenekten yalnızca birkaçıdır. Çok çeşitli geliştirme ihtiyaçlarını ve iş akışlarını karşılayabilen güçlü ve çok yönlü bir IDE'dir. İster küçük projeler üzerinde ister büyük kurumsal çözümler üzerinde çalışıyor olun, Visual Studio, geliştirme sürecinizi kolaylaştıracak ve üretkenliğinizi artıracak araçlar ve özellikler sağlar.

Visual Studio Tips and Tricks for Professionals - Visual Studio Tutorial
Visual Studio Tips and Tricks for Professionals - Visual Studio Tutorial
  • 2020.07.01
  • www.youtube.com
Learn to use Visual Studio like pro from creating layouts to keyboard shortcuts.C++ tutorial: https://youtu.be/mUQZ1qmKlLYJava tutorial : https://youtu.be/Wq...
 

20 Dakikada MetaTrader 5 için kod tamamlama EA!



20 Dakikada MetaTrader 5 için kod tamamlama EA!

Bugün, MetaTrader ticaret platformu için ilk EA'mızı (Uzman Danışman) kaydetmeye başlamanın heyecanını yaşıyoruz. Bu EA, MetaTrader için bir ticaret sistemi olacak şekilde tasarlanmıştır ve videomuzda ayrıca performansını değerlendirmek için hızlı bir geriye dönük test yapacağız.

Başlamak için MetaTrader platformunu başlatıyoruz ve "Araçlar"a tıklayarak ve açılır menüden "MetaQuotes Dil Düzenleyici"yi seçerek MetaEditor'a erişiyoruz. MetaEditor, uzman danışmanlarımızın yanı sıra MetaTrader için betikler ve göstergeler oluşturduğumuz yerdir.

Yeni bir uzman danışman oluşturmak için MetaEditor'ün sol üst köşesinde bulunan "New" butonuna tıklıyoruz. Görünen sihirbazda ilk seçeneği seçip "İleri" yi tıklıyoruz. Daha sonra EA'mıza "First EA" gibi bir isim verebilir ve tekrar "Next"e tıklayabiliriz. Herhangi bir ek seçeneği seçmeyi atlıyoruz ve "Bitir" i tıklayarak ilerliyoruz.

Artık EA'mız için ilk kodumuz var. Başlamak için, kodun kendisine hiçbir işlevsellik sağlamayan gri yorumlar gibi gereksiz yorumları kaldırarak kodu temizliyoruz. İlk beş satırı ve bazı gereksiz satırları tercihimize göre siliyoruz.

Kodlamaya başlamadan önce, EA'mızın ne yapmasını istediğimizi düşünelim. Bu video için amacımız, EA'nın belirli bir saatte bir alış ticareti açmasını ve günün önceden belirlenmiş başka bir saatinde kapatmasını sağlamaktır. Bunu başarmak için iki giriş değişkenine ihtiyacımız var: biri açık zaman için, diğeri kapanış zamanı için.

MetaEditor'a dönersek, bu iki giriş değişkenini "Değişkenler" adı verilen yeni bir bölüm altında bildiriyoruz. Bu değişkenlerin kod dışından değiştirilebileceğini belirtmek için "input" anahtar kelimesini kullanıyoruz. Belirli saat değerleri girmek istediğimiz için türlerini tamsayı olarak belirledik. Örneğin değişkenleri "openHour" ve "closeHour" olarak adlandırabiliriz.

Değişkenleri tanımladıktan sonra hata olmaması için kodu derliyoruz. Her şey doğruysa, araç kutusunda herhangi bir hata mesajı olmadığını görebiliriz.

Ardından, MetaTrader platformuna geri dönüyoruz ve EA'mızı herhangi bir tabloya sürüklüyoruz. EA'nın adını, sürümünü ve bağlantısını gezginde "Uzman Danışmanlar" altında görebiliriz. EA'yı genişleterek, giriş değişkenlerine erişebilir ve kodu değiştirmeden değerlerini değiştirebiliriz.

Şimdi fiyat her değiştiğinde çağrılan "OnTick" fonksiyonuna geçelim. Kullanıcı tarafından belirtilen açık kalma süresine ulaşıp ulaşmadığımızı kontrol etmek istiyoruz. Bunu yapmak için, sembolün ve sunucunun mevcut saatini almamız gerekiyor. "datetime" türünde "time" adlı bir değişken oluşturuyoruz ve ona şimdiki zamanı atamak için "TimeCurrent" işlevini kullanıyoruz.

"time" değişkenimizde depolanan mevcut saat ile artık açık saatle eşleşip eşleşmediğini kontrol edebiliriz. "openHour" değişkenini geçerli saatin ("time.hour") saat bileşeniyle karşılaştırmak için bir "if" ifadesi kullanırız. Koşul doğruysa "if" bloğuna giriyoruz.

"if" bloğunun içinde "OrderSend" fonksiyonunu kullanarak bir pozisyon açıyoruz. Parametre olarak sembolü, işlem yönünü (alış), lot büyüklüğünü (1 lot) belirtiyoruz ve fiyatı soruyoruz. Ek olarak, zararı durdur ve kârı al değerlerini tercihlerimize göre belirliyoruz.

Kodu derledikten ve MetaTrader strateji test cihazını kullanarak bir geriye dönük test yaptıktan sonra, EA'nın belirtilen açık zamanda bir pozisyon açtığını gözlemliyoruz. Ancak, "OnTick" işlevini tekrar tetikleyen müteakip fiyat hareketleri nedeniyle birden fazla pozisyonun açıldığını fark ettik.

Birden çok pozisyonun açılmasını önlemek için, bir işlemin zaten açık olup olmadığını takip etmek için "isTradeOpen" adlı bir boole değişkeni sunuyoruz. Başlangıçta "isTradeOpen" değerini false olarak ayarladık. Yeni bir pozisyon açmadan önce "isTradeOpen" ifadesinin yanlış olup olmadığını kontrol ederiz. Eğer öyleyse, pozisyonu açmaya devam ediyoruz ve "isTradeOpen" değerini true olarak ayarlıyoruz. Bu şekilde, "OnTick" işlevi birden çok kez tetiklense bile, yalnızca halihazırda açık bir işlem yoksa yeni bir pozisyon açacaktır.

Bu mantığı uyguladıktan sonra kodu tekrar derleyip backtest çalıştırıyoruz. Bu kez EA'nın belirtilen açık zamanda bir pozisyon açtığını ve bir önceki pozisyon kapanana kadar herhangi bir ek pozisyon açmadığını gözlemliyoruz.

İşlemi belirtilen kapanış saatinde kapatmaya devam ederken, "OnTick" işlevinde başka bir kontrol sunmamız gerekiyor. Pozisyon açtıktan sonra güncel saat ile kullanıcı tarafından belirtilen kapanış saatini karşılaştırıyoruz. Eşleşirlerse, bir "if" bloğu gireriz.

"if" bloğunun içinde "OrderClose" işlevini kullanarak işlemi kapatıyoruz. Kapanacak pozisyonun bilet numarasını, lot büyüklüğünü ve teklif fiyatını parametre olarak veriyoruz. Ayrıca istenirse zararı durdur ve kârı al değerleri gibi ek parametreler belirleyebiliriz.

Kodu tekrar derliyoruz ve işlemin belirtilen kapanış saatinde kapandığını doğrulamak için bir geriye dönük test yapıyoruz. Geriye dönük test sırasında, pozisyonların belirtilen sürelere göre açılıp kapandığından emin olmak için ticaret geçmişini kontrol edebiliriz.

MetaTrader ticaret platformu için ilk EA'mızı başarıyla oluşturduk. EA, belirli bir açık zamanda bir alış ticareti açmak ve önceden belirlenmiş bir kapanış zamanında kapatmak için tasarlanmıştır. Kodu değiştirmeden açılış ve kapanış sürelerinin özelleştirilmesine izin vermek için giriş değişkenlerini uyguladık. Kontrolleri ve değişkenleri tanıtarak, aynı anda yalnızca bir işlemin açılmasını ve belirtilen kapanış saatinde kapanmasını sağlıyoruz.

Code complete EA for MetaTrader 5 in 20 Minutes!
Code complete EA for MetaTrader 5 in 20 Minutes!
  • 2022.06.27
  • www.youtube.com
Program your first EA for MetaTrader. I will show you how you can easily code your first Expert Advisor or trading system in Mql5.As an algo trader I develop...
 

Hareketli Ortalama Geçiş EA mql5 Programlama



Hareketli Ortalama Geçiş EA mql5 Programlama

Merhaba, ben Toby, bugünün videosunda size MetaTrader 5 için basit bir hareketli ortalama geçiş uzman danışmanının nasıl kodlanacağını göstereceğim.

Öncelikle uzman danışmanın ne yapmasını istediğimizi tanımlayalım. Hızlı hareket eden ortalama (mavi çizgi) yavaş hareket eden ortalamanın (kırmızı çizgi) üzerine çıktığında EA'nın bir alış pozisyonu açmasını ve hızlı hareket eden ortalama yavaş hareket eden ortalamanın altına geçtiğinde bir satış pozisyonu açmasını istiyoruz. Ayrıca, hareketli ortalamaların dönemleri için girdi değişkenlerinin yanı sıra, EA'ya bir zararı durdur ve karı al'ı ekleyeceğiz.

Kodlamaya başlamak için MetaTrader 5'te MetaEditor'u açın. Şablonu kullanarak yeni bir uzman danışman oluşturun ve buna "Hareketli Ortalama" adını verin. Gereksiz satırları ve yorumları kaldırarak kodu temizleyin. Ardından, hızlı ve yavaş hareket eden ortalamaların periyotları için girdi değişkenleri ekleyin. Bu değişkenler için varsayılan değerleri ayarlayın ve bunları EA ayarlarının giriş sekmesinde görüntüleyin.

Geçerli değerlerin girildiğinden emin olmak için OnInit işlevindeki kullanıcı girişini kontrol edin. Giriş geçersizse (sıfır veya negatif), bir uyarı mesajı görüntüleyin ve EA'yı durdurun. ma işlevini kullanarak hızlı ve yavaş hareket eden ortalamalar için tutamaçlar oluşturun. Her hareketli ortalama için sembol, nokta ve giriş değişkenlerini ayarlayın. Tutamaç oluşturmanın başarılı olup olmadığını kontrol edin. Değilse, bir uyarı mesajı görüntüleyin ve EA'yı durdurun. Gösterge değerlerini depolamak için genel değişkenler oluşturun. Hızlı ve yavaş arabellekler için dinamik diziler kullanın. OnTick işlevinde, en son gösterge değerlerini arabelleklere kopyalayın ve yeterli veri olup olmadığını kontrol edin. Değilse, geri dönün ve bir uyarı mesajı görüntüleyin.

Her şeyin düzgün çalışıp çalışmadığını doğrulamak için gösterge değerlerini ekrana yazdırın. Hızlı ve yavaş hareket eden ortalamaların değerlerini görüntülemek için Yorum işlevini kullanın.

Strateji Test Aracında, gösterge değerlerinin doğru görüntülenip görüntülenmediğini kontrol etmek için EA'yı test edin. Şimdi, hareketli ortalamaların bir geçişini kontrol edebiliriz. Hızlı hareket eden ortalama, 1. çubukta yavaş hareket eden ortalamanın altında ve 0. çubukta yavaş hareket eden ortalamanın üzerindeyse, bir geçişimiz var. Bu durumda bir alış pozisyonu açın.

Pozisyon açmak için CTrade sınıfını kullanın. Bir ticaret değişkeni tanımlayın ve gerekli işlemlere devam edin. Geçiş koşulunun doğru çalışıp çalışmadığını ve pozisyonların buna göre açılıp açılmadığını doğrulamak için kodu derleyin ve Strateji Test Aracında EA'yı test edin.

MetaTrader 5'teki hareketli ortalama geçiş uzman danışmanını kodlamak için bu kadar. Ve sonra bir satın alma pozisyonu açmak için trade.Buy işlevini kullanabiliriz. Sabit bir değer olabilen veya risk yönetimi stratejinize dayalı olabilen pozisyonun hacmini belirliyoruz. Şimdilik 0,1 lotluk sabit bir hacim kullanalım. Şimdi satış pozisyonunu kontrol etmek için bir koşul eklememiz gerekiyor. Hızlı hareket eden ortalama, 1. çubuk için yavaş hareket eden ortalamanın üzerinde ve mevcut çubuk için altındaysa, ters yönde bir geçişimiz olur. Bu durumda satış pozisyonu açmak istiyoruz. Bunun için trade.Sell fonksiyonunu kullanabiliriz.

Son olarak pozisyonlarımıza stop-loss ekleyebilir ve kar alabiliriz. trade.SetStopLoss ve trade.SetTakeProfit fonksiyonlarını kullanacağız. Bu örnek için 100 piplik bir zararı durduralım ve 200 piplik bir kar alalım. Artık basit hareketli ortalama geçiş uzman danışmanımız için eksiksiz bir kodumuz var. MetaTrader 5 platformunda derleyip test edebiliriz.

Kodu hatasız bir şekilde derledikten sonra uzman danışmanı kaydedebilir ve MetaTrader 5'te kullanabilirsiniz. Uzman danışmanınızı gerçek parayla kullanmadan önce geriye dönük test etmeyi ve optimize etmeyi unutmayın.

Moving Average Crossover EA mql5 Programming
Moving Average Crossover EA mql5 Programming
  • 2022.09.06
  • www.youtube.com
Today I will show you how to code a simple Moving Average Crossover EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a f...
 

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



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

Merhaba, ben Toby, bugünün videosunda size MetaTrader 5 için bir zaman aralığı koparma uzman danışmanının (EA) nasıl kodlanacağını göstereceğim. Amaç, videoda gösterilen stratejiye benzer sonuçlar elde etmektir.

İlk olarak, EA'nın arkasındaki mantığı tartışalım. Belirli bir zamanda başlayıp başka bir zamanda biten basit bir zaman aralığı tanımlayacağız. EA, bu aralıktaki en yüksek ve en düşük fiyatları kaydedecektir. Fiyat, aralığın ardından en yüksek fiyatın üzerine çıkarsa, EA bir satın alma işlemine girer. Tersine, fiyat aralığın altına düşerse, EA bir satış işlemine girer. Ek olarak, tüm pozisyonları kapatmak için bir kapanış zamanı belirleyeceğiz. Bu basit mantık, EA'mıza rehberlik edecektir.

Kodlamaya başlamak için MetaEditor'u açın ve yeni bir uzman danışman oluşturun. Gereksiz satırları kaldırarak şablon kodunu kişisel tercihinize göre temizleyin.

Ardından, başlangıç zamanı, aralık süresi, kapanış zamanı, parti büyüklüğü ve sihirli sayı için giriş değişkenlerini tanımlayın. Bu girdiler, kullanıcıların EA'nın davranışını özelleştirmesine olanak tanır. Yanlış girişleri önlemek için giriş değerlerini kontrol etmek önemlidir. Örneğin, sihirli sayının sıfır veya negatif olmamasını, lotların negatif olmamasını, başlangıç zamanının ve sürenin geçerli aralıklar içinde olmasını ve kapanış zamanının başlangıç zamanı artı aralık süresine eşit olmamasını sağlayabiliriz.

Giriş değişkenlerini tanımlayıp değerlerini kontrol ettikten sonra global değişkenlerin oluşturulmasına geçiyoruz. Bu değişkenler EA boyunca kullanılacaktır. Menzil ile ilgili değişkenleri "menzil yapısı" adı verilen bir yapıda gruplandırıyoruz. Bu yapı, başlangıç zamanı, bitiş zamanı, kapanış zamanı, yüksek ve düşük fiyatlar ve giriş, yüksek koparma ve düşük koparma için bayraklar içerir.

Ek olarak, değişkenler için başlangıç değerlerini önceden tanımladığımız yapının yapıcısını tanımlarız. Bu, yapının varsayılan değerlerle başlatılmasına yardımcı olur. Ayrıca amaçlarını açıklamak için her değişkenin arkasına yorumlar ekleriz.

Herhangi bir hata olup olmadığını kontrol etmek ve her şeyin doğru çalıştığından emin olmak için kodu derliyoruz.

Son olarak, MetaTrader 5 "MqlTick" türünden "MqlTick" ve "last_tick" gibi birkaç değişken daha oluşturuyoruz. Ticaretle ilgili işlemleri yürütmek için "CTrade" türünde bir değişken de tanımlıyoruz.

Bu noktada EA'mız için gerekli değişkenleri ve yapıları kurduk. Bir sonraki bölümde, EA'nın gerçek mantığını "OnTick" işlevinde kodlamaya başlayacağız. Videonun bundan sonraki bölümünde OnTick fonksiyonunda Expert Advisor'ın asıl mantığını kodlamaya odaklanacağız. Ancak devam etmeden önce, şimdiye kadar yaptıklarımızı gözden geçirelim.

Aralığın başlangıç zamanı, süre, kapanış zamanı, parti büyüklüğü ve sihirli sayı gibi EA için giriş değişkenlerini tanımlayarak başladık. Kullanıcının bu girişler için geçerli değerler girmesini sağlamak için giriş doğrulama kontrolleri de ekledik. Ardından, başlangıç zamanı, bitiş zamanı, kapanış zamanı, aralığın yüksek ve alçak ve giriş, yüksek koparma ve düşük koparma için işaretler dahil olmak üzere aralıkla ilgili değişkenleri depolamak için rangeStructure adlı bir yapı oluşturduk. Ardından, değişkenleri varsayılan değerlerle başlatmak için rangeStructure için bir kurucu tanımladık. Ek olarak, bir rangeStructure örneği, mevcut ve önceki onay işaretlerini depolamak için MqlTick türünde iki değişken ve ticari işlemleri yürütmek için bir CTrade nesnesi dahil olmak üzere bazı genel değişkenler bildirdik.

Şimdi EA'nın ana mantığını kodlamak için OnTick fonksiyonunun implementasyonuna geçelim. Videonun devamı şöyle: OnTick fonksiyonunda öncelikle SymbolInfoTick fonksiyonunu kullanarak mevcut tick bilgilerini güncelleyeceğiz. Bu, alış ve satış fiyatlarının yanı sıra kene zamanına erişmemizi sağlar. Ardından, geçerli tıklama süresinin kullanıcı tarafından tanımlanan aralık içinde olup olmadığını kontrol edeceğiz. Bunu yapmak için, mevcut tıklama zamanını aralığın başlangıç zamanı ve bitiş zamanı ile karşılaştırırız. Tik süresi aralığın içindeyse, aralığın içinde olduğumuzu belirtmek için flagEntry'yi true olarak ayarlıyoruz.

Bundan sonra, yüksek bir kopuş olup olmadığını kontrol ederiz. Mevcut kene fiyatı, aralığın önceki yüksek seviyesini aşarsa ve flagHighBreakout yanlışsa, bir satın alma işlemi başlatırız. Tekrarlanan girişleri önlemek için flagHighBreakout'u true olarak ayarladık. Benzer şekilde, düşük bir kırılma olup olmadığını kontrol ederiz. Geçerli kene fiyatı, aralığın önceki düşük değerinin altına düşerse ve flagLowBreakout yanlışsa, bir satış işlemi başlatırız. Birden fazla girişi önlemek için flagLowBreakout'u true olarak ayarladık. Son olarak, mevcut tick zamanının kapanış zamanına eşit olup olmadığını kontrol ediyoruz. Öyleyse, trade.CloseAll yöntemini kullanarak tüm açık pozisyonları kapatırız.

EA'nın temel mantığı budur. Elbette, işlevselliğini artırmak için, zararı durdur ve kârı al seviyeleri, para yönetimi kuralları ve ek ticaret filtreleri gibi ekleyebileceğiniz ek öğeler vardır. Ancak bu videoda, zaman aralığından ayrılma stratejisinin temel konseptine odaklandık.

Unutmayın, bu EA bir başlangıç noktası olarak hizmet etmek içindir ve onu gereksinimlerinize ve ticaret tercihlerinize göre daha da özelleştirebilirsiniz.

Videonun bundan sonraki bölümünde anlatılan mantığı uygulamak için gerekli kodu ekleyerek kodlama işlemine devam edeceğiz. Bu videoyu faydalı bulduysanız, gelecekteki videolardan haberdar olmak için kanalıma abone olmayı ve like atmayı unutmayın. Herhangi bir sorunuz varsa veya yardıma ihtiyacınız varsa, yorum bırakmaktan çekinmeyin, yardımcı olmaktan memnuniyet duyarım. İzlediğiniz için teşekkürler, bir sonraki videoda görüşmek üzere. Hoşçakal!

Range Breakout EA mql5 Programming | Part 1/4
Range Breakout EA mql5 Programming | Part 1/4
  • 2022.09.25
  • www.youtube.com
Today 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 br...
 

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



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

Merhaba, ben Toby, bugünün videosunda MetaTrader 5 için zaman aralığı koparma EA'mızı kodlamaya devam edeceğiz. Henüz ilk videoyu izlemediyseniz, bağlantıya buradan ulaşabilirsiniz. Bir önceki videoda EA mantığını ve ne kodlamaya çalıştığımızı anlatmıştım.

Şimdi MetaEditor'a geçelim ve kodlamaya devam edelim. Sembolümüz için fiyat her değiştiğinde çağrılan OnTick fonksiyonu üzerinde çalışıyor olacağız. Bu fonksiyonda, menzil hesaplamamızı ve koparma kontrolünü kodlayacağız. İlk olarak, sembol için geçerli tik'i almamız gerekiyor. Geçerli tik'i currentTick adlı bir değişkende saklıyoruz ve ayrıca önceki tik'i saklamak için bir öncekiTick değişkenimiz var.

Ardından, yeni bir aralık hesaplamamız gerekip gerekmediğini kontrol ederiz. Yeni bir aralığı hesaplamak için çeşitli koşullar vardır.

  1. Ayarlanmış bir aralık kapanış saatimiz varsa ve geçerli tıklama süresi, aralık kapatma süresinden büyük veya ona eşitse, yeni bir aralık hesaplarız.

  2. Hem yüksek koparma hem de düşük koparma işaretleri doğru olarak ayarlanırsa yeni bir aralık hesaplarız.

  3. EA'yı ilk kez çalıştırıyorsanız ve henüz bir aralık hesaplamamışsak, yeni bir aralık hesaplarız.

  4. Aralık bitiş zamanı sıfır değilse ve aralığın peşindeysek ve aralığa girmemişsek yeni bir aralık hesaplarız.

Ayrıca açık pozisyonumuz olup olmadığını da kontrol ederiz. Açık pozisyon yoksa, yeni bir aralık hesaplamaya devam ederiz.

Yeni bir aralık hesaplamamız gerektiğine karar verdiğimizde, CalculateRange işlevini çağırırız. Bu işlevde, tüm aralık değişkenlerini varsayılan durumlarına sıfırlarız. Ardından, günün başlangıcını alarak ve giriş aralığı başlangıç saatini dakika cinsinden ekleyerek aralık başlangıç zamanını hesaplarız. Hesaplanan başlangıç zamanı geçmişse Cumartesi ve Pazar günleri hafta sonu günleri olarak kabul edilerek bir sonraki güne kaydırılır. Benzer şekilde, başlangıç zamanına dakika cinsinden giriş aralığı süresini ekleyerek aralık bitiş zamanını hesaplıyoruz. Bitiş saati Cumartesi veya Pazar gününe denk geliyorsa bir sonraki geçerli güne kaydırıyoruz.

Menzil kapanış zamanını da başlangıç zamanı ve bitiş zamanı hesaplamasıyla aynı mantığı kullanarak hesaplıyoruz. Hesaplanan süreleri grafik üzerinde görselleştirmek için ObjectCreate fonksiyonunu kullanarak nesneler oluşturuyoruz. Aralık başlangıç zamanı için dikey bir çizgi nesnesi oluşturuyoruz ve daha önce çizilen nesneleri siliyoruz.

Şimdiye kadar kaydettiğimiz ilerleme bu kadar ve bir sonraki videoda kodlamaya devam edeceğiz.

Range Breakout EA mql5 Programming| Part 2/4
Range Breakout EA mql5 Programming| Part 2/4
  • 2022.10.01
  • www.youtube.com
Today 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 br...
 

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


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

Merhaba, ben Toby, bugünün videosunda çıkış yapan EA'mızı kodlamaya devam edeceğiz. Önceki videolarda başlangıç zamanı, bitiş zamanı ve kapanış zamanı aralığını zaten hesaplamıştık. Şimdi, yüksek ve düşük aralığın yanı sıra koparma koşulları ve konum kapanışını kodlamak istiyoruz. Daha önceki videoları izlemediyseniz aşağıdaki açıklama kısmından linklere ulaşabilirsiniz. MetaEditor'a atlayalım ve kodlamaya başlayalım.

İlk önce OnTick işlevine gideceğiz. Aralığın içinde olup olmadığımızı kontrol ederek yüksek ve düşük değerleri kaydederek başlayacağız. Geçerli zamanın aralık başlangıç ve bitiş saatleri arasında olup olmadığını kontrol etmek için bir if ifadesi kullanırız. Eğer öyleyse, yüksek ve düşük değerleri buna göre güncelleriz. Ayrıca aralığın içinde bir tik olduğunu belirtmek için bir giriş bayrağını true olarak ayarladık. Ardından, yüksek ve düşük aralık için grafik nesnelerini güncelleriz.

Ardından, aralığın yüksek ve düşük seviyelerini çizmek için DrawObject işlevine geçiyoruz. Kapanış süresi için kod bloğunu kopyalayıp üst seviye için gerekli değişiklikleri yapıyoruz. "Range High" nesne adını kullanıyoruz ve aralığın başlangıç zamanından aralığın yüksek fiyatına bir trend çizgisi çiziyoruz. Ayrıca, aralığın yüksek değerini görüntülemek için araç ipucunu güncelliyoruz. Aynısını düşük aralık için de yapıyoruz, nesne adını değiştiriyoruz ve aralık başlangıç zamanından aralık düşük fiyatına bir trend çizgisi çiziyoruz.

Aralık sonundan kapanış saatine bir kırılma belirten bir çizgi çizmek için kod bloğunu tekrar kopyalarız ve buna göre değiştiririz. Nesne adını değiştiriyoruz ve aralık bitiş zamanından kapanış zamanına doğru bir trend çizgisi çiziyoruz. Çizgi stilini de noktalı olarak ayarladık.

Görsel bir test derleyip çalıştırdıktan sonra, grafikte görüntülenen yüksek, düşük aralık ve koparma çizgilerini görebiliriz. Şimdi, koparma koşullarını kodlayalım. OnTick fonksiyonu içerisine CheckBreakouts adında yeni bir fonksiyon ekliyoruz. İlk olarak, aralık bitiş saatinden sonra olup olmadığımızı kontrol ediyoruz. Ayrıca, aralığın içinde bir onay işareti olduğunu belirten giriş bayrağının doğru olarak ayarlandığından emin oluruz. Bu koşullar karşılanırsa, yüksek ve düşük kesintileri kontrol etmeye devam ederiz.

Yüksek bir kırılma için, yüksek kırılma bayrağının yanlış olup olmadığını ve son kenenin satış fiyatının yüksek aralıktan büyük veya ona eşit olup olmadığını kontrol ederiz. Eğer öyleyse, PositionOpen işlevini kullanarak bir satın alma pozisyonu açıyoruz. Benzer şekilde, düşük bir kırılma için, düşük kırılma bayrağının yanlış olup olmadığını ve son kenenin teklif fiyatının düşük aralığın altında veya ona eşit olup olmadığını kontrol ederiz. Bu koşullar karşılanırsa, bir satış pozisyonu açarız.

Kodu derliyoruz ve bir kopuş meydana geldiğinde pozisyonların açıldığını doğrulamak için görsel bir test gerçekleştiriyoruz. Ardından, konum kapatmayı uygularız. Yeni bir aralık hesaplamadan önce, mevcut zamanın aralık kapatma süresinden büyük veya ona eşit olup olmadığını kontrol ederiz. Öyleyse, Konumları Kapat işlevini çağırırız. Bu işlev, belirtilen sihirli sayı ile tüm açık konumlar arasında döngü yapar ve bunları PositionClose işlevini kullanarak kapatır. Döngü sırasında toplam konum sayısı değişse bile tüm konumların kapalı olmasını sağlamak için bir geri sayım döngüsü kullanıyoruz.

Son olarak, kodu derliyoruz ve aralık kapatma süresine ulaşıldığında konumların kapandığını doğrulamak için görsel bir test çalıştırıyoruz.

Bu video için bu kadar. Herhangi bir sorunuz varsa, bunları aşağıdaki yorumlarda bırakmaktan çekinmeyin. Daha fazla kodlama videosu için beğenmeyi ve abone olmayı unutmayın. İzlediğiniz için teşekkürler!

Range Breakout EA mql5 Programming | Part 3/4
Range Breakout EA mql5 Programming | Part 3/4
  • 2022.10.09
  • www.youtube.com
Today 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 br...
Neden: