Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın

Buffers for each hour (binary) and an hour buffer from 0-23 - for data collection purposes - MetaTrader 5 için gösterge
- Görüntülemeler:
- 48
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Amaç
Kullanıcılar modelleme için veri toplayabilir. Zaman kuklaları ekonomik modellemede sıklıkla kullanılır. Kolayca genişletilebilen aşağıdaki basit gösterge, her saati ikili bir tampon dizi vektörü olarak sağlar. Son bir tampon dizi vektörü saatin kendisini depolar.
Diğer göstergelerden gelen veriler, örneğin bir CopyBuffer işlevi kullanılarak bir CSV'ye toplanıyorsa, bu gösterge ek veri olarak toplanan saat için kukla sütunlara izin verir.
- Bu, ML gibi amaçlarla veri toplayanlar için basit bir koddur, böylece modellemede kullanmak için hazır bir kukla değişkene (tamponlar 0 ila 23) veya saat değişkenine (tampon 24) sahip olabilirsiniz.
Kodun içinden geçmek
- Tampon numarası ve çizim numarası 25 olarak bildirilerek başlatıldı:
#property indicator_chart_window #property indicator_buffers 25 #property indicator_plots 25
Tampon Etiketleme
- Veri penceresi için tampon etiketlerini tanımlar:
#property indicator_label1 "Hour 00" #property indicator_label2 "Hour 01" #property indicator_label3 "Hour 02" #property indicator_label4 "Hour 03" #property indicator_label5 "Hour 04" #property indicator_label6 "Hour 05" #property indicator_label7 "Hour 06" #property indicator_label8 "Hour 07" #property indicator_label9 "Hour 08" #property indicator_label10 "Hour 09" #property indicator_label11 "Hour 10" #property indicator_label12 "Hour 11" #property indicator_label13 "Hour 12" #property indicator_label14 "Hour 13" #property indicator_label15 "Hour 14" #property indicator_label16 "Hour 15" #property indicator_label17 "Hour 16" #property indicator_label18 "Hour 17" #property indicator_label19 "Hour 18" #property indicator_label20 "Hour 19" #property indicator_label21 "Hour 20" #property indicator_label22 "Hour 21" #property indicator_label23 "Hour 22" #property indicator_label24 "Hour 23" #property indicator_label25 "Hour"
Tampon Bildirimleri
- Tamponları ve ayrıca daha sonra hesaplanacak olan günün saati için bir tamsayı değişkenini bildirmek için ilerlendi.
double hourBuffer0[]; double hourBuffer1[]; double hourBuffer2[]; double hourBuffer3[]; double hourBuffer4[]; double hourBuffer5[]; double hourBuffer6[]; double hourBuffer7[]; double hourBuffer8[]; double hourBuffer9[]; double hourBuffer10[]; double hourBuffer11[]; double hourBuffer12[]; double hourBuffer13[]; double hourBuffer14[]; double hourBuffer15[]; double hourBuffer16[]; double hourBuffer17[]; double hourBuffer18[]; double hourBuffer19[]; double hourBuffer20[]; double hourBuffer21[]; double hourBuffer22[]; double hourBuffer23[]; double hourBuffer[]; int bar_hour;
İndeksleme ve Çizim
Tüm tamponlar için indeksi veri olarak ayarlayın ve bir döngü kullanarak çizimi kapatın (indekslemeyi bir döngü ile yapmaya çalışmak, örneğin hourBuffer[q]'yu SetIndexBuffer'dan geçiremeyeceğinize dair bir hata verdi, bu nedenle bunu tek tek yaptım; ancak döngü PlotIndexSetInteger için işe yarıyor gibi görünüyor, yardımcı oluyor).
// Tamponları dizine atayın, grafikten gizleyin, Veri Penceresinde gösterin SetIndexBuffer(0, hourBuffer0, INDICATOR_DATA); SetIndexBuffer(1, hourBuffer1, INDICATOR_DATA); SetIndexBuffer(2, hourBuffer2, INDICATOR_DATA); SetIndexBuffer(3, hourBuffer3, INDICATOR_DATA); SetIndexBuffer(4, hourBuffer4, INDICATOR_DATA); SetIndexBuffer(5, hourBuffer5, INDICATOR_DATA); SetIndexBuffer(6, hourBuffer6, INDICATOR_DATA); SetIndexBuffer(7, hourBuffer7, INDICATOR_DATA); SetIndexBuffer(8, hourBuffer8, INDICATOR_DATA); SetIndexBuffer(9, hourBuffer9, INDICATOR_DATA); SetIndexBuffer(10, hourBuffer10, INDICATOR_DATA); SetIndexBuffer(11, hourBuffer11, INDICATOR_DATA); SetIndexBuffer(12, hourBuffer12, INDICATOR_DATA); SetIndexBuffer(13, hourBuffer13, INDICATOR_DATA); SetIndexBuffer(14, hourBuffer14, INDICATOR_DATA); SetIndexBuffer(15, hourBuffer15, INDICATOR_DATA); SetIndexBuffer(16, hourBuffer16, INDICATOR_DATA); SetIndexBuffer(17, hourBuffer17, INDICATOR_DATA); SetIndexBuffer(18, hourBuffer18, INDICATOR_DATA); SetIndexBuffer(19, hourBuffer19, INDICATOR_DATA); SetIndexBuffer(20, hourBuffer20, INDICATOR_DATA); SetIndexBuffer(21, hourBuffer21, INDICATOR_DATA); SetIndexBuffer(22, hourBuffer22, INDICATOR_DATA); SetIndexBuffer(23, hourBuffer23, INDICATOR_DATA); SetIndexBuffer(24, hourBuffer, INDICATOR_DATA); for(int i = 0; i < 24; i++) { PlotIndexSetInteger(i, PLOT_DRAW_TYPE, DRAW_NONE); PlotIndexSetInteger(i, PLOT_SHOW_DATA, true); } return(INIT_SUCCEEDED); }
OnCalculate Fonksiyon Döngüleri ve Programı
- Sonra OnCalculate fonksiyonuna geçiyoruz:
- Burada tüm tamponları sıfıra geri ayarlıyoruz ve yalnızca geçerli saate karşılık geleni bire yükseltiyoruz. Burada muhtemelen bir verimlilik kazancı elde edilebilir, ancak daha sonrası için.
if(rates_total <= 0) return(0); // İlk işlenmemiş çubuktan itibaren yeniden hesaplayacağız int start = (prev_calculated > 0 ? prev_calculated - 1 : 0); for(int i = start; i < rates_total; i++) { // i çubuğu için saati (0..23) hesapla bar_hour = (int)((time[i] % 86400) / 3600); // 1) i çubuğu için TÜM 24 tamponu 0 olarak ayarlayın hourBuffer0[i] = 0.0; hourBuffer1[i] = 0.0; hourBuffer2[i] = 0.0; hourBuffer3[i] = 0.0; hourBuffer4[i] = 0.0; hourBuffer5[i] = 0.0; hourBuffer6[i] = 0.0; hourBuffer7[i] = 0.0; hourBuffer8[i] = 0.0; hourBuffer9[i] = 0.0; hourBuffer10[i] = 0.0; hourBuffer11[i] = 0.0; hourBuffer12[i] = 0.0; hourBuffer13[i] = 0.0; hourBuffer14[i] = 0.0; hourBuffer15[i] = 0.0; hourBuffer16[i] = 0.0; hourBuffer17[i] = 0.0; hourBuffer18[i] = 0.0; hourBuffer19[i] = 0.0; hourBuffer20[i] = 0.0; hourBuffer21[i] = 0.0; hourBuffer22[i] = 0.0; hourBuffer23[i] = 0.0; hourBuffer[i] = EMPTY_VALUE; // 2) Şimdi SADECE eşleşen tamponu 1 olarak ayarlayın switch (bar_hour) { case 0: hourBuffer0[i] = 1.0; hourBuffer[i] = bar_hour; break; case 1: hourBuffer1[i] = 1.0; hourBuffer[i] = bar_hour; break; case 2: hourBuffer2[i] = 1.0; hourBuffer[i] = bar_hour; break; case 3: hourBuffer3[i] = 1.0; hourBuffer[i] = bar_hour; break; case 4: hourBuffer4[i] = 1.0; hourBuffer[i] = bar_hour; break; case 5: hourBuffer5[i] = 1.0; hourBuffer[i] = bar_hour; break; case 6: hourBuffer6[i] = 1.0; hourBuffer[i] = bar_hour; break; case 7: hourBuffer7[i] = 1.0; hourBuffer[i] = bar_hour; break; case 8: hourBuffer8[i] = 1.0; hourBuffer[i] = bar_hour; break; case 9: hourBuffer9[i] = 1.0; hourBuffer[i] = bar_hour; break; case 10: hourBuffer10[i] = 1.0; hourBuffer[i] = bar_hour; break; case 11: hourBuffer11[i] = 1.0; hourBuffer[i] = bar_hour; break; case 12: hourBuffer12[i] = 1.0; hourBuffer[i] = bar_hour; break; case 13: hourBuffer13[i] = 1.0; hourBuffer[i] = bar_hour; break; case 14: hourBuffer14[i] = 1.0; hourBuffer[i] = bar_hour; break; case 15: hourBuffer15[i] = 1.0; hourBuffer[i] = bar_hour; break; case 16: hourBuffer16[i] = 1.0; hourBuffer[i] = bar_hour; break; case 17: hourBuffer17[i] = 1.0; hourBuffer[i] = bar_hour; break; case 18: hourBuffer18[i] = 1.0; hourBuffer[i] = bar_hour; break; case 19: hourBuffer19[i] = 1.0; hourBuffer[i] = bar_hour; break; case 20: hourBuffer20[i] = 1.0; hourBuffer[i] = bar_hour; break; case 21: hourBuffer21[i] = 1.0; hourBuffer[i] = bar_hour; break; case 22: hourBuffer22[i] = 1.0; hourBuffer[i] = bar_hour; break; case 23: hourBuffer23[i] = 1.0; hourBuffer[i] = bar_hour; break; } string localHourText = HourToText(bar_hour); Comment("The hour is: ", localHourText); } // İşlenen çubuk sayısını döndür return(rates_total);
Yoruma tat katmak için fonksiyon
- Ve son olarak, bir yorum için bir program:
- Bu aslında bir hata ayıklama kontrolüdür, ancak yorumlamayı içeride bıraktım.
string HourToText(int bh) { string TextHour; switch(bh) { case 0: TextHour = "12 am"; // 12 saat biçiminde gece yarısı saati break; case 1: TextHour = "1 am"; break; case 2: TextHour = "2 am"; break; case 3: TextHour = "3 am"; break; case 4: TextHour = "4 am"; break; case 5: TextHour = "5 am"; break; case 6: TextHour = "6 am"; break; case 7: TextHour = "7 am"; break; case 8: TextHour = "8 am"; break; case 9: TextHour = "9 am"; break; case 10: TextHour = "10 am"; break; case 11: TextHour = "11 am"; break; case 12: TextHour = "12 pm"; // 12 saat formatında öğlen saati break; case 13: TextHour = "1 pm"; break; case 14: TextHour = "2 pm"; break; case 15: TextHour = "3 pm"; break; case 16: TextHour = "4 pm"; break; case 17: TextHour = "5 pm"; break; case 18: TextHour = "6 pm"; break; case 19: TextHour = "7 pm"; break; case 20: TextHour = "8 pm"; break; case 21: TextHour = "9 pm"; break; case 22: TextHour = "10 pm"; break; case 23: TextHour = "11 pm"; break; default: // Sadece 'bh'nin aralık dışında olması durumunda (0..23) TextHour = "Unknown"; break; } return TextHour;
Bunun şu anda yalnızca veri penceresi aracılığıyla görüntülendiğini unutmayın.
Herkese Mutlu Noeller ve 2025 Mutlu Yıllar.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/54446

"Bollinger Bantları ile 2 Hareketli Ortalama", iki yapılandırılabilir hareketli ortalamayı ve isteğe bağlı Bollinger Bantlarını birleştiren özel bir MT5 göstergesidir. İsteğe bağlı uyarılar, ses ve e-posta bildirimleri ile geçişler meydana geldiğinde gerçek zamanlı Alış ve Satış okları oluşturur. Tüm zaman dilimleri ve semboller için uygundur

Mevcut çubuk için Camarilla Denklem seviyesi sistemi.

Tüm barlar için Camarilla Denklem seviye sistemi.

Minimum gecikmeli trend değişim oranı göstergesi.