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
buna kaydı kapatmak denmez, dosyayı kapatmak ve silmek denir.
Bu yüzden
artık var olmayan bir şeyi açmaya çalışıyorsunuz.Kütüphane koduna baktığımda, dosyanın yalnızca CMemMapFile sınıfının Close() işlevi doğrudan çağrıldığında değil, aynı zamanda bu sınıfın nesnesinin işaretçisi silindiğinde de silindiğini gördüm, çünkü bu işlev sınıf yıkıcısında çağrılıyor. Biraz kafam karıştı. Bir dosyayı yazma ve okuma farklı çağrı bağlamlarında (kapsamlarında) kullanılıyorsa, sınıf nesneleri oluşturmanın dinamik yönteminin kullanılamayacağı ortaya çıktı. Örneğin, terminalin bir çizelgesi bir dosyaya veri yazıyor, ikincisi verileri okuyor ve bu dosyayı siliyor. Dosyanın zorla silinmemesi için nesne değişkeninin her zaman global seviyede tutulması gerektiği ortaya çıkmaktadır. Okunan verinin boyutunu belirtmeden yapmanın mümkün olup olmadığı da açık değildir. Yani, yazarken verinin boyutunu biliyoruz, ancak başka bir grafikte okurken, örneğin dize değerleri durumunda olduğu gibi, verinin boyutunu önceden bilemeyebiliriz. Muhtemelen ya ben bir şeyi yanlış anladım ya da kütüphanede değiştirilmesi gereken başka bir şey var.
Benim hatam. İşaretçi kullanmadan ve dolayısıyla delete kullanmadan tekrar kontrol ettim. Bu durumda, kapsamdan çıkarken (bir fonksiyondan), sınıf nesnesinin yerel değişkeni, destructor'a açık bir çağrı yapılmadan yok edilir.
Alıcı tarafında alınan verinin boyutu ile ilgili hala bir soru var.
Kütüphane için yazara teşekkürler!
Herhangi bir veriyi aktarmak için fonksiyonlar yaptım. Aşağıdaki kod, kene örneği üzerindeki çalışmalarını göstermektedir
Sonuç
Süper! Sizin kodunuza benzeterek kütüphanenin kullanımını kendim için basitleştirdim.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum
Metatrader 4 için NamedPipes
fxsaber, 2017.11.30 14:18
Exchange_Data.mqh
PriceGiver.mq4
PriceTaker.mq4
PriceGiver.ex4 ve PriceTaker.ex4 dosyalarını çalıştırın.
Sonuç
Kütüphanenin CMemMapFile::Open yönteminde küçük bir hata vardır. Dosya tanıtıcısını (HANDLE64 tipi) döndürmesi gerekir, ancak bunun yerine 0 veya bir hata kodu döndürür.
Buna ek olarak, CMemMapApi::Write ve CMemMapApi::Read okuma ve yazma yöntemleri bir nedenden dolayı verileri iki kez kopyalar (ve baytlar arasında döngü yapılır!) ve ek olarak, yalnızca belirli bir parça gerekli olmasına rağmen dosyanın tamamının üzerine yazılır/okunur.
Genel olarak, normal görünmelerini sağladım, gereksiz şeyler yorumlandı :
İlk fonksiyonun derlenebilmesi için, memcpyX ve memcpy fonksiyonlarında diziler için const ayarını yapmanız gerekir ki yazar bunu yapma zahmetine girmemiştir.dwMaximumSizeHigh içinde sıfır geçilmesi nedeniyle büyük boyutlar kopyalanırken hata oluştu
Bu şekilde düzeltildi:
Bu boyut - 6 mb, sorunsuz aktarılır:
Bu şekilde düzeltildi:
8 baytlık boyutun en yüksek 4 baytını uygun şekilde oraya aktarın.
Tamam, şimdi C# programında tüm raitlere sahibiz ve LINQ kullanarak ihtiyacımız olan her şeyi analiz edebiliriz.
Ancak, terminal ve uygulama arasındaki komut mekanizmasının nasıl düzenleneceği sorusu var.
Terminalden: new candle, new raites - dosyayı al
Uygulamadan: hesaplama tamamlandı, sonucu al (grafik üzerinde çiz, bir anlaşma aç).
Terminal ve kod arasındaki etkileşimin bu tür bir uygulamasında deneyimi olan var mı?
Tamam, şimdi bir C# programında tüm raitlere sahibiz ve her şeyi mükemmel bir şekilde analiz etmek için LINQ'yu kullanabiliriz.
Ancak, terminal ve uygulama arasındaki komut mekanizmasının nasıl düzenleneceği sorusu vardır.
Terminalden: yeni mum, yeni fiyatlar - dosyayı alın
Uygulamadan: hesaplama tamamlandı, sonucu alın (grafiğe çizin, bir anlaşma açın).
Terminal ve kod arasında bu tür bir etkileşim uygulaması konusunda deneyimi olan var mı?
Lütfen bu durumda ne yapacağınızı önerin.
1. Bellekte 100 baytlık yeni bir dosya açtım.
2. İçine 100 bayt yazdım.
3. Başka bir Uzman Danışman'da 100 bayt okudum. Her şey yolunda.
4. Şimdi aynı dosyaya 50 veya 200 bayt nasıl yazılır?