Hatalar, hatalar, sorular - sayfa 673

 

Renat, sıfır noktası - konuya gösterdiğiniz ilgi ve yapıcı yanıt için çok teşekkür ederiz!

Daha ileri.

1. profesyonel x64

Renat :

Daha doğru bir seçenek, x64'e geçmektir.

...

Tabii ki, birileri piyasa tarama modunda yüzlerce göstergeyi boşaltmadan çağırırsa, yalnızca 64 bit sürüme + ek bellek yüklemeye doğrudan bir yolu vardır.

Şimdi x32'de büyük testler yapmak garip. 16 GB belleğe sahip herhangi bir iyi x64 bilgisayar (video kartlarında ve monitörlerde fanatizm olmadan) 15.000 ruble için satın alınabilir.

Herhangi bir şekilde x64'e geçmek doğru eylemdir. Ancak. Biri diğerini dışlamaz. 16gig'im bile (bunlara sahibim) gerçekten ihtiyacım olmayan verileri israf etmek istemiyorum. Paralel olarak çalışacak başka bir şeyim var - üzerinde hacimli görevleri de hesaplamak istediğim MSVS, Matlab, vb. Bunu anladığınıza ve para biriktirmenin yollarını aramaya hazır olduğunuza sevindim.

2. Hikayenin sabit başlangıcı hakkında:


Renat :

Biz kendimiz kaynak tüketimini azaltmak istiyoruz. Belki de çözüm, yalnızca bu Uzman Danışmanda oluşturulan göstergelere göre hareket edecek olan bir GöstergeMaxDepth(uint len) işlevi olabilir.

Ancak sorun şu ki, test sırasında birikim modundaki gösterge arabellekleri geçmişle birlikte büyüyecek ve tasarruflar işe yaramayacak.

Tamamen (neredeyse) katılıyorum. Sorumluluk Reddi: Çoğu durumda optimizasyon, en son geçmişin küçük bir parçası üzerinde gerçekleştirilir. Bu durumda, tasarruf oldukça önemli olabilir. Yine de, seçeneğin nispeten işe yaradığını düşünüyorum - özellikle uygulama için iyi gelişmeler veya tahminleriniz varsa. Örneğin, seçenek bana tam olarak görünmüyor - çok fazla işçilik maliyeti var, ancak sonuç radikal değil. Yarım çözüm.

3. Ve işte o bir ide! :

Renat :

Belirli bir derinliği korurken bir göstergenin geçmişini gerçek zamanlı olarak kesmek , grafik çubuklarının ve gösterge arabelleğinin senkronizasyonunu düşünen / alışık olan programcılar için güzel hatalar ve çatının doğrudan yıkılması ile doludur .

Hayır ! , dolu değil - grafiğin çubukları aynı şekilde davranıyorsa - eşzamanlı olarak . Başka bir deyişle - halka arabellekleri (boyut olarak farklı olsalar bile) her zaman (zorla) AsSeries bayrağını kullanıyorsa - kullanıcının büyük sorunlar yaşaması beklenmez.

// Bu durumda, kullanıcıya sağlanan tüm geçmiş arabellekleri - gösterge (yani, AsSeries=true ile halka) yapmak uygun olacaktır.

Bu varyantta:

(1) gösterge ve fiyat dizilerinin dahili bir temsili vardır (sizin tarafınızda): soldan sağa indeksleme (AsSeries==false), kullanıcı boyutları önemli değildir ve genellikle " giriş yok".

Ve (2) bir kullanıcı tarafı vardır - tüm tamponlar daireseldir (uygulamada kullanıcı sanal bir doğrusal dizi görür), sağdan sola indekslenir (AsSeries==true) ve boyut kullanıcı tarafından belirlenir.

Burada kullanıcının çatısının yıkımları nelerdir? Hiçbiri. Belirtilen aralığın ötesine geçerken - standart reaksiyon Dizisi aralık dışında.

Zorluklar (dürüst olmak gerekirse, dikkate değer) sadece sizsiniz. Ancak! Programın çok yönlülüğü göz önüne alındığında, yalnızca bir kez zorlamanız gerekecektir. Ve beta hata ayıklarken, tomurcuktaki tüm "güzel aksaklıkları" düzeltin. Bundan sonra - evrensel mutluluk ve çok ekonomik bir tasarım.

