Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 37
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
CBitBuffer Sınıfı - MQL5'te Bit Düzeyinde Veri Serileştirme
CBitBuffer sınıfı, MQL5'te bit düzeyinde veri serileştirme için sağlam bir temel sağlar ve veri depolama ve alma üzerinde ince taneli kontrol sunar. Sınıf, değişken uzunluklu tamsayılar (ZigZag kodlamalı VLQ) ve alan optimizasyonu için mükemmel olan dizelerin ve yapıların serileştirilmesi dahil olmak üzere çeşitli veri türleri için destek içerir. Sınıf, performansı artırmak için dahili tamponlama ve üstel dizi büyümesi gibi optimizasyonlar kullanır ve kapsamlı bir hata işleme sistemi sağlar. Özellikle veri boyutunu en aza indirmenin çok önemli olduğu ağ iletişimi veya dosya depolama için kullanışlıdır (örneğin, kene verilerinin sıkıştırılması).
Temel Özellikler:
- Bit düzeyinde İşlemler: Verilerin bit bit veya 64 bite kadar belirli bit uzunluklarında yazılmasına ve okunmasına izin verir.
- Veri Türü Desteği: Bool, char, uchar, short, ushort, int, uint, long, ulong, datetime, float, double, string ve struct için yöntemler içerir.
- Değişken Uzunluklu Tamsayılar (VLQ): int, uint, long ve ulong değerleri için VLQ kodlamasını uygular, bu da sıklıkla küçük tamsayı değerleri için önemli ölçüde yer tasarrufu sağlayabilir.
- Hata İşleme: Sağlam hata yönetimi için ENUM_BIT_BUFFER_ERROR enum ve GetLastError()/GetLastErrorString() yöntemleri sağlar.
- Tampon Yönetimi: Ham tampon içeriğini temizlemek, sonlandırmak, ayarlamak, dosyaya kaydetmek ve dosyadan yüklemek için işlevler sunar.
- Dahili Tamponlama: Ana ulong[] dizisine yazmadan veya bu diziden okumadan önce bitleri biriktirerek bit seviyesi işlemleri optimize etmek için dahili 64 bit tamponlar (m_writeBufferInternal, m_readBufferInternal) kullanır.
//+------------------------------------------------------------------+ //| CBitBuffer Sınıfı| //| Tek tek bitleri veya bit dizilerini ulong[] tamponuna okur/yazar. | //| Verimli bit manipülasyonunu ve karışık okuma/yazma işlemlerini destekler. //+------------------------------------------------------------------+ class CBitBuffer { public: // Çekirdek bit işlemleri bool WriteBit(bool bit); // Tek bir bit yazar bool WriteBits(ulong value, int numberOfBits); // Bir ulong'dan N bit yazar bool ReadBit(); // Tek bir bit okur ulong ReadBits(int numberOfBits); // N biti ulong olarak okur ulong PeekBits(int numberOfBits); // Pozisyonu ilerletmeden N bit okur public: // Pozisyon ve boyut yönetimi bool SetReadPosition(long bitPosition); // Okuma konumunu bit cinsinden ayarlar long GetReadPosition(); bool ResetReadPosition(); // Okuma konumunu 0'a sıfırlar bool SkipBits(long bitsToSkip); // Geçerli okuma konumundan N bit atlar long GetTotalWrittenBits(); // Yazılan toplam bit long GetTotalBytesWritten(); // Yazılan toplam bayt long GetTotalBytesAllocated(); // Tahsis edilen toplam bayt long GetRemainingReadBits(); // Okunacak kalan bitler public: // Veri türüne özgü okuma/yazma işlemleri bool WriteBool(bool value); bool WriteChar(char value); bool WriteUChar(uchar value); bool WriteShort(short value); bool WriteUShort(ushort value); bool WriteInt(int value); bool WriteUInt(uint value); bool WriteLong(long value); bool WriteULong(ulong value); bool WriteDatetime(datetime value); bool WriteFloat(float value); // 32 bitlik bir float yazar bool WriteDouble(double value); // 64 bitlik bir çift yazar bool WriteString(string value); // Uzunluk önekli dize yazar template<typename T> bool WriteStruct(T &struct_object); // Uzunluk önekli yapıyı yazar bool ReadBool(); char ReadChar(); uchar ReadUChar(); short ReadShort(); ushort ReadUShort(); int ReadInt(); uint ReadUInt(); long ReadLong(); ulong ReadULong(); datetime ReadDatetime(); float ReadFloat(); // 32 bitlik bir float okur double ReadDouble(); // 64 bitlik bir çift okur string ReadString(); // Uzunluk önekli dizeyi okur template<typename T> T ReadStruct(); // Uzunluk önekli yapıyı okur public: // Tamsayılar için değişken uzunluklu kodlama (VLQ) bool WriteVarInt(int value); // ZigZag + VLQ kullanarak işaretli int yazar bool WriteVarUInt(uint value); // VLQ kullanarak unsigned int yazar bool WriteVarLong(long value); // ZigZag + VLQ kullanarak işaretli uzun yazar bool WriteVarULong(ulong value); // VLQ kullanarak işaretsiz uzun yazar int ReadVarInt(); // ZigZag + VLQ kullanarak işaretli int okur uint ReadVarUInt(); // VLQ kullanarak işaretsiz int okur long ReadVarLong(); // ZigZag + VLQ kullanarak işaretli uzun okur ulong ReadVarULong(); // VLQ kullanarak işaretsiz uzun okur public: // Tampon yönetimi void Clear(); // Tampon içeriğini temizler ve durumu sıfırlar bool GetFinalizedBuffer(ulong &destinationArray[]); // Arabellek içeriğini diziye kopyalar bool SetRawBuffer(const ulong &sourceBuffer[]); // Tampon içeriğini diziden ayarlar bool Save(string filename); // Arabelleği dosyaya kaydeder bool Load(string filename); // Tamponu dosyadan yükler public: // Hata işleme ENUM_BIT_BUFFER_ERROR GetLastError(); // Son hata kodunu döndürür string GetLastErrorString(); // Hata açıklama dizesini döndürür void ClearLastError() ; // Son hatayı temizler void PrintHex(); // Ana arabelleği onaltılık olarak yazdırır (hata ayıklama) };
Yukarıdaverilen tam test örneği " CBitBuffer_Test.mq5" , hataları tespit etmenin ve sınıfın yeteneklerini doğrulamanın en iyi yoludur.
Güncellemeler:
2025.07.21 - v.1.01 :
- CBitBuffer sınıfı, bir okuma işlemi başladıktan sonra yasadışı yazma girişimlerini etkin bir şekilde önler ve bu da veri bütünlüğünün korunmasına yardımcı olur.
- Kullanıcılar işlemleri karıştırmaya çalıştıklarında belirli bir hata (BIT_BUFFER_MIXED_OPERATION_ERROR) alırlar.
2025.07.22 - v.1.02 :
- Okuma ve yazma modları arasında geçiş yaparken veri bütünlüğünün korunmasına yardımcı olankısmi yıkama/yeniden doldurmaişlemlerinin doğru şekilde ele alınmasıyla sınıfın tasarımı karışık okuma/yazma işlemlerine izin verecek şekilde değiştirildi .
- Değişken (m_operationMode) ve hata kodu (BIT_BUFFER_MIXED_OPERATION_ERROR) kaldırıldı.
- Amacın daha iyi anlaşılması için kod yorumları temizlendi.
- "CBitBuffer_Test.mq5" içindeki örnekler daha fazla test vakasını kapsayacak şekilde güncellendi.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/61728

Bu MetaTrader 5 (MT5) özel göstergesi, boomSpikeBoxMitigationFinal.mq5, grafikte belirli bir yükseliş yükseliş modeli algılar ve dikdörtgenler ve yatay çizgiler kullanarak giriş bölgelerini işaretler. Fiyat giriş seviyesine döndüğünde ("hafiflettiğinde"), giriş çizgisi hafifletme noktasına kısaltılır.

DailyPivot_Shift göstergesi, ana seviyelerin günün başlangıcında bir kayma ile hesaplanabilmesi açısından normal DailyPivot göstergesinden farklıdır.

Expert Advisor for MetaTrader 5 that combines Exponential Moving Averages (EMA) and Relative Strength Index (RSI) to generate trading signals. Includes risk management features and trading time filter.

TardioBot V1.05, named after of a historical figure Giuseppe Tardio, is an Expert Advisor designed for MetaTrader 5 that employs a triangular arbitrage strategy.