1. Enum Tipleri (enumJnsSignal, enumOrderType)
- enumJnsSignal Bu enum, EA'da kullanılan sinyal türünü tanımlar. İki sinyal seçeneği vardır:
- eTypeCrossMA`: Cross 2 MA sinyalini kullanır (iki Hareketli Ortalamanın kesişimi).
- `eTypeTrend`: Hareketli Ortalamalar ve Stokastik kullanarak trendi takip eder.
- enumOrderType Bu enum sipariş türünü tanımlar:
- eBuy`: Bir Alış emri.
- eSell`: Bir Satış emri.
- eNone`: Gerçekleştirilen emir yok.
2. Girdi Parametreleri
- inMagicNumber Emirleri bu EA'dan ayırt etmek için kullanılan benzersiz bir sihirli numara.
- inLotSize Her sipariş için ilk lot büyüklüğü.
- inMultiply Lot büyüklüğü stratejisinde kullanılan çarpan faktörü.
- inJarakLayer Izgara/katman stratejisinde işlem pozisyonları arasındaki pip mesafesi.
- inMAPeriodFast & inMAPeriodSlow Hızlı ve yavaş Hareketli Ortalamalar için dönemler.
- inSTOKPeriod, inSTODPeriod, inSTOSlowing Stokastik Osilatör için parametreler.
- inTakeProfit & inStopLoss Kar Al ve Zararı Durdur ayarları.
3. Struct dataTrades
- Bu struct, toplam pozisyon sayısı (`ttlPos`), pozisyonların ortalama fiyatı (`hargaTA`, `hargaTB`) ve toplam hacim (`ttlLot`) gibi açık işlem pozisyonlarıyla ilgili verileri saklamak için kullanılır.
4. OnInit() Fonksiyonu
- Bu işlev, giriş parametrelerinin doğrulanması (örneğin, hızlı MA döneminin yavaş MA döneminden daha küçük olmasını sağlamak) ve MA ve Stokastik göstergeler için tutamaçların oluşturulması dahil olmak üzere EA'nın başlatılmasını yönetir.
5. OnTick() Fonksiyonu
- Ana işlev, fiyat her hareket ettiğinde (tik) yürütülür.
- GetSignal() ile yeni bir sinyal olup olmadığını kontrol etmek için işlevi çağırır ve bir sinyal bulunursa, işlemleri yürütmek için manageTrading() kullanılır.
- Ayrıca, Kar Al ve Zararı Durdur'un her zaman güncellenmesini sağlamak için setTPSL() işlevini de çağırır.
6. isNewCandle() Fonksiyonu
- Bu işlev, yeni bir mum oluşup oluşmadığını algılar. Bu önemlidir çünkü EA yalnızca yeni mum oluşumlarında sinyalleri kontrol eder.
7. GetSignal() Fonksiyonu
- Bu işlev, seçilen stratejiye dayalı olarak geçerli bir alım satım sinyalinin mevcut olup olmadığını belirler:
- eTypeCrossMA için sinyal, hızlı ve yavaş Hareketli Ortalamaların kesişmesiyle belirlenir.
- eTypeTrend için sinyal, MA ve Stokastik'ten gelen onayı kullanır.
8. manageTrading() Fonksiyonu
- Bu işlev, işlemlerin yürütülmesini yönetir.
- Geçerli bir sinyal algılanırsa, EA getLotSize() fonksiyonu kullanılarak belirlenen lot büyüklüğünde bir pozisyon açar.
- Fiyat mesafesine (`inJarakLayer`) bağlı olarak ek pozisyonlar açmak için bir ızgara/katman stratejisi de uygulanır.
9. updateDataTrades() Fonksiyonu
- Bu fonksiyon, açık pozisyonların ortalama fiyatını ve toplam hacmini hesaplamak gibi devam eden alım satım pozisyonlarıyla ilgili verileri günceller.
10. openTrade() Fonksiyonu
- Bu fonksiyon, oluşturulan sinyale ve hesaplanan lot büyüklüğüne göre yeni bir işlem pozisyonu açar. Emri yürütmek için OrderSend() işlevini kullanır.
11. setTPSL() Fonksiyonu
- Bu fonksiyon her açık pozisyon için Kar Al ve Zararı Durdur değerlerini ayarlar veya günceller.
12. modifTPSL() Fonksiyonu
- Bu fonksiyon, değerler daha önce ayarlanmış olandan farklıysa mevcut pozisyonların Kar Al ve Zararı Durdur değerlerini değiştirir.
13. validateLot() Fonksiyonu
- Bu fonksiyon, kullanılan lot büyüklüğünün izin verilen minimum ve maksimum aralıkta ve minimum lot adımı (`gLotStep`) ile uyumlu olmasını sağlar.
14. getLotSize() Fonksiyonu
- Bu fonksiyon, çarpan faktörünü (`inMultiply`) dikkate alarak, ilk lot büyüklüğüne ve halihazırda açılmış olan pozisyon sayısına göre kullanılacak lot büyüklüğünü hesaplar.
Bu kod, Hareketli Ortalamalar ve Stokastik'ten gelen teknik sinyalleri kullanarak piyasa trendlerini yakalamak ve alım satım pozisyonlarını otomatik olarak yönetmek için tasarlanmıştır.