Artık bellek tasarrufu ilkesine karşı maksimum verimlilik ilkesine sahip olan gösterge önbelleğini revize edeceğiz. Şimdi olduğu gibi bir süre hafızada tutmak yerine, bırakılan göstergeleri boşaltmaya çalışalım. Bu, IndicatorRelease aracılığıyla doğrudan yükleme ile art arda yüzlerce göstergenin çağrılmasını mümkün kılacaktır.

İyi bir fikir. ben için. Ancak, halka şemasının girişini iptal etmez, ancak onu iyi bir şekilde tamamlar.
 
MetaDriver :

3. Ve işte o bir ide! :

Hayır ! , dolu değil - grafik çubukları aynı şekilde davranıyorsa - eşzamanlı olarak . Başka bir deyişle - eğer halka arabellekleri (boyut olarak farklı olsalar bile) her zaman (zorla) AsSeries bayrağını kullanıyorsa - kullanıcının büyük sorunlar yaşaması beklenmez.

// Bu durumda, kullanıcıya sağlanan tüm geçmiş arabellekleri - gösterge (yani, AsSeries=true ile halka) yapmak uygun olacaktır.

Bu varyantta:

(1) gösterge ve fiyat dizilerinin dahili bir temsili vardır (sizin tarafınızda): soldan sağa indeksleme (AsSeries==false), kullanıcı boyutları önemli değildir ve genellikle " giriş yok".

Ve (2) bir kullanıcı tarafı vardır - tüm tamponlar daireseldir (uygulamada kullanıcı sanal bir doğrusal dizi görür), sağdan sola indekslenir (AsSeries==true) ve boyut kullanıcı tarafından belirlenir.

Burada kullanıcının çatısının yıkımları nelerdir? Hiçbiri. Belirtilen aralığın ötesine geçerken - standart reaksiyon Dizisi aralık dışında.

Zorluklar (dürüst olmak gerekirse, dikkate değer) sadece sizsiniz. Ancak! Programın çok yönlülüğü göz önüne alındığında, yalnızca bir kez zorlamanız gerekecektir. Ve beta hata ayıklarken, tomurcuktaki tüm "güzel aksaklıkları" düzeltin. Bundan sonra - evrensel mutluluk ve çok ekonomik bir tasarım.

İyi bir fikir. için. Ancak, halka şemasının girişini iptal etmez, ancak onu iyi bir şekilde tamamlar.

Test koşullarını açıklayacağım:

  • çubuk geçmişi, M1'de 20000.01.01'den 2012.01.01'e kadar sipariş edildiği gibi gider
  • EA, 10.000 çubukluk kısa göstergelerle çalışır, göstergelerin geçmişi 10.000 - 15.000 çubuğun ötesine geçmeyecek şekilde kırpılır

Göstergenin otomatik kırpılmasının bir sonucu olarak:

  • kümülatifliği bozarız (bu, tolere edilebilir, ancak kaçınılmaz sonuçlara yol açacak bir sürü sonuç olmasına rağmen - "evet, hindiler bile MT5'te buggy!")
  • göstergelerin tarihindeki kaçınılmaz değişimde hızımızı kaybederiz (bellek miktarı daha da pahalı olsa da, memcopy pahalıdır)
  • ezberlenmiş sayaçlara bahis yapmayı başaran programcılar için gerçekten çatıyı havaya uçuruyoruz (bu, kişisel doğrulukla ele alınır)
 
Renat :

Test koşullarını açıklayacağım:

  • çubuk geçmişi, M1'de 20000.01.01'den 2012.01.01'e kadar sipariş edildiği gibi gider
  • EA, 10.000 çubukluk kısa göstergelerle çalışır, göstergelerin geçmişi 10.000 - 15.000 çubuğun ötesine geçmeyecek şekilde kırpılır

Göstergenin otomatik kırpılmasının bir sonucu olarak:

1.

  • kümülatifliği bozarız (bu, tolere edilebilir, ancak kaçınılmaz sonuçlara yol açacak bir sürü sonuç olmasına rağmen - "evet, hindiler bile MT5'te buggy!")

Evet, tolere edilebilir. Bunun kitlesel bir memnuniyetsizliğe yol açması pek olası değildir; aksine, tasarruflar çok cesaret verici olacaktır. Hiç kimse devasa bir MaxBar ayarlayarak hafızanın boşa harcanmasını yasaklamaz.

// Burada göstergeler atlama çubukları nedeniyle hatalı! Memnuniyetsizliğin ciddi bir şekilde haklı olduğu yer burasıdır!

// Yani sen buna bile katlanıyorsun... :) Eh, yapmalıyız... :(

2.

  • göstergelerin tarihindeki kaçınılmaz değişimde hızımızı kaybederiz (bellek miktarı daha da pahalı olsa da, memcopy pahalıdır)

Bu sadece hayır ve hayır! Halka şeması, tarih boyunca geçiş yaparken kopyalamada büyük tasarruf sağlar. Aslında, bir çubuk (N çubuk) kaydırırken, tam olarak bir değer (N değer) kopyalanmalıdır. Bir dizinin sanallaştırılması için yapılan harcamalar ( kullanıcı ) ihmal edilebilir düzeydedir. Aslında, stres testleri sırasında tespit edilmeleri bile zordur ( bölmenin geri kalanı işlemci tarafından bir döngüde hesaplanır + geçmişteki her vardiyada tamponun sanal başlangıcının ofseti - birkaç döngü daha). Böylece pratikte hız kaybetmiyoruz. Bu yavaşlamayı tespit etmek imkansız, çok küçük. Ve devasa bellek tasarrufu fonunda, bu kayıplar kazançla kıyaslanamaz.

3.

  • ezberlenmiş sayaçlara bahis yapmayı başaran programcılar için gerçekten çatıyı havaya uçuruyoruz (bu, kişisel doğrulukla ele alınır)
Neyle ilgili olduğunu bile anlamadım. Belki bu yerde sadece sağlıklıdır.
 

Ahh yüz...

Nedense, sınırsız çubuklarda boğulan göstergelerin etrafında çok fazla dans ve çığlık var, ancak dans eden grafik nesneler hakkında tek bir kelime yok. Örneğin, Unlimited'da (örneğin MN1'de) süper büyük Andrews Pitchfork oluşturmaya çalışın, ardından terminal ayarlarındaki çubuk sayısını sınırlayın, daha düşük zaman çerçevelerine gidin ve bağlantı noktalarına geri sarın. Bazıları, aşırı uçlardan görkemli bir zaman ayrımında olacak (bu, üç noktanın tümüne sahip olan dirgen, yalnızca gerçek M1 çubukları alanında, daha yüksek zaman dilimlerinden sahte olanların sınırlarının ötesine geçmeden! ). Ve hepsi neden? Görünüşe göre, M1'de bazı otomatik bağlantı noktalarının tam M1 -değerini hesaplamak için yeterli geçmiş veri olmadığı için. Her ne kadar tarihsel veriler nerede?! Yeterli olmuş olabilirler, ancak pencerede görüntülenen çubuklar değil, bu nedenle vardiyalar var. Yani, bazı noktalar "nerede yattıklarını gerçekten bilmiyorlar".

Keşke biri evde kontrol etse, aksi halde belki böyle bir pandemiye girerim ...

 

Garip bir şey fark ettim!

Yeni bir çubuğun oluşumu sırasında, önceki çubukların (örneğin, önceki 10 çubuk) Aç ve Kapat değerlerini sayarsanız ve ardından 5 saniye sonra tekrar alırsanız, bu değerlerden bazıları farklılık gösterir ve sonra onları yeni çubuk oluşturulurken alırsanız, her şey yolundadır, ancak burada ilk birkaç saniyede, bir nedenden dolayı bu değerler farklıdır.

Umarım net bir şekilde anlatmışımdır.

Yeni bir çubuğun başlangıcından itibaren Aç ve Kapat çubuklarının değerlerini okumadan önce bana söyleme, 5 saniyeden fazla bir gecikme ayarlamanız mı gerekiyor?

İşte bir çalışma örneği:


Üstünde bir gecikmeden sonra doğru çalıştı, altında hatalı yeni bir çubuğun ortaya çıkmasından hemen sonra ve sağda 6. satır için standart.

 
pusheax :
Belki de sorun senkronizasyon dışıdır, kullanılan tüm enstrümanlar için yeni çubuğun izlenmesi arzu edilir.
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Kuğu 2012.03.19 13:34

Belki de sorun senkronizasyon dışıdır, kullanılan tüm enstrümanlar için yeni çubuğun izlenmesi arzu edilir.

Evet, haklıydın, teşekkürler!

 
Anlamıyorum. Bir sorunum olsun ya da olmasın. Formda, görünen editör penceresinde "cevapla" tıkladığınızda, ilgili yazı alıntı olarak kopyalandı. Şimdi birkaç gün önce bu seçenek ortadan kalktı. Boş bir pencere açılır. Opera ve IE'de denendi.
 
Aynı şekilde opera.
 
220Volt :
Aynı şekilde opera.
FF ile iyiyim.