"ORDER_MAGIC'in Tek Enstrüman Üzerinde Farklı Expert Advisor'larla Alım Satım Yapmak İçin Kullanımı" makalesi için tartışma - sayfa 2
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
2. (int) ifadesinin ne anlama geldiği ve int cinsinden hangi değeri aldığı DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
1.Yazı için yazara teşekkürler.
2. (int)-log10(SymbolInfoDuble(symbol,SYMBOL_VOLUM_STEP); if.(int) ifadesi ne anlama gelir ve int cinsinden hangi değeri alır DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
3.Test sırasında neden (int) ve SYMBOL_VOLUME_STEP ifadeleri Unknown tanımlayıcı değerlerini alıyor ve bu durum int DIGITS sonucunu nasıl etkiliyor?
4.Etkileşim kodu nasıl çalışıyor?
EA'lar aynı enstrüman üzerinde çalıştığında etkileşim kodu önemli midir, burada EA'ların aynı veya farklı sayısal adlarını ayarlamak yeterlidir.
İfade (int), aşağıdaki ifadenin int türüne dönüştürülmesidir.
SYMBOL_VOLUME_STEP ifadesi, ENUM_SYMBOL_INFO_INTEGER numaralandırmasının değerlerinden biridir.
Yukarıdaki ifadelerin hiçbiri bir değişken değildir, bu nedenle doğal olarak Debugger'da "Unknown identifier" değerine sahiptirler,
kelimenin tam anlamıyla "tanınması imkansız" anlamına gelir, Debugger basitçe izleme için bildirilen değişkenin hangi türe ait olduğunu anlayamaz.
4. Etkileşim kodu nasıl çalışır?
EA'lar aynı enstrüman üzerinde çalıştığında etkileşim kodu önemli midir, burada EA'ların aynı veya farklı sayısal adlarını ayarlamak yeterlidir.
Üzgünüm, dikkatim dağıldı ve 4. soruyu cevaplamadım.
Etkileşim kodu, birkaç güvenilir Uzman Danışman için tek bir sihir olarak kullanılır.
Örneğin, hiçbir şeyi değiştirmek istemediğiniz tamamen çalışılmış bir EA'nız var, ancak bir takip eden EA oluşturdunuz ve bu EA ile nasıl çalışacağını test etmek istiyorsunuz. Orijinal EA'yı ve takip eden EA'yı başlatırsınız ve her iki EA'ya da aynı etkileşim kodunu verirsiniz ve diğerinin eylemlerini kendi eylemleri olarak algılarken, böyle bir etkileşim kodu olmayan üçüncü EA'lar tarafından yapılan değişiklikler göz ardı edilir (bunlar seçilen EA çifti için görünmez olacaktır).
Aynı zamanda, EA tanımlama kodu (dijital ad) farklı olduğu için bazı verileri ayrı ayrı işleyebilirsiniz,
Her şey sizin oluşturacağınız talebe bağlıdır (örneğin, sadece trol çalışmasıyla ilgili bir rapor oluşturabilirsiniz).
Talebe bağlı olarak bir ve aynı işlem sizin veya başkasının olarak tanımlanabilir.
1.Yazı için yazara teşekkürler.
2. (int)-log10(SymbolInfoDuble(symbol,SYMBOL_VOLUM_STEP); if.(int) ifadesi ne anlama gelir ve int cinsinden hangi değeri alır DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
3.Test sırasında neden (int) ve SYMBOL_VOLUME_STEP ifadeleri Unknown tanımlayıcı değerlerini alıyor ve bu durum int DIGITS sonucunu nasıl etkiliyor?
4.Etkileşim kodu nasıl çalışıyor?
EA'lar aynı enstrüman üzerinde çalıştığında etkileşim kodu önemli midir, burada EA'ların aynı veya farklı sayısal adlarını ayarlamak yeterlidir.
Kodun anlamını tam olarak anlamadığınızı anladığım için, ne olduğunu ayrıntılı olarak anlayalım
1. Enstrüman için lot hacmi adımının boyutunu alırız, SYMBOL_VOLUME_STEP - Bir işlem yapmak için minimum hacim adımı (Genellikle 0,01'dir);
2. Sayının 10 tabanındaki logaritmasını alın => -log10(0,01) = 2 veya -log10(0,10) = 1 (MQ için -log10(0,10) = 1'dir);
3. Sonucu (-2/-1) int türünde olan DIGITS değişkenine eşitleyin.
4. DIGITS değeri <0 ise = 0 değerini atayın.
PS
(int), bir hesaplamanın sonucunu int türüne zorlamak için kullanılır...
Bu makale "Zararı Durdur/Kârı Al" olayını yansıtmamaktadır. Ve bu çok güçlü bir ihmaldir!
Örnek: bir Uzman Danışmanın iki bölümü vardır: ilki, belirli bir sembol ve zaman dilimindeki "sanal konum" 0'a eşit olduğunda çalışır ve ikincisi, bu "sanal konum" sıfıra eşit olmadığında çalışır; diyelim ki Uzman Danışman bu pozisyonu kapatıyor. Bir durumu ele alalım: bir sinyal üzerine bir satın alma işlemi yaptık, "sanal pozisyon" +100 değerini aldı. Bir stop loss tetiklendi, gerçek "sanal pozisyon" 0 değerini aldı. Ancak bizim durumumuzda +100'e eşit olacaktır. Uzman Danışman, pozisyonun +100 olduğunu "düşünecek", ancak gerçekte 0'dır ve bu da istenmeyen bir sonuca yol açacaktır.
Lütfen bu noktayı bana açıklayın.
Bu makale "Zararı Durdur/Kârı Al" olayını yansıtmamaktadır. Ve bu çok güçlü bir ihmaldir!
Örnek: bir Uzman Danışmanın iki bölümü vardır: ilki, belirli bir sembol ve zaman dilimindeki "sanal konum" 0'a eşit olduğunda çalışır ve ikincisi, bu "sanal konum" sıfıra eşit olmadığında çalışır; diyelim ki Uzman Danışman bu pozisyonu kapatıyor. Bir durumu ele alalım: bir sinyal üzerine bir satın alma işlemi yaptık, "sanal pozisyon" +100 değerini aldı. Bir stop loss tetiklendi, gerçek "sanal pozisyon" 0 değerini aldı. Ancak bizim durumumuzda +100'e eşit olacaktır. Uzman Danışman, pozisyonun +100 olduğunu "düşünecek", ancak gerçekte 0'dır ve bu da istenmeyen bir sonuca yol açacaktır.
Lütfen bu noktayı bana açıklayın.
Doğru, bu makale durdurma emirlerini işlemek için bir modül içermiyor.
Sihirli sayıyı kullanma olasılıklarını açıklar.
Sanal bir pozisyon kullanmak için sanal stoplar gerekecektir.
O zaman neden büyüye ihtiyacımız var?
Çünkü geçmişi araştırmak için kullanırsak, bu Uzman Danışman tarafından verilen emirlerin tam bir resmini elde edemeyiz, çünkü kayıpları durdurmayı ve kar almayı belirleyemeyiz.
O zaman neden büyüye ihtiyacımız var?
Çünkü geçmişi araştırmak için kullanırsak, bu Uzman Danışman tarafından verilen emirlerin tam bir resmini elde edemeyiz, çünkü kayıpları durdurup kar elde edemeyiz.
Durdurmaları bir ticaret stratejisinin parçası olarak kullanmanın bir hata olduğunu anlamak gerekir. Sunucuda depolanan durdurma emirleri, bir şeylerin ters gittiği durumlardan (sunucu ile iletişim arızası, piyasada panik) koruyucu emirlerdir, diğer durumlarda EA sinyalleri şeklinde sanal durdurma emirleri oldukça uygundur.
Ancak uygulama, programcıların durakları sanallaştırmak için genellikle tembel olduğunu göstermektedir. Sonuçta, hazır durdurma emirlerini kullanmak çok daha kolaydır.
Hesaplama yaparken tüm anlaşmaları gözden geçirmek gerekir, eğer belirli bir sihirbazla bir anlaşma varsa - hacmini dikkate alırız, diğer tüm anlaşmalar stoploss / stakeeprofit ile kapanma gerçeği için kontrol edilir, eğer varsa, o zaman hesaplanan tutarı sıfırlamak gerekir. Benim makalemde stoploss da dikkate alınmıyor. Kimin aklına gelirdi ki... Bu yeni bir konu, beni mazur görmeniz gerekecek.
Bu sihirle bir şey daha var, EA bir pozisyon açtı, EA'nın bağlantısını kesiyorsunuz ve pozisyonları manuel olarak kapatıyorsunuz - işte bu, bundan sonra yanlış hesaplama olacak.
Ve durum nedir: diyelim ki bir EA 0.1 alış açtı, ikinci EA 0.1 satış açtı, kümülatif pozisyon 0'a eşittir ve iki karşı pozisyon olduğu kabul edilir.
Tüm bunlara ek olarak, bazı kontrol araçlarına, tüm büyücüler için hesaplanan hacimlerin gerçek hacimle tutarlı olup olmadığını hesaplamak için bazı komut dosyalarına ihtiyacımız var, seviyelendirme araçlarına ihtiyacımız var - bir büyücü ile açıp diğeriyle kapatmak için.
Bu da büyü kullanımının hiç talep görüp görmeyeceği ve eğer öyleyse bununla nasıl yaşanacağı gibi büyük bir soruyu gündeme getiriyor....
Her danışman için ayrı bir hesap açmalı mıyız?
Tek Bir Enstrüman Üzerinde Farklı Uzman Danışmanlarla Ticaret Yapmak İçin ORDER_MAGIC Kullanımı adlı yeni makale yayınlandı:
Yazar: Николай
Yanılıyorsam lütfen beni düzeltin...
Farklı EA'ların işlemlerini ve konumlarını ayırt etmek için buradaki kodunuza benzer bir şey denemeliyim. Birkaç şüphem var. Bu kod optimize edilmiş mi? Uzun bir işlem geçmişiniz varsa ve bu kodu çalıştıran birkaç eas varsa, bu kodun bilgisayarı gerçekten yavaşlatabileceğini düşünüyorum - henüz kanıtlamamış olsam da, bu sadece düşündüğüm şey.
Örneğin, magic_exp1_en.mq5 dosyasında, prHistory_Deals(ulong &buf[],int HTD) yöntemi buf[] tamponunu yaptığımız tüm işlemlerle doldurur.
Yalnızca henüz bir DEAL OUT tarafından doldurulmamış son DEAL IN'i saklasaydık performans açısından daha iyi olmaz mıydı?
Belki de kodun ne yaptığını tam olarak anlamadım. Kodun magic_exp1_en.mq5 'te yaptığını düşündüğüm şey şudur: zamanın başlangıcından bu yana tüm anlaşma geçmişi için :-) tüm DEAL_TYPE_SELL ve DEAL_TYPE_BUY hacimlerinin toplamının aynı olup olmadığını kontrol eder, bu durumda açık bir pozisyonumuz yoktur. SAT'ların hacmi AL'ların hacminden yüksekse, genel bir SAT pozisyonumuz vardır ve AL'ların hacmi SAT'ların hacminden yüksekse bir AL pozisyonumuz vardır.
Başka bir yol yok mu?