Genel sınıflar kütüphanesi - hatalar, açıklamalar, sorular, kullanım özellikleri ve öneriler - sayfa 17
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Harika bir teorik örnek! Uygulamada, kim-ne zaman-iş parçacığı binlerce işlemle çalıştı?
ps Bunun saçmalık olduğunu ve kimsenin bir şeye ihtiyacı olmadığını kanıtlamaya çalışmıyorum. Gerçek ticaretin değerini anlamaya çalışıyorum. Ben kesinlikle bir teorisyen değilim, saf bir uygulayıcıyım.
CHashMap'in mevcut uygulaması hakkında kısaca:
Öncelikle Entry<TKey,TValue>' nin ne olduğunu anlamanız gerekir.
Aslında, bu, aşağıdakileri içeren CLinkedList'teki gibi bir Düğümdür:
m_entries[] - sonra eklenen anahtar ve değerin, hash_code'un yerleştirildiği bir "hücre" dizisi. Dizinin boyutu Kapasiteye karşılık gelir.
m_count - m_entries içindeki ilk kullanılmayan hücrenin dizinini gösterir. Başlangıç değeri 0'dır, Kapasite'ye kadar büyür, ardından tüm diziler Kapasite ve tüm dizilerin boyutunda bir artışla yeniden oluşturulur.
m_buckets[] - m_entries[] üzerindeki dizin dizisi. Varsayılan değer -1'dir. Dizinin boyutu Kapasiteye karşılık gelir.
Çarpışma yok, CHashMap kapsayıcısına benzersiz bir değer ekliyor:
Çarpışma yok, CHashMap kapsayıcısında anahtara göre değer alıyor:
Çarpışma çözünürlüğü:
Çarpışma, CHashMap kapsayıcısında anahtara göre değer alma:
Bir CHashMap kapsayıcısından bir değeri kaldırma:
Hash tablosunu yeniden oluşturma (Kapasite artırma süreci):
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Genel sınıf kitaplığı - hatalar, açıklama, sorular, kullanım ve öneriler
Sergey Dzyublik , 2017.12.09 01:12
CHashMap uygulamasıyla tanıştım
Dürüst olmak gerekirse, beğendim.
Olası iyileştirme için birkaç öneri var:
1) Benim düşünceme göre, uygulama tamamen doğru olmayan bir kapasite seçimi içeriyor - hem ilk boyut 3 hem de hash tablosu yeniden oluşturulduğunda sonrakiler.
Evet, doğru, düzgün dağılım için bir asal sayı seçmeniz gerekiyor.
Ancak, CPrimeGenerator uygulaması beklentileri karşılamıyor ve eksik asal sayılar içeriyor.
Böyle bir "jeneratörün" amacı açıktır - otomatik asal sayılar oluşturma ile 1.2 mertebesinde bir büyüme faktörü sağlamak.
Ancak, bu çok küçük bir faktör değil mi? Vektörler için C++'da katsayı genellikle kitaplığa bağlı olarak 1.5-2.0'dır (çünkü işlemin ortalama karmaşıklığını büyük ölçüde etkiler).
Çıktı sabit bir katsayı olabilir, ardından bir asal sayılar listesinde ikili arama yoluyla sayı bir asal sayıya yuvarlanabilir .
Ve başlangıçtaki kapasite boyutu 3 çok küçük, geçen yüzyılda yaşamıyoruz.
2) Şu anda, karma tablosunun yeniden oluşturulması (Yeniden boyutlandırma) yalnızca %100 doldurma kapasitesi ile gerçekleştirilmektedir (tüm m_entries[] doldurularak)
Bu bağlamda, çok düzgün dağılıma sahip olmayan anahtarlar için önemli sayıda çarpışma mümkündür.
Bir seçenek olarak, karma tablo yeniden oluşturma işlemini gerçekleştirmek için gereken sınıra göre %100 azaltacak bir doldurma faktörü eklemeyi düşünün.
Uygulamada, kim-ne zaman-iş parçacığı binlerce işlemle çalıştı?
Evet, birçok insan tek geçişte tarihe milyonlarca gönderme yapıyor.
Kalelerde, her ilk.
Temiz.
Algoritma tarafından hft siparişleri göndermek ve daha sonra bunları analiz için almak iki farklı şeydir. Bu karmalar, daha sonra tamamen farklı bir şey analiz edildiğinden, analiz için de gönderme için gerekli değildir.
Genelde suç yok. Teori de gereklidir.
Temiz.
Algoritma tarafından hft siparişleri göndermek ve daha sonra bunları analiz için almak iki farklı şeydir. Bu karmalar, daha sonra tamamen farklı bir şey analiz edildiğinden, analiz için de gönderme için gerekli değildir.
Genelde suç yok. Teori de gereklidir.
Bulaşık makinesi kullanmıyorum, süngerim var.
Genelde suç yok. Bulaşık makineleri gallimdir, neden sadece ihtiyaç duyulur.
Temiz.
Algoritma tarafından hft siparişleri göndermek ve daha sonra bunları analiz için almak iki farklı şeydir. Bu karmalar, daha sonra tamamen farklı bir şey analiz edildiğinden, analiz için de gönderme için gerekli değildir.
Genelde suç yok. Teori de gereklidir.
Ne şikayetleri? Koltuk değneklerini daha fazla yaz.
Kısaca CHashMap'in mevcut uygulaması hakkında
Teşekkürler, kaynakları ayrıştırırken kullanacağım.
Ne şikayetleri? Koltuk değneklerini daha fazla yaz.
Teşekkürler, kaynakları ayrıştırırken kullanacağım.
Yeni bir anahtar/değer çifti eklerken kapta bir anahtarın varlığının kontrolünü atladım, önce bu yapılır.
Ama önemli değil.
Lütfen bunu tüm Genel'de düzeltin.