होम तकनीकी संकेतक पोस्ट

हर घंटे के लिए बाइनरी बफर: डेटा संग्रहण का आसान तरीका

संलग्नक
54446.zip (66.85 KB, डाउनलोड 0 बार)

उद्देश्य

ट्रेडर्स अपने मॉडलिंग के लिए डेटा इकट्ठा कर सकते हैं। आर्थिक मॉडलिंग में समय डमी का अक्सर उपयोग किया जाता है। नीचे दिया गया सरल संकेतक, जिसे आसानी से बढ़ाया जा सकता है, प्रत्येक घंटे के लिए एक बाइनरी बफर एरे वेक्टर प्रदान करता है। एक अंतिम बफर एरे वेक्टर घंटे को स्वयं संग्रहीत करता है।

अगर अन्य संकेतकों से डेटा CSV में इकट्ठा किया जा रहा है, जैसे कि CopyBuffer फ़ंक्शन का उपयोग करते हुए, तो यह संकेतक अतिरिक्त डेटा के रूप में इकट्ठा किए गए घंटे के लिए डमी कॉलम प्रदान करता है।

  • यह उन लोगों के लिए एक सरल कोड है जो डेटा इकट्ठा करते हैं, जैसे कि मशीन लर्निंग के उद्देश्यों के लिए, ताकि आपके पास मॉडलिंग में उपयोग के लिए तैयार डमी वेरिएबल (बफर्स 0 से 23) या घंटे का वेरिएबल (बफर 24) हो।

कोड की व्याख्या

  • बफर संख्या और प्लॉट संख्या को 25 के रूप में घोषित करने से शुरू करें:
#property indicator_chart_window
#property indicator_buffers 25
#property indicator_plots 25

बफर लेबलिंग

  • डेटा विंडो के लिए बफर लेबल्स को निर्धारित किया:
#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"

बफर घोषणाएँ

  • इसके बाद, बफर और दिन के घंटे के लिए एक पूर्णांक चर की घोषणा की गई जिसे बाद में गणना की जाती है।
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;

इंडेक्सिंग और प्लॉट ड्राइंग

सभी बफरों के लिए डेटा के रूप में इंडेक्स सेट किया गया, और एक लूप का उपयोग करके प्लॉटिंग बंद कर दी गई (इंडेक्सिंग करने का प्रयास करते समय एक त्रुटि उत्पन्न हुई कि आप hourBuffer[q] को SetIndexBuffer के माध्यम से पास नहीं कर सकते, इसलिए इसे एक-एक करके किया गया; लेकिन लूपिंग PlotIndexSetInteger के लिए काम करता है, यह मददगार है)।

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 फ़ंक्शन लूप और प्रोग्राम

  • अब हम OnCalculate फ़ंक्शन में जाते हैं:
  • यहां हम सभी बफरों को शून्य पर वापस सेट करते हैं, और केवल एक को वर्तमान घंटे के अनुसार 1 में बदलते हैं। यहां शायद दक्षता में सुधार किया जा सकता है, लेकिन बाद में।
if(rates_total <= 0)
   return(0);

// हम पहले अप्रक्रमित बार से पुनः गणना करेंगे
int start = (prev_calculated > 0 ? prev_calculated - 1 : 0);

for(int i = start; i < rates_total; i++)
{
   // बार i के लिए घंटे की गणना (0..23)
   bar_hour = (int)((time[i] % 86400) / 3600);

   // 1) बार i के लिए सभी 24 बफरों को 0 पर सेट करें
   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) अब केवल मिलान करने वाले बफर को 1 पर सेट करें
   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);
}

// प्रोसेस किए गए बार की संख्या लौटाएं
return(rates_total);}

टिप्पणी को स्वादिष्ट बनाने के लिए फ़ंक्शन

  • और आखिरी लेकिन महत्वपूर्ण, एक टिप्पणी के लिए प्रोग्राम:
  • यह वास्तव में एक डिबगिंग चेक है लेकिन मैंने टिप्पणी को छोड़ दिया है।
string HourToText(int bh) {
string TextHour;

switch(bh)
{
   case 0:
      TextHour = "12 am"; // आधी रात का घंटा 12-घंटे प्रारूप में
      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-घंटे प्रारूप में
      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:
      // यदि 'bh' सीमा से बाहर है (0..23)
      TextHour = "Unknown";
      break;
}

return TextHour;

ध्यान दें कि यह वर्तमान में केवल डेटा विंडो के माध्यम से प्रदर्शित होता है।


आप सभी को क्रिसमस और 2025 का नया साल मुबारक हो।

संबंधित पोस्ट

टिप्पणी (0)