MT5 ve iş başında hız - sayfa 17

 

HistorySelect'in , korkmadan sıralayabilmeniz için, Expert Advisor'ın yerel önbelleğine seçilen geçmişin fiziksel bir anlık görüntüsünü oluşturduğunu unutmayın. Bu olmadan, hesap geçmişi eşzamansız olarak güncellendiğinden / senkronize edildiğinden çok hoş olmayan etkiler elde edebilirsiniz. Bu, kullanıcının geçmişin derinliğini arayüzden manuel olarak değiştirebileceği gerçeğinden bahsetmiyor.

Bu nedenle, kopyalama için bu tür masraflar. Özellikle, bu geçmişin aynı anda birden çok iş parçacığından önbelleğe kopyalanmasıyla özel olarak ilgileniyorsanız.

Getirme işlemlerinde zaten birçok şeyi optimize ettik ve şimdi en uygun önbellek güncellemesini düşünüyoruz, gerçekte getirmelerin %99'u tamamen işe yaramaz olacak ve aslında atlanacak.

Diğer bir deyişle, örnek sınırlarını kasıtlı olarak rastgele seçmezseniz, önbellek %100'e yakın isabetleri gösterecektir.

Büyük ihtimalle önümüzdeki hafta etkili bir çözüm bulunacaktır.

 
Renat Fatkhullin :

Lütfen, HistorySelect'in seçilen geçmişin fiziksel bir anlık görüntüsünü Expert Advisor'ın yerel önbelleğine aldığını unutmayın, böylece bunları korkmadan sıralayabilirsiniz. Bu olmadan, hesap geçmişi eşzamansız olarak güncellendiğinden / senkronize edildiğinden çok hoş olmayan etkiler elde edebilirsiniz. Bu, kullanıcının geçmişin derinliğini arayüzden manuel olarak değiştirebileceği gerçeğinden bahsetmiyor.

Bir sipariş tablosu ve bir anlaşma tablosu var. HistorySelect'i çağırırken dört dizini bilmek yeterli olduğunda neden fiziksel yakalamalar yapılır?

Bu nedenle, kopyalama için bu tür masraflar. Özellikle, bu geçmişin aynı anda birden çok iş parçacığından önbelleğe kopyalanmasıyla özel olarak ilgileniyorsanız.

Getirme işlemlerinde zaten birçok şeyi optimize ettik ve şimdi en uygun önbellek güncellemesini düşünüyoruz, gerçekte getirmelerin %99'u tamamen işe yaramaz olacak ve aslında atlanacak.

Diğer bir deyişle, örnek sınırlarını kasıtlı olarak rastgele seçmezseniz, önbellek %100'e yakın isabetleri gösterecektir.

Büyük ihtimalle önümüzdeki hafta etkili bir çözüm bulunacaktır.

HistoryDealSelect ve HistoryOrderSelect artık ilgili seçimlerini yok ediyor. MT4'te olduğu gibi neden her iki tabloya da dizinlere göre erişim yok? Yeni işlevsellik tanıtın.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2020.08.20 11:28

Yeni standart özellikler.
 int OrderExist( const string symbol, ENUM_ORDER_TYPE type, ulong magic, ulong &tickets[] );

int PositionExist( const string symbol, ENUM_POSITION_TYPE type, ulong magic, ulong &tickets[] );

İndeksler soruyor. Hesaptaki işlem sayısını tek bir yerden bulmanın neden gerekli olduğu hiç açık değil.

 

Ve bu tablolar her an değişebilir. Bunların yanı sıra bireysel girişler.

Asenkron işlemler, senkronizasyon süreçleri ve kullanıcılar tarafından ayarlanan manuel derinlik modları nedeniyle hiç kimse değişmezliklerini garanti edemez.

Yukarıda yazdığım gibi Select fonksiyonlarının maliyetini sıfıra indirecek akıllı önbellekleme yöntemleri uygulayacağız. Tabii ki, numune sınırlarını kasten rastgele seçmediğiniz sürece. Son tarih değiştirilebilir ve her zaman gelecekte/son seferde ise önbelleği geçersiz kılmaz. En son işlemler önbelleğe az miktarda eklenecektir.


MT4'te aynı şekilde çalışır, yalnızca önbellek oluşturma gizlidir. Her OnTick/OnStart MT4'te terminal, her uzman için otomatik ve ekonomik olarak pazar ortamının bir anlık görüntüsünü oluşturur.

Bu nedenle, MQL4 kodundan veri hazırlamadaki gerçek gecikmeleri tahmin edemezsiniz. Neyse ki, MT4'te çok az veri var ve her şey basit.


MT5'te gecikmeleri azaltmak ve gereksiz işlerden kaçınmak için otomatik olarak bir pazar ortamı oluşturma maliyetini ortadan kaldırdık. Bunun yerine, tam olarak ihtiyaç duydukları şeyi talep edebilen robot geliştiricilere toplam maliyet kontrolü verdik.

Lütfen MT5'teki pazar ortamının hacminin MT4'e kıyasla çok büyük olduğunu unutmayın - kesinlikle kopyalanamaz.

Testlerinizde bu pahalı örneklerden birini kullandınız.

Düzelteceğiz - bu bizim çıkarımıza.

 
Renat Fatkhullin :

Ve bu tablolar her an değişebilir. Bunların yanı sıra bireysel girişler.

Asenkron işlemler, senkronizasyon süreçleri ve kullanıcılar tarafından ayarlanan manuel derinlik modları nedeniyle hiç kimse değişmezliklerini garanti edemez.

Ticaret tarihindeki son anlaşmadan önce başka bir anlaşmanın görünebileceğini mi söylemek istiyorsunuz? Anlaşma değiştiyse, durum farklıdır. Ancak zaten var olan bir listenin içine girmek için - bunu fark etmedim.

 

OrderExist ve PositionExist, sembol, işlem türü ve büyüye göre kayıt aramada tüm emirlerin veya pozisyonların döngüsünde aptalca yinelemelerden kaçınmanıza izin veren özel optimize edilmiş işlevlerdir.

Sonuç olarak, biletleri olan bir dizi elde edersiniz.


Programlar bu özellikleri kullanarak çok para kazandırabilir. Özellikle, numaralandırma döngülerinde açık pozisyonlara ve emirlere toplu, sürekli ve tekrar tekrar eriştiklerinde.

Gelecekte, devasa ticaret verilerine erişmek için daha verimli işlevler uygulayacağız.

Dil ayrıca daha güçlü işlevsellik ile önemli ölçüde artacak ve basitleşecektir.

 
fxsaber :

Ticaret tarihindeki son anlaşmadan önce başka bir anlaşmanın görünebileceğini mi söylemek istiyorsunuz? Anlaşma değiştiyse, durum farklıdır. Ancak zaten var olan bir listenin içine girmek için - bunu fark etmedim.

Teorik olarak, evet.

Senkronizasyon işlemlerini unutmayınız. Platformdaki çok sayıda işlem eşzamansızdır.

Örneğin, bir borsa veya likidite sağlayıcısı olan bir entegrasyon ağ geçidi, saniyeler hatta dakikalarca gecikmeli işlemler hakkında raporlar gönderebilir. Çoğu zaman, apis, doğrulama için geçmişe erişim sağlamaz, ancak yavaş ve gerçek zamanlı olmayan rapor oluşturucular sağlar.

Piyasanın açılışında veya beklenmeyen bir ağ geçidinin yeniden bağlanması nedeniyle, raporlar gecikmeli olarak alınabilir. Sunucudaki geçmişe kopyalanırlar ve anında eşzamansız olarak terminallere gönderilirler. Tarihe göre sıralama nedeniyle, doğru yerlere eklenirler ve şu anda yeni fırsatlar açabilirsiniz.

Çoğu entegrasyon API'si o kadar cahil ve işlevsel değildir ki, garantili ağ geçitleri oluşturmayı neredeyse tamamen imkansız hale getirirler. Bunun geliştiricileri tarafından kasıtlı sabotajın bir ürünü olduğuna dair bir görüş olmasına rağmen.

 
Renat Fatkhullin :

OrderExist ve PositionExist, sembol, işlem türü ve büyüye göre kayıt aramada tüm emirlerin veya pozisyonların döngüsünde aptalca yinelemelerden kaçınmanıza izin veren özel optimize edilmiş işlevlerdir.

Sonuç olarak, biletleri olan bir dizi elde edersiniz.


Programlar bu özellikleri kullanarak çok para kazandırabilir. Özellikle, numaralandırma döngülerinde açık pozisyonlara ve emirlere toplu, sürekli ve tekrar tekrar eriştiklerinde.

Gelecekte, devasa ticaret verilerine erişmek için daha verimli işlevler uygulayacağız.

Dil ayrıca daha güçlü işlevsellik ile önemli ölçüde artacak ve basitleşecektir.

Renat, Copy.. işlevlerini kullanırken TERMINAL_MAXBARS dışından alıntılara erişim için büyük bir istek. En azından sadece bir dakikalık zaman dilimi. Bunun için ayrı bir fonksiyon yapabilirsiniz.
Sadece bu verilere erişmek için, TERMINAL_MAXBARS'ı sürekli olarak sınırsız (ve hatta terminal aşırı yükü ile) ayarlamanız gerekir, bu çok elverişsizdir, çünkü. tüm karakterlerde sınırsıza gerek yok.
Sonuçta, anladığım kadarıyla, dönemin birkaç MN1 çubuğunun hepsini kopyalarsanız, tüm M1 çubukları hala indirilir, ancak bunlara erişim yoktur.
Elbette tüm keneleri indirebilirsiniz çünkü. bu kısıtlamaya tabi değiller, ancak daha fazla zaman alıyor ve keneler ne yazık ki her zaman tüm dakika geçmişiyle çakışmıyor.

 
Nikolai Semko :

Renat, Copy.. işlevlerini kullanırken TERMINAL_MAXBARS dışından alıntılara erişim için büyük bir istek. En azından sadece bir dakikalık zaman dilimi. Bunun için ayrı bir fonksiyon yapabilirsiniz.
Sadece bu verilere erişmek için, TERMINAL_MAXBARS'ı sürekli olarak sınırsız (ve hatta terminal aşırı yükü ile) ayarlamanız gerekir, bu çok elverişsizdir, çünkü. tüm karakterlerde sınırsıza gerek yok.
Sonuçta, anladığım kadarıyla, dönemin birkaç MN1 çubuğunun hepsini kopyalarsanız, tüm M1 çubukları hala indirilir, ancak bunlara erişim yoktur.
Elbette tüm keneleri indirebilirsiniz çünkü. bu kısıtlamaya tabi değiller, ancak daha fazla zaman alıyor ve keneler ne yazık ki her zaman tüm dakika geçmişiyle çakışmıyor.

Hayır, bu sınırların ötesindeki geçmiş yükseltilmez ve senkronizasyon için kontrol edilmez. Ayrıca, onları depolayacak hiçbir yer yok (ek görünmez önbellekler oluşturmayacağız), diski savurgan modlarda tırmanmayacağız ve koltuk değneği oluşturmayacağız.

Genel olarak, bu zararlı bir fikirdir, çünkü geliştiriciler derhal kesinlikle verimsiz algoritmalar yazmaya başlayacaklar, tüccarlara "5000 veya daha iyi 1000 bar koymalarını" tavsiye edecek ve bizi frenler ve verimsizliklerle suçlayacaklar.

Çizelgeler için kaynak miktarını kontrol etmeyi özellikle mümkün kıldık. Şimdi 64 bit ve bellek ucuz - kurallara ve mimariye uygun ayarları kullanın.

Bu davranışı değiştirmeyeceğiz.

 
Renat Fatkhullin :

Hayır, bu sınırların ötesindeki geçmiş yükseltilmez ve senkronizasyon için kontrol edilmez. Ayrıca, onları depolayacak hiçbir yer yok (ek görünmez önbellekler oluşturmayacağız) ve diski boşa harcama modlarında tırmanmayacağız.

Genel olarak, bu zararlı bir fikirdir, çünkü geliştiriciler derhal kesinlikle verimsiz algoritmalar yazmaya başlayacaklar, tüccarlara "5000 veya daha iyi 1000 çubuk ayarlama" konusunda tavsiyede bulunacaklar ve bizi frenler ve verimsizliklerle suçlayacaklar.

Çizelgeler için kaynak miktarını kontrol etmeyi özellikle mümkün kıldık. Şimdi 64 bit ve bellek ucuz - kurallara ve mimariye uygun ayarları kullanın.

Bu davranışı değiştirmeyeceğiz.

TAMAM. Anladım. Teşekkür ederim. atlıyorum.
Tabii ki, israf hakkında tartışmak istiyorum. Sınırsız bırakmak zorunda kalacağım ve sonuç olarak, tüm açık olanlar (örneğin, şu anda 14 grafiğim var) tüm sınırsız geçmişi depolayacak, ancak sadece 5000 benim için yeterli. ekonomik olmayan.
Ayrıca bu verilerin saklanmasına da ihtiyacım yok. Ben depoyla ilgileneceğim. Tüm dakika çubuklarının indirilmesini başlattım, onları bir diziye aldım ve artık buna ihtiyacım yok ve boyutları TERMINAL_MAXBARS'ı aşarsa tüm önbellekler silinebilir. Bu nedenle, bunun için önbellek depolamayan ayrı bir işlev gerekebilir.

Her ne kadar, elbette, eğlenceli kalemlerin sistemi bu tür periyodik indirmelerle asabileceğine katılıyorum.

 

Sadece 5000 ve unlim olmak üzere iki durumunuz mu var?

Kendi mutluluğunuzun mimarı sizsiniz.

Neden: