MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 821

 

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.


ruslanzip :
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?
 
Roza75 :
Hesaptan para gerçek hesabımda para var ama burada yazıyor sadece maaş çekebilir miyim?
Gerçek hesabın nerede?
 
Artyom Trishkin :
Gerçek hesabın nerede?
Metatrader 4 uygulaması
 
Igor Makanu :

çü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.


Igor Makanu :

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.

 
The_Sheikh :

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ı!

 
Artyom Trishkin :

Telefonumda Metatrader 4 uygulaması var
 
Alexey Viktorov :

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.

 
Tüm forum kullanıcılarına iyi günler! Bir sorunla karşılaştım, ikinci gün kafamı kırıyorum, fikri nasıl uygulayacağımı bulamıyorum! Yeni koordinatlara göre yeniden çizmemek için belirli bir mum üzerinde bir dikdörtgen, daire, oval (hangi şekil olursa olsun) nasıl çizilir. Ve böylece bazı koşullar tetiklendiğinde, bir şekil çizilir mi? Her figür kendi mumunda. Daha yeni mql4 çalışmaya başladım ve grafiklere hiç aşina değilim. Bu yüzden dün 10. çubuğa bir kare çizmeye karar verdim (örnek olarak), biri görüntüleniyor ve hepsi bu ve artık çizilmiyor. Dün koda işkence ettim ve işkence ettim ve sonunda ortaya çıkmaya başladı, ancak sadece kare eski yerinde sürekli siliniyor ve yenisine çiziliyor, sonra karenin sadece bir kez görüntülenmeye başladığını yaşadım. Bana bunu nasıl uygulayacağını bilen söyle! Veya forumda ilgili bir şubenin nerede olduğunu söyleyin. Ve sonra zaten bir sürü bilgi okudum, sadece daha fazla kafam karıştı! Cevaplarınız için şimdiden hepinize teşekkür ederim
Neden: