Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Twitter üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Görüntülemeler:
583
Derecelendirme:
(31)
Yayınlandı:
2022.03.21 09:35
MQL5 Freelance 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


SembolEURUSD (Euro vs US Dollar)
Zaman dilimi1 Saat (H1) 2003.01.08 00:00 - 2003.11.25 00:00
ModelHer bir tik (her bir tikin fraktal interpolasyonu ile mevcut tüm en küçük zaman dilimlerine dayalı olarak)
ParametrelerLots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11;

Testteki çubuklar19371Modellenmiş tikler656918Modelleme kalitesi25.00%

Başlangıç bakiyesi10000.00



Toplam net kâr1695.20Brüt kâr4293.20Brüt zarar-2598.00
Kâr faktörü1.65Beklenen getiri10.80

Mutlak drawdown40.35Maksimum drawdown (%)318.50 (3.0%)


Toplam işlem157Satış 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ükkârla kapanan işlem262.55zararla kapanan işlem-91.00
Ortalama kârkârla kapanan işlemler93.33zararla kapanan işlemler-23.41
En fazla işleme sahipardışık kâr serisi (para cinsinden)2 (387.15)ardışık zarar serisi (para cinsinden)7 (-287.25)
En fazla zarara sahipardışı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 serisi1ardışık zarar serisi3

MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/7927

Send Pending Order Send Pending Order

Send Pending Order - SELL STOP bekleyen emrini sona erme verileriyle gönderen ve fiş numarasını yazdıran komut dosyası.

Modify Pending Order Modify Pending Order

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 Period Converter

Standart zaman diliminin kullanımına dayalı standart olmayan bir zaman dilimi oluşturmak için komut dosyası.

Period Converter Period Converter

Kendi standart dışı zaman dilimlerinizi oluşturmak için komut dosyası.