Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Tamam arkadaşlar! Bu kod benim tarafımdan yazılmıştır ve kendi EA'larımda kullandığım koddur. Oldukça karmaşıktır çünkü % Risk ve StopLoss'un yanı sıra Marjin Riski %'sini de hesaba katar ve Lot Büyüklüğünü Minimum, Maksimum ve Adım Büyüklüğüne göre düzeltir. Ayrıca, bunlardan sadece birini kullanmak yerine her zaman Cari Bakiye ve Özkaynak minimum değerini kullanır. Bu şekilde daha güvenli olduğunu hissediyorum.
Ancak unutmayınız ki, hesaplamada spread kullanmamaktadır, çünkü kullanılacak StopLoss'u hesaplarken bunu ayrı olarak hesaplıyorum. Aşağıdaki işlev, bu nedenle, göreli bir durma kaybı boyutu kullanır. EA'larımda dblStopLossPips argümanı strateji, yayılma, ATR, vb. gibi çeşitli faktörlere bağlı olarak önceden hesaplanır; bu nedenle, dblLotsRisk() işlevine iletilen son değer, kullanılacak Lot boyutunu hesaplamak için zaten bir son değerdir.
Bu, parantezleri çözmeye çalışırken bana bir baş ağrısı veriyor!
Dürüst olmak gerekirse, burada neyi başarmaya çalıştığınız konusunda kesinlikle hiçbir fikrim yok.
MODE_STOPLEVEL veya SPREAD'in ne kadar alakalı olduğunu göremiyorum, elbette hesaplamalarınızı mevcut fiyattan stop-loss mesafesine dayandırmalısınız?
Hesap para biriminin ne olduğu fark etmemelidir, TICKVALUE hesap para biriminde olduğu için hesaplama aynı olmalıdır.
Lütfen unutmayın, kod satırınızı 2 satıra koyarak yazı o kadar geniş değil ve sağa sola kaydırmadan okumayı kolaylaştırıyor :)
Birkaç sayfa geride, lotu nasıl hesaplayacağımı formülümü gösterdiğim bir resim yayınladım. Ama pip değeri veya tick değeri ya da her ne olursa olsun her zaman ortalıkta dolaşıp duruyor. Alıntı-> temel para birimi ve kafa karıştırıcı olan diğer şeyler, ama şu ana kadar formülüm doğru olduğundan emin olmasam da iyi bir iş çıkardı.
SPREAD alakasız olabilir, ancak durma seviyesi gereklidir. SL'yi, durma seviyesi olan orderopenprice'a mümkün olan en yakın şekilde koydum, ancak dalgalanmalar ve ani yükselmeler nedeniyle, bazen manuel olarak ayarlamam gerekiyor, bu yüzden SL'yi oynaklığa veya her neyse ayarlayabileceğim bir STOPSLIP değişkeni koydum. .
Tamam arkadaşlar! Bu kod benim tarafımdan yazılmıştır ve kendi EA'larımda kullandığım koddur. Oldukça karmaşıktır çünkü % Risk ve StopLoss'un yanı sıra Marjin Riski %'sini de hesaba katar ve Lot Büyüklüğünü Minimum, Maksimum ve Adım Büyüklüğüne göre düzeltir. Ayrıca, bunlardan sadece birini kullanmak yerine her zaman Cari Bakiye ve Özkaynak minimum değerini kullanır. Bu şekilde daha güvenli olduğunu hissediyorum.
Ancak unutmayınız ki, hesaplamada spread kullanmamaktadır, çünkü kullanılacak StopLoss'u hesaplarken bunu ayrı olarak hesaplıyorum. Aşağıdaki işlev, bu nedenle, göreli bir durma kaybı boyutu kullanır. EA'larımda dblStopLossPips argümanı strateji, yayılma, ATR, vb. gibi çeşitli faktörlere bağlı olarak önceden hesaplanır; bu nedenle, dblLotsRisk() işlevine iletilen son değer, kullanılacak Lot boyutunu hesaplamak için zaten bir son değerdir.
Teşekkürler, test edip geri bildirimimi söyleyeceğim!
Oraya neden bu kadar çok değişken koyduğunu anlamasam da, kodun tamamı 1 satıra sığdırılabilir :)
Birkaç sayfa geride, lotu nasıl hesaplayacağımı formülümü gösterdiğim bir resim yayınladım. Ama pip değeri veya onay değeri veya her ne olursa olsun her zaman ortalıkta dolaşıp duruyor. Alıntı->temel para birimi ve kafa karıştıran diğer şeyler, ama şu ana kadar benim formülüm doğru olduğundan emin olmasam da iyi bir iş çıkardı.
SPREAD alakasız olabilir, ancak durma seviyesi gereklidir. SL'yi, durma seviyesi olan orderopenprice'a mümkün olan en yakın şekilde koydum, ancak dalgalanmalar ve ani yükselmeler nedeniyle, bazen manuel olarak ayarlamam gerekiyor, bu yüzden SL'yi oynaklığa veya her neyse ayarlayabileceğim bir STOPSLIP değişkeni koydum. .
Teşekkürler, test edip geri bildirimimi söyleyeceğim!
Oraya neden bu kadar çok değişken koyduğunu anlamasam da, kodun tamamı 1 satıra sığdırılabilir :)
Evet, kodun tümü tek bir satıra konabilir, ancak bana güvenin, gezegendeki en hızlı olmak için kodunuzdan her son CPU döngüsünü sıkıştırmaya çalışmadığınız sürece, bu ASLA kodlamanın iyi bir yolu değildir.
Bu nedenle " GumRai" , diğer kodun başını veya sonunu yapmaya çalışırken baş ağrısından şikayet etti. Basitçe çok okunaklı değildi veya kolayca anlaşılmadı ve bu da hata ayıklamayı çok zorlaştırıyor.
Yolum daha ayrıntılı olabilir, ancak hata ayıklaması ve bakımı daha kolay olduğu kadar sizin gibi başkaları tarafından daha okunabilir ve anlaşılması daha kolaydır.
Ancak hepsini tek bir satırda sıkıştırmaktan çekinmeyin. Aynı sonuçları vermiyorsa şikayet etmeyin. BU hatayı ayıklamak için size bırakacağım.
Bu konuyu yeniden açtığım için üzgünüm ama bir şeyi doğrulamak çok önemli, bu yüzden bulduğum işlev bu (genel olarak açıyorum, daha sonra bana teşekkür edebilirsiniz):
Bu fonksiyon, EUR her zaman temel para birimi olduğundan, hesap riskine dayalı ve bir EUR hesabı üzerinden hesaplanan lot birimlerini döndürmelidir.
Lot birimi anlamına gelir = bir pozisyonun gerçek para büyüklüğü, yani %1 risk içeren 100 €'luk bir hesap için 1 € döndürmeli, örneğin STOPLOSS'a dayalı olarak 100 pipet stoploss 1000 lot birimi olmalıdır (MT4 EŞDEĞERİNDE 0.01 LOT)
Hesap para biriminin EURO olması önemlidir, başka bir şey değil.
LOTUNITTORISK()'ı çağırdığımızda, gerçek parti büyüklüğünü MT4 formatında (MT4'te 1000 nakit birim 0.01 LOT) elde etmek için sonuçları 100.000'e böleceğiz.
RISKPERCENT = bir int ve risk aldığımız risk yüzdesi 1,2,3,4 olabilir
STOPSIZE = bir int ve stoploss büyüklüğümüzün pipet sayısıdır (5 haneli komisyoncuda pip/10), yani örneğin 60 pipet SL, 6 pip SL'dir
Fonksiyonun LOT UNITS'i doğru hesaplayıp hesaplamadığını bilmek istiyorum, lütfen test edin ve herhangi bir hata bulursanız lütfen bana yardım edin :)
Binlerce kez teşekkürler!
1) İşlev, MT4 birimini değil, yalnızca para birimindeki PARTİ BOYUTU'nu döndürür, başka bir şey değil, emir verdiğimde sırasıyla STOPSIZE, AL ve satış durumunda Sor'a eklenir / çıkarılır. MT4, TP ve SL'yi yönetir.
AL, ASK'da açıldı, BID'de kapandı
SATIŞ BID'de açıldı, ASK'da kapandı
2) OrderOpenprice man'i kullanamıyorum çünkü bu fonksiyon hesaplanmadan emir açılmadı.Spreadler dahil değildir, emir açıldıktan sonra STOPSIZE eklediğimde/çıkardığımda spreadler işlenecek.
Ama ondan önce parti büyüklüğünü belirlememiz gerekiyor, bu mantıklı.
3) Bunu anlamıyorum.
4) Açıkçası, ama tekrar vurguluyorum, sipariş yerleştirme işlevi bundan sonra çalıştırılır ve bu işlevle çok az ilgisi vardır. Bu işlevin sahip olduğu tek amaç parti büyüklüğünü belirlemektir, başka bir şey değil.
TickValue / TickSize
Yanlış, bölersem yanlış numarayı alıyorum, belki USD hesaplar için böyle yapılmalı, ama bu bir EUR hesabı.Çarpılması gerekiyor.
ALIM ASK'da açıldı, BID SATIŞ'ta kapandı BID'de açıldı, ASK'da kapandı
2) OrderOpenprice'i kullanamıyorum
3) Bunu anlamıyorum.
4)t, bölersem yanlış sayı alıyorum, belki USD hesaplar için böyle yapılmalı, ama bu bir EUR hesabı.Çarpılması gerekiyor.
ALIM ASK'da açıldı, BID SATIŞ'ta kapandı BID'de açıldı, ASK'da kapandı
2) OrderOpenprice'i kullanamıyorum
3) Bunu anlamıyorum.
4)t, bölersem yanlış sayı alıyorum, belki USD hesaplar için böyle yapılmalı, ama bu bir EUR hesabı.Çarpılması gerekiyor.
1,2 Bunu biliyorum, ancak bunun başka bir işlev tarafından yapıldığını anlayın, bununla hiçbir ilgisi yok
3) Anladığım kadarıyla tik değeri, temel para birimindeki 1 pip değeridir, bu yüzden hangi çifti kullandığıma bağlı olarak ya bölmek ya da onunla çarpmak zorunda kalacak. EUR hesabı olması durumunda çarpmamız gerekiyor gibi görünüyor. bölmek.
İşte bunu daha iyi gösteren bir resim:
%3'lük bir risk ticareti için EUR/USD'de bunu başarmak için MT4 birimlerinde 0.02 LOTS yuvarlatılmış 1798 birim açmamız gerekiyor.
STOPLOSS boyutu başka bir fonksiyon tarafından belirlenir.
Test ettiğimde doğru gibi görünüyor ama formülün gerçekten kesin olup olmadığından emin değilim, burada belirlemeye çalıştığım şey bu, bu yüzden lütfen bu konuda yardım edin.
Ben de bu lot büyüklüğü hesaplamasını SL, hesap riski VE Marjin Çağrı Düzeyine göre özellikle Teminat Çağrısı Düzeyi %100 değil, örneğin %120 olduğunda çözmeye çalışıyorum. Bulduğum en iyi cevap, WHRoeder'ın burada whrea.mq4 kodunda paylaştığı şey. whrea.mq4 kodunun biraz düzeltilmesi gerekiyordu ama WHRoeder bu düzeltmeyi RaptorUK'un yorumuna verdiği yanıtta zaten verdi. Dolayısıyla parti büyüklüğünü hesaplamanın tam cevabı orada ama WHRoeder'ın neler paylaştığını tam olarak anlamak için biraz çaba gerekiyor.
Teminat Çağrısı Seviyesinin %100'den fazla olduğu uzun bir ticaret için lot boyutunu hesaplamak için en son yeni MT4 yapısıyla derlemek için WHRoeder'ın whrea.mq4'ünden çıkardığım ve değiştirdiğim kodu ekledim.
Ancak, bir marj çağrısından kaçınmak için Margin Call Level %'yi hesaba katmak için MarginCallLevel % ile çarpmanın doğru olup olmadığından emin değilim. MarginCallLevel %100 ise, o zaman her iki kod satırı da doğru olur, ancak MarginCallLevel %120 ise, MarginCallLevel % ile çarpmak doğru bir Marjin Çağrısı testi olur mu? Değilse, bunu yapmanın doğru yolu nedir? WHRoeder, bu konuda yardımcı olabilir misiniz? William, elimden geleni yaptım.
İşte bir Uzun ticaret için Marjin Testi bölümündeki kod:
... kodun bu bölümünde yeni derlemeyle ilgili bir sorun var (hata ---> 'MarketInfo' - geçersiz anahtar ifade türü) belki de MT4 600+ derlemesine kadar her şey yolundaydı ... ama o zamandan beri değil artık çalışma.
Yani, lütfen daha yeni bir sürüm yayınlayabilir misiniz ... tabii ki hala buralardaysanız.