Evet, sonsuz bir döngü ama fikir bu.
Tüm semboller arasında dolaşmaya devam etmek için.
Aşağıdaki kod her 3 saniyede bir tetiklenir.
İşte kod parçacığı (demo amaçlı olarak hepsi bir arada yöntem):
void OnTimer () { // Find next symbol long symbolsTotal = SymbolsTotal ( false ); long count = GlobalVariableGet ( "testmem" ); if (count >= symbolsTotal) { count = 0 ; } string newSymbol = SymbolName (count, false ); SymbolSelect (newSymbol, true ); count++; GlobalVariableSet ( "testmem" , count); // Change chart symbol ChartSetSymbolPeriod ( 0 , newSymbol, Period ()); // Remove other symbols from Market Watch CArrayString *symbols = new CArrayString(); for ( int i = 0 ; i < SymbolsTotal ( true ); i++) { string symbol = SymbolName (i, true ); // Get name from local market watch symbols.Add(symbol); } int total = symbols.Total(); for ( int i = 0 ; i < total; i++) { string symbolToRemove = symbols.At(i); // Is the symbol not the current chart or about to // be added? if (newSymbol != symbolToRemove) { // Remove from Market Watch SymbolSelect (symbolToRemove, false ); } } delete symbols; }
"Semboller" ile ne demek istediğinizden emin değilsiniz, ancak yukarıdaki kod ExecuteTimer() 3 saniyeye ayarlanmış yeni bir Uzman Danışmanda.
İşte kod (bu bir EA'dadır):
int OnInit()
{
//--- zamanlayıcı oluştur
EventSetTimer(3);
//---
dönüş(INIT_SUCCEEDED);
}
Tam betiği ekledim, ekli dosyaya bakın "ForumQuestion1.mq5".
Hatayı yeniden oluşturma adımları:
- Metatrader 5 için ekli komut dosyasını Metaeditor'da açın (güvenlidir)
- Windows'ta Görev Yöneticisi'ni açın
- "Metatrader 5 İstemci Terminali"ni arayın ve bellek miktarını not edin
- Komut dosyasını çalıştırın ve Görev Yöneticisi'nde bellek sütununu izleyin
Komut dosyası semboller arasında dolaşırken bellek yavaş yavaş artar.
Merhaba,
Tam betiği ekledim, ekli dosyaya bakın "ForumQuestion1.mq5".
Hatayı yeniden oluşturma adımları:
- Metatrader 5 için ekli komut dosyasını Metaeditor'da açın (güvenlidir)
- Windows'ta Görev Yöneticisi'ni açın
- "Metatrader 5 İstemci Terminali"ni arayın ve bellek miktarını not edin
- Komut dosyasını çalıştırın ve Görev Yöneticisi'nde bellek sütununu izleyin
Komut dosyası semboller arasında dolaşırken bellek yavaş yavaş artar.
Kodunuzu denedim ve hafıza sorunu yaşamadım.
MT5 Yapı 1325.
Merhaba Alain,
Cevap için teşekkürler.
Aynı yapıdayım. Hafıza artışı yavaş. Birkaç dakika sürer. Temelde kademeli olarak artar.
Ekli "Memory boost.docx.png" dosyasına bakın, orada zamanla oluştuğunu gösteren bazı ekran görüntüleri var.
Aynı yapı "MT5 Build 1325" üzerindeyim
Makine bilgisi:
- Windows 8.1 Kurumsal
- 64 bit işletim sistemi
- 16Gb RAM
- i7 işlemci
teşekkürler
Merhaba Alain,
Cevap için teşekkürler.
Aynı yapıdayım. Hafıza artışı yavaş. Birkaç dakika sürer. Temelde kademeli olarak artar.
Ekli "Memory boost.docx.png" dosyasına bakın, orada zamanla oluştuğunu gösteren bazı ekran görüntüleri var.
Aynı yapı "MT5 Build 1325" üzerindeyim
Makine bilgisi:
- Windows 8.1 Kurumsal
- 64 bit işletim sistemi
- 16Gb RAM
- i7 işlemci
teşekkürler
Herhangi bir fark yaratırsa, Windows 10'dayım.
Komut dosyanız, önceki gönderimden birkaç dakika önce çalışıyor. Şu anda bellek kullanımı, başlattığımdan daha düşük (300 Mb'ye karşı 280 Mb).
EDIT: Az önce tekrar kontrol ettim ve şimdi 189 Mb !!! hala düşüyor :D
EDIT2: Metaquotes Demo-Server'da çalışıyor.
Geri dönüşünüz için teşekkür ederiz.
Sanırım Windows 10'a yükselteceğim ve bunun bir fark yaratıp yaratmadığına bakacağım.
Windows Server 12 R2'ye koydum ve bu da belleği yukarı itiyor.
Bunu bir süre izleyeyim ve bu konu hakkında geri bildirimde bulunayım.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Semboller arasında geçiş yapmak için ayarlanmış bir Uzman Danışmanım var ve çok fazla hafıza çiğniyor.
Bunun, sembollerin yavaş yavaş yükselen Piyasa İzleme'ye girip çıktığı zaman olduğunu fark ettim. Bu nedenle, Market Watch'taki mevcut öğeler arasında dolaşan grafik değil, yeni semboller yüklendiğinde ve kaldırıldığında daha fazladır.
Aşağıdakileri yapmak için ayarlanmıştır:
Mümkün olduğu kadar çok özel kodu kaldırdığımda ve mevcut semboller arasında bir çizelgede gezinmek için yukarıdaki adımları kullandığımda, makinemdeki bellek kullanımının artmaya devam ettiğini fark ettim.
CPU sabit kalıyor ve sabit bir hızda, ancak bellek hemen yukarı çıkıyor.
Sorular:
(yani, mevcut grafiği ChartSetSymbolPeriod() ile kullanmak yerine ChartOpen() ile yeni bir grafik açın)
(yani bu sadece böyle mi çalışıyor)
Teşekkürler, minnettarım