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
Vay havalı! Teşekkür ederim. Ve düşündüm - her zaman önemlidir. Evet, mantıklı, derleme aşamasında zaten hesaplayabilirsiniz.
Sonra şöyle:
Doğru, 53 yerine DBL_MANT_DIG yazmak daha doğru olur.
Tüm çift değerler kesirli ise minimum kazanma durumu.
1. Uygulamanız eksik, ancak olası değerlerin aralığı önceden biliniyorsa kullanılabilir.
İşte tam uygulama kodu
2. Kendi kendine yazılan işlevler, optimizasyonlar devre dışı bırakıldığında hata ayıklama için derlendiğinde yerleşik işlevlerden çok daha yavaştır.
1. Uygulamanız eksik, ancak olası değerlerin aralığı önceden biliniyorsa kullanılabilir.
İşte tam uygulama kodu
2. Kendi kendine yazılan işlevler, optimizasyonlar devre dışı bırakıldığında hata ayıklama için derlendiğinde yerleşik işlevlerden çok daha yavaştır.
Harika kod için çok teşekkür ederim İlyas.
Elbette sendika burada büyük bir yardımcıdır.
Ders çalışıyorum...
Tehdit Ve bu seçenek kesinlikle aynı değil mi?Nicholas, merhaba. Grafiklerle uğraştığınızı görüyorum ama aslında görevin ne olduğunu tam olarak anlamıyorum. Ne üzerine çalışıyorsun?
Oluşturma işlevlerini hızlandırmak?
Genel olarak, dal konusunda konuşurken, tuval üzerine çizime tamamen alternatif bir yaklaşım uygulamayı başardım. CCanvas sınıfını kullanmamak.
Yani, ayrı bir fonksiyon setini değiştirmek değil, tek bir bloktan oluşan entegre bir çizim mekanizması oluşturmak.
(Tabi tüm bunları kodda pek gösteremiyorum çünkü çok fazla kod var ve standart dışı yazılıyor ama genel hatlarıyla anlatmak istiyorum).
Böyle:
1. Blok (işlev)
sadece 2 parametre alır - Canvas ve Element.
2. Her MT nesnesinin kendi kaynağı vardır. ResourceReadImage() kullanılarak hemen bir "piksel dizisine" yüklenir; Kaynak henüz mevcut değilse, daha sonra çekirdek boyunca döngü aralığını belirleyecek bir bayrak ayarlanır.
3. Çekirdek, - tüm öğelerin bir dizi özelliği. Ayrıca nesnelerin boyutu ve çeşitli durumlar için renkler hakkında veriler içerir. Ve diğer birçok veri. Her nesne için toplam 235 özellik vardır. Aynı zamanda, her öğe (tipe bağlı olarak) bir ila 11 nesne içerebilir (kısıtlama yoktur).
4. Çizim bloğunda, her nesne çizimin bir "Ayrıntısı" anlamına gelir. Bu nedenle, çekirdekteki nesneler arasındaki döngü, her Parçanın görüntüsünün oluşturulduğu bir çizim döngüsüdür. Kanvas henüz oluşturulmadıysa, yalnızca bu Kanvas'ın tüm Ayrıntıları üzerinden tam bir döngü yapılır. Kanvas'a Ait olmak, her Ayrıntı için çekirdeğe kaydedilir. Yani, tüm Kanvaslar (ve Ayrıntılar) kendi seri numaralarına sahiptir. Bu numaralar sayesinde sadece istenilen Kanvasın içeriğini çizmek mümkündür.
4. Kanvas zaten varsa ve görüntüsü bir piksel dizisine yüklenmişse ve yalnızca tek bir öğeyi yeniden çizmemiz gerekiyorsa (örneğin, bir renk değişikliği olayında), o zaman çekirdekten geçen döngü aralığı sınırlara daralır. sayısı çizim işleviyle elde edilen bir elemanın.
Çizimin kendisi basittir. Bu, tek boyutlu bir dizinin hücreleri arasında soldan sağa bir döngüdür. Döngü ayarlanmadan önce:
1. İlk hücre (A noktası).
2. Uç hücre (B Noktası).
3. Adım atmak.
1500 satır koddan oluşan bir bloğun işleyişini kısaca anlatmak zordur. Bu, 20 aydır büyüyen ve parlayan bir özellik. Neredeyse ezbere biliyorum, bu da gelişimini sürdürmeyi kolaylaştırıyor.
Bir çekirdek ve odak kullanımı (önemli değişkenleri küresel kapsama dahil ederek) yoluyla, blok muazzam bir güç kazanır. Sınırları bu güne kadar bana görünmüyor.
Bu, tuval üzerine çizim yapmak için standart yaklaşıma böyle bir alternatiftir.
not Detaylarla ilgileniyorsanız, açıklayabilirim.
Bloğun başlangıcı şöyle görünür:
1. Uygulamanız eksik, ancak olası değerlerin aralığı önceden biliniyorsa kullanılabilir.
İşte tam uygulama kodu
Kod için tekrar çok teşekkürler. Beynimi bu çift tip bit maskeleriyle harap ettim. Daha önce düşündüğüm kadar basit olmadığı ortaya çıktı.
Sürümümü sizinkine uyacak şekilde biraz ayarladım. Tek bir fark vardı: sürümünüz -1>x>0 Ceil(-0.1)= - 0.0 ve benimki 0.0 değerleriyle döndü. Bunun ne zaman yararlı olabileceği gerçek açık değildir.
Ve şunlar oldu:
Aynı, yalnızca okunabilir ve yorumlarla:
Sürümünüzle çalışmanın %100 özdeşliğini doğrulayan bir komut dosyası (ekli) yazdım.
Ancak aynı zamanda, bu seçenek daha hızlı, daha kompakt ve bana göre daha okunaklı.
Ayrıca, 4 adet 8 baytlık değişken oluştururken, işlev gövdesinde tek bir değişken bile oluşturulmaz.
Belki de ben hatalıyım?
x girişinin her zaman bir kesirli kısmı olduğunda sonuçlar:
x girişinde kesirli kısım nadir olduğunda sonuçlar:
2. Kendi kendine yazılan işlevler, optimizasyonlar devre dışı bırakıldığında hata ayıklama için derlendiğinde yerleşik işlevlerden çok daha yavaştır.
Hata ayıklamanın neden hız gerektirdiği açık değildir.
Ancak gerçekten ihtiyacınız varsa, bir seçenek olarak inşaatı kullanabilirsiniz:
Ve hala bir yanlış anlama var:
Neden belgelerde ve aslında DBL_MANT_DIG = 53?
aynı Wikipedia'ya göre = 52.
Ve görünüşe göre, kodunuzdan da bunu takip ediyor 52 ?
Nicholas, merhaba. Grafiklerle uğraştığınızı görüyorum ama aslında görevin ne olduğunu tam olarak anlamıyorum. Ne üzerine çalışıyorsun?
İşleme işlevlerini hızlandırmak?
Hey Peter!
özelden cevap vereceğim
Ve hala bir yanlış anlama var:
Neden belgelerde ve aslında DBL_MANT_DIG = 53?
aynı Wikipedia'ya göre = 52.
Ve görünüşe göre, kodunuzdan da bunu takip ediyor 52 ?
Cevabı kendin bulmaya çalıştın mı?
İpucu: google arama çubuğuna "DBL_MANT_DIG 53 52" yazın