Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 466
- Derecelendirme:
- Yayınlandı:
- 2022.03.21 09:35
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Moving Average Uzman Danışmanı, ticaret sinyalleri oluşturmak için hareketli ortalama kullanır. Pozisyonların açılması ve kapatılması, hareketli ortalama, yeni tamamlanmış çubuktaki (çubuğun indeksi 1'dir) fiyatı çaprazladığında gerçekleştirilir. Lot büyüklüğü özel bir algoritmayla optimize edilir.
Uzman danışman, hareketli ortalama ile fiyat grafiğinin çaprazlamasını analiz eder. Kontrol, CheckForOpen() fonksiyonu tarafından gerçekleştirilir. Hareketli ortalama, açılış fiyatının üzerindeyken kapanış fiyatının altında olacak şekilde çubuğu çaprazlarsa, alış pozisyonu açılır. Hareketli ortalama, açılış fiyatının altındayken kapanış fiyatının üstünde olacak şekilde çubuğu çaprazlarsa, satış pozisyonu açılır.
Uzmanda kullanılan para yönetimi çok basit ama etkilidir: her pozisyonun hacminin kontrolü, önceki işlem sonuçlarına bağlı olarak gerçekleştirilir. Bu algoritma, LotsOptimized() fonksiyonu tarafından uygulanır. Baz lot büyüklüğü, izin verilen maksimum riske göre hesaplanır:
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
MaximumRisk parametresi, her işlem için baz risk yüzdesini gösterir. Genellikle 0,01 (%1) ile 1 (%100) arasında bir değere sahiptir. Örneğin, serbest marjin (AccountFreeMargin) 20.500$'sa ve para yönetimi kuralları %2 risk kullanılmasını öneriyorsa, baz lot büyüklüğü 20500 * 0.02 / 1000 = 0.41 olacaktır. Lot büyüklüğünün doğruluğunu kontrol etmek ve sonucu kabul edilebilir değerlere normalize etmek çok önemlidir. Genellikle, 0.1 adımlı lotlara izin verilir. 0,41 hacimli işlem gerçekleştirilmeyecektir. Normalize etmek için, noktadan sonra 1 karakter kadar hassasiyet için NormalizeDouble() fonksiyonu kullanılır. Bu, 0.4'lük baz lot ile sonuçlanır. Serbest marjine göre baz lotun hesaplanması, ticaret başarısına bağlı olarak işlem hacimlerinde artışa, yani yeniden yatırım ile işlem gerçekleştirilmesine olanak tanır. Bu, ticaret etkinliğini artırmak adına para yönetiminin temel mekanizmadır. DecreaseFactor, kârsız işlemden sonra lot büyüklüğünün kaç kat azaltılacağıdır. Genellikle 2,3,4,5'tir. Önceki işlemler kârsızsa, kârsız dönemi aşana kadar sonraki hacimler DecreaseFactor kat kadar azaltılır. Bu, para yönetimi algoritmasının ana elemanıdır. Fikir çok basit: ticaret başarılı şekilde ilerliyorsa, Uzman Danışman maksimum kâr sağlayan baz lotla çalışır. İlk kârsız işlemden sonra, Uzman Danışman yeni pozitif işlem gerçekleştirilene kadar "hızı azaltır". Algoritma, "hız azaltmayı" devre dışı bırakmaya izin verir, bunu yapmak için DecreaseFactor = 0 olarak ayarlanmalıdır. Son ardışık kârsız işlem sayısı, işlem geçmişinden hesaplanır. Baz lot da buna göre yeniden hesaplanır:
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
Böylece algoritma, bir dizi kârsız işlemden kaynaklanan riski etkin bir şekilde azaltmaya olanak tanır. Lot büyüklüğü, önceki hesaplamalar sonucunda lot = 0 ile sonuçlanabileceğinden, izin verilen minimum lot büyüklüğü için kontrol edilir:if(lot<0.1) lot=0.1;
Uzman Danışman, esas olarak D1 zaman diliminde ve test modunda kapanış fiyatlarıyla çalışmak için tasarlanmıştır. Yalnızca yeni çubuğun açılışında işlem gerçekleştirecektir, bu nedenle test sırasında ayrıntılı tik modelleme modlarının kullanılmasına gerek yoktur.Test sonuçları raporda gösterilir.
Strategy Tester Report
Moving Average
Sembol EURUSD (Euro vs US Dollar) Zaman dilimi 1 Saat (H1) 2003.01.08 00:00 - 2003.11.25 00:00 Model Her bir tik (her bir tikin fraktal interpolasyonu ile mevcut tüm en küçük zaman dilimlerine dayalı olarak) Parametreler Lots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11; Testteki çubuklar 19371 Modellenmiş tikler 656918 Modelleme kalitesi 25.00% Başlangıç bakiyesi 10000.00 Toplam net kâr 1695.20 Brüt kâr 4293.20 Brüt zarar -2598.00 Kâr faktörü 1.65 Beklenen getiri 10.80 Mutlak drawdown 40.35 Maksimum drawdown (%) 318.50 (3.0%) Toplam işlem 157 Satış pozisyonları (kârla kapanan %) 73 (26.03%) Alış pozisyonları (kârla kapanan %) 84 (32.14%) Kârla kapanan işlemler (toplamın % kaçı) 46 (29.30%) Zararla kapanan işlemler (toplamın % kaçı) 111 (70.70%) En büyük kârla kapanan işlem 262.55 zararla kapanan işlem -91.00 Ortalama kâr kârla kapanan işlemler 93.33 zararla kapanan işlemler -23.41 En fazla işleme sahip ardışık kâr serisi (para cinsinden) 2 (387.15) ardışık zarar serisi (para cinsinden) 7 (-287.25) En fazla zarara sahip ardışık kâr serisi (işlem sayısı) 387.15 (2) ardışık zarar serisi (işlem sayısı) -287.25 (7) Ortalama işlem sayısı ardışık kâr serisi 1 ardışık zarar serisi 3
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/7927
![Send Pending Order](https://c.mql5.com/i/code/script.png)
Send Pending Order - SELL STOP bekleyen emrini sona erme verileriyle gönderen ve fiş numarasını yazdıran komut dosyası.
![Modify Pending Order](https://c.mql5.com/i/code/script.png)
Modify Pending Order - bekleyen emir listesinden ilkini seçen, bekleyen emir verilerini yazdıran, bekleyen emri değiştiren ve değişiklikten sonra bekleyen emir verilerini yazdıran komut dosyası.
![Period Converter](https://c.mql5.com/i/code/script.png)
Standart zaman diliminin kullanımına dayalı standart olmayan bir zaman dilimi oluşturmak için komut dosyası.
![Period Converter](https://c.mql5.com/i/code/script.png)
Kendi standart dışı zaman dilimlerinizi oluşturmak için komut dosyası.