Uzman Danışmanlar: Yatırımcılar için MQL5 Programlama - Kitaptan kaynak kodları. Bölüm 6 - sayfa 2
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
Emirler, anlaşmalar, pozisyonlar zaten zaman dilimleriyle ilgili değildir. Ya bir şeyi yanlış anladınız ya da ifadeniz yanlış.
Üzgünüm, sanırım kelime seçimim kafa karıştırıcı"zaman çerçevesi" ile "tarih aralığı" demek istiyorum. Diyelim ki 2025-10-01 00:00:00 ile 2025-10-22 23:59:59 arasındaki Fırsatlar gibi belirli bir tarih aralığında işlem gören Fırsatları/Siparişleri seçmek istiyorum.
Bir işlem geçmişinin bir alt aralığını analiz etmek istiyorsanız, filtreleme kodunun kendisini etkilemeden, filtrelemeden önce geçmişin yalnızca bu bölümünü talep etmek daha verimli olduğunda:
Herhangi bir nedenle, HistorySelect ile uyguladığınız genel aralık içinde (daha dar) bir alt aralık seçmek isterseniz, bunu filtreleme kodunda şu şekilde yapabilirsiniz:
{ // bunlardan bazıları buraya gider // HistorySelect(0, LONG_MAX); // HistorySelectByPosition(PositionID); ... DealTuple deals[]; if(SubrangeFrom != SubrangeTo && SubrangeFrom < SubrangeTo) { filter.let(DEAL_TIME, SubrangeFrom - 1, IS::GREATER).let(DEAL_TIME, SubrangeTo + 1, IS::LESS); } filter.let(DEAL_POSITION_ID, PositionID).select(deals, true); ... }Sarı renkle vurgulanan satır, IS::GREATER ve IS::LESS ek niteleyicilerini kullanarak tarih-saat aralığı [SubrangeFrom, SubrangeTo] için 2 koşul belirler (varsayılan olarak, let() işlevine yapılan diğer çağrılarda belirtilmezler ve daha sonra IS::EQUAL normalde tek değerli alanlar için kullanılır).
Alt filtreyi tarih aralığına göre uygulamak için tek bir neden biliyorum - bu, emirlerin kurulum zamanı (ORDER_TIME_SETUP) içindir, çünkü HistorySelect emirlerin başka bir tarih-zaman özelliğine uygulanır - yani emir gerçekleştirme zamanı (ORDER_TIME_DONE). Ayrıca, çok sayıda aktif emir varsa, aktif emirlerin bir alt aralığını (geçmişte olmayan) filtrelemek ilginç olabilir.
Başlangıç noktası olarak MQL5/Scripts/MQL5Book/p6/TradeHistoryPrint.mq5 örnek koduna bakabilirsiniz.Bir işlem geçmişinin bir alt aralığını analiz etmek istiyorsanız, filtreleme kodunun kendisini etkilemeden, filtrelemeden önce geçmişin yalnızca bu bölümünü talep etmek daha verimli olduğunda:
Herhangi bir nedenle, HistorySelect ile uyguladığınız genel aralık içinde (daha dar) bir alt aralık seçmek isterseniz, bunu filtreleme kodunda şu şekilde yapabilirsiniz:
Sarı renkle vurgulanan satır, IS::GREATER ve IS::LESS ek niteleyicilerini kullanarak tarih-saat aralığı [SubrangeFrom, SubrangeTo] için 2 koşul belirler (varsayılan olarak, let() işlevine yapılan diğer çağrılarda belirtilmezler ve daha sonra IS::EQUAL normalde tek değerli alanlar için kullanılır).
Alt filtreyi tarih aralığına göre uygulamak için tek bir neden biliyorum - bu, emirlerin kurulum zamanı (ORDER_TIME_SETUP) içindir, çünkü HistorySelect emirlerin başka bir tarih-zaman özelliğine uygulanır - yani emir gerçekleştirme zamanı (ORDER_TIME_DONE). Ayrıca, çok sayıda aktif emir varsa, aktif emirlerin bir alt aralığını (geçmişte olmayan) filtrelemek ilginç olabilir.
Başlangıç noktası olarak MQL5/Scripts/MQL5Book/p6/TradeHistoryPrint.mq5 örnek betiğine bakabilirsiniz.