Hatalar, hatalar, sorular - sayfa 2574
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
Trite, bu işlevlerin sonuçlarını ontick'te yazdırırsanız, bu, 1970.01.01 zamanı için 0 fiyatı içindir.
Belki bilgisayarınızda hamamböceği vardır? Bu kod 1220'de var
yazdırır
Trite, bu işlevlerin sonuçlarını ontick'te yazdırırsanız, bu, 1970.01.01 zamanı için 0 fiyatı içindir.
Hata kodu nedir?
Test parametreleri nelerdir?
Haftalık ve aylık verileri yüklediniz mi? Kaç tane var?
Hata kodu nedir?
Test parametreleri nelerdir?
Haftalık ve aylık verileri yüklediniz mi? Kaç tane var?
Kontrol ettim ve şimdi her şey çalışıyor.
Hikayeyi yükledim.
Teşekkür ederim.
Bellek izleme.
Kodumda CopyRates yaklaşık bin kez yürütülür.
Tırnak dizisi daha sonra bir şekilde işlenir ve bunun sonunda şunu ararım:
ArrayRemove (ArrayQuotes,0,ArraySize);
ArrayFree(ArrayQuotes);
ArrayResize(ArrayQuotes,0);
ArrayFree(ArrayQuotes);
ZeroMemory(Alıntı Dizisi);
(sadece farklı denedim)
Sonuç - bellek hala geometrik olarak büyüyor ve işlemciler üzerindeki yük ile birlikte tıkanıyor - i7'deki işlemci tüm mantıksal çekirdekler için toplamda% 80 oranında tıkanıyor, bellek bir Gigabayttan daha fazla.
Şimdiye kadar, üçüncü taraf bir programın yardımıyla kaynak tüketimini sınırlamak mümkün oldu - işlemci% 15'ten fazla değil ve bellek bir gigabayttan fazla değil.
Soru - bu bir hata mı yoksa platformun bir özelliği mi?
Bu arada, meta editörün garip davranışı düzeltilmelidir:
fn_call(); /////////////////////
eğik çizgilere çift tıklamak, önceki karaktere sahip eğik çizgileri seçer (sayı / harf yoksa).
Neden uygunsuz? Kodda geçici bir düzenleme yaptık, bu şekilde bir yer tahsis ettik, sonra hızlı bir şekilde bazı eğik çizgileri seçip kaldırmanız gerekiyor.
Yine de, dll'den wchar_t * satırlarını işaretçi olarak geçirme konusuna geri dönelim.
Renat'ın dll'deki dizelerle çalışma hakkındaki makalesinden açıkça anlaşılmaktadır ki, mql'de dize türü, harici bir dll'den wchar_t * dizesine bir işaretçi alır.
Yani dll'ye wchar_t * gönderiyoruz ve onu mql'de string & olarak kabul ediyoruz.
Ama bir nedenden dolayı, C-fonksiyonu
düzgün çalışmıyor, yani wchar_t * hedef dizesine işaretçi, mql kabul eder, ancak zaman zaman kabul etmez.
Bazen terminal çöküyor, program tamamlandı.
fonksiyon ile
terminal kilitlenmiyor, ancak aynı satırlar aralıklı olarak geliyor.
Lütfen bir sonraki derlemede düzeltin.
not. wchar_t * işaretçisinin başka bir iş parçacığından geçirildiğini açıklamayı unuttum.
onlar. wcscpy_s veya wcscpy işlevi ayrı bir iş parçacığında çağrılır.
Yine de, dll'den dizeleri işaretçi olarak wichar_t * geçirme sorununa geri dönelim.
Renat'ın dll'deki dizelerle çalışma hakkındaki makalesinden açıkça anlaşılmaktadır ki, mql'de dize türü, harici bir dll'den wichar_t * dizesine bir işaretçi alır.
Yani wichar_t *'yi dll'ye gönderiyoruz ve onu string & mql olarak kabul ediyoruz.
Ama bir nedenden dolayı, C-fonksiyonu
düzgün çalışmıyor, yani wichar_t * hedef dizesinin işaretçisi, mql kabul eder, ancak bazen kabul etmez.
Bazen terminal çöküyor, program tamamlandı.
fonksiyon ile
terminal çökmez, ancak hatlar da aralıklı olarak gelir.
Lütfen bir sonraki derlemede düzeltin.
not. wichar_t * işaretçisinin başka bir iş parçacığından geçirildiğini açıklamayı unuttum.
onlar. wcscpy_s veya wcscpy işlevi ayrı bir iş parçacığında çağrılır.
Ve dize hedefi için kim bellek ayıracak?
Bellek, mql kodunda şu şekilde tahsis edilir:
mql'deki dize, dll'deki wchar_t* olduğundan, dışarı çıkar ve ayrılan belleğe bir işaretçi olarak iletilir
Func( "Task" , out);