MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 821
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Lütfen soruma dikkat edin. Bazı hesaplamalar yapan ve bunları grafikteki mum sayısına eşit boyutta bir diziye (zaman serisi değil) koyan bir gösterge yazıyorum. Başlangıçta, terminal parametrelerimde grafikte 2000 şamdan varsa, o zaman yenisi göründüğünde, ilkinin ikincinin, üçüncünün ikincisinin vb. Değerini alacağını düşündüm, bu nedenle, ne zaman prev_calculated sıfıra eşitti, tüm diziyi, aksi takdirde yalnızca son çubuğu yeniden hesapladım. Ama sonra her yeni mumla oranların toplam değerinin arttığını ve 2000 sınırını aştığını öğrendim.
Bu nedenle, diziyi yeniden hesaplamanın bir anlamı yok mu?
Ama bu neden oluyor, çünkü terminalde tam olarak 2000 mum ayarlandı?
Terminal kapatıldığında çubuk sayısı tekrar 2000 oluyor ve yine yeni mumlar göründüğünde artmaya başlıyor.
Tünaydın . Lütfen bana söyle. Koşul kodu nasıl olacak: Hesap bakiyesi arttı veya azaldıysa, işlevi yürütün
// Fonksiyonların dışında bir değişken tanımla:
çift Bakiye=HesapBalance();
// Onay/hesaplama işlevine ekleyin:
if (Denge!=HesapDenge())
{
Bakiye=HesapDenge();
MyFunction(); // <-- İşleviniz
}
Hesaptan para gerçek hesabımda para var ama burada yazıyor sadece maaş çekebilir miyim?
Gerçek hesabın nerede?
çünkü terminal böyle çalışır
Yani bu normal bir davranış ve bir hata değil mi? Çünkü bazı temel özel göstergeler bu faktör dikkate alınmadan yazılır ve her prev_calculated==0'da tam bir yeniden hesaplama yapar.
bu çözüm yalnızca test cihazı içindir, terminali yeniden başlatırsanız ne olur? bu hesapta ikinci Expert Advisor'ı çalıştırırsanız ne olur?
emirlerin tarihi ile çalışmanız gerekiyor, sihrimizle açık emir yok - tarihteki son siparişin kazancına baktık
Aşırı yükleme? Veya yeniden başlat? İkincisi ise, danışmanın davranışı değişmeyecektir. İkinci Expert Advisor çalıştırırsanız, algoritma aynı şekilde hatasız olarak yürütülecektir.
Yazarın üzerinde çalışması gereken şey, onun tarafından belirlenen göreve bağlıdır. Ve soruyu sorduklarında, ben de cevapladım, soruda daha fazla ayrıntı yoktu.
Lütfen soruma dikkat edin. Bazı hesaplamalar yapan ve bunları grafikteki mum sayısına eşit boyutta bir diziye (zaman serisi değil) koyan bir gösterge yazıyorum. Başlangıçta, terminal parametrelerimde grafikte 2000 şamdan varsa, o zaman yenisi göründüğünde, ilkinin ikincinin, üçüncünün ikincisinin vb. Değerini alacağını düşündüm, bu nedenle, ne zaman prev_calculated sıfıra eşitti, tüm diziyi, aksi takdirde yalnızca son çubuğu yeniden hesapladım. Ama sonra her yeni mumla oranların toplam değerinin arttığını ve 2000 sınırını aştığını öğrendim.
Bu nedenle, diziyi yeniden hesaplamak mantıklı değil mi?
Ama bu neden oluyor, çünkü terminalde tam olarak 2000 mum ayarlandı?
Terminal kapatıldığında çubuk sayısı tekrar 2000 oluyor ve yine yeni mumlar göründüğünde artmaya başlıyor.
// Fonksiyonların dışında bir değişken tanımla:
çift Bakiye=HesapBalance();
// Onay/hesaplama işlevine ekleyin:
if (Denge!=HesapDenge())
{
Bakiye=HesapDenge();
MyFunction(); // <-- İşleviniz
}
Çok teşekkürler, işe yaradı!
Metatrader 4 uygulaması
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MQL4, yardım ve algoritmalar ve kodlar hakkında herhangi bir acemi sorusu
Artyom Trishkin , 2019.04.28 16:55
Gerçek hesabın nerede?Ve neden içeride nasıl çalıştığını anlamaya çalışalım? Eh, eğer kendi fonksiyonunuzu yazmak istiyorsanız, sıralamak ve ekstrem indekslerden birinin değerini almak muhtemelen daha uygun olacaktır. Ancak yerleşik işlevden daha hızlı çalışması olası değildir. Ayrıca, yerleşik işlev, belirtilen dizin sınırları içinde bir değer aramanıza olanak tanır. Basit sıralamanın bir yolculuk vermeyeceği anlamına gelir. Bu yüzden dizinin bir kısmını bir ara diziye kopyalayıp sıralamak ve ondan istenilen değeri almak gerekecek ve diziyi kopyalamak çok "ucuz" bir işlev değil.
Beynin gelişmesi için anlamanız gerekir. Dün uzunca bir süre oturdum ve evet gibi eskizler yaptım, değerlerin sayma ilkesine göre sıralama yapmadan da yapabilirsiniz ama yine de değerleri depolayacak değişkenlere ihtiyacınız var ve hatta dahası bir anda bir değer döndürüp değil. işi basitleştiren bir indeks. İşlevleri, elbette, hesaplamaları kaydetmek için aralıkta ve çeşitli değişikliklerde daha iyi yapılabilir. Yerleşik işlevler birçok ayrıntıdan yoksundur. Ancak yerleşik işlevler çok hızlı, neden C++ ile yazıldıkları açık değil, çünkü. Tüm detayları göz önünde bulundurarak fonksiyonlarımı çok ince yazıyorum: hız, kalite, kod tasarrufu, kontrol ve geçiş sayısını azaltacak değişiklikler getiriyorum, ancak bir nedenden dolayı yerleşik olanlar hala hızda atlıyor , ve kalitede değil, ama atlıyorlar, uzun zamandır bu soruyla forum topluluğuna dönüyorum.