วัตถุประสงค์
สำหรับเพื่อน ๆ นักเทรดที่ต้องการรวบรวมข้อมูลเพื่อการวิเคราะห์ การใช้ตัวบัฟเฟอร์ตามชั่วโมงในรูปแบบไบนารีเป็นแนวทางที่ดีครับ ตัวชี้วัดง่าย ๆ ด้านล่างนี้สามารถปรับขยายได้ง่าย โดยมันจะให้บัฟเฟอร์สำหรับแต่ละชั่วโมงเป็นเวกเตอร์แบบไบนารี และบัฟเฟอร์สุดท้ายจะเก็บค่าชั่วโมงของวันนั้น ๆ
หากคุณกำลังรวบรวมข้อมูลจากตัวชี้วัดอื่น ๆ ลงในไฟล์ CSV โดยใช้ฟังก์ชัน CopyBuffer ตัวชี้วัดนี้จะช่วยให้คุณมีคอลัมน์ที่เป็นตัว dummy สำหรับชั่วโมงที่คุณรวบรวมเป็นข้อมูลเพิ่มเติม
- โค้ดนี้เหมาะสำหรับผู้ที่ต้องการเก็บข้อมูล เช่น การใช้ Machine Learning โดยคุณจะมีตัวแปร dummy ที่พร้อมใช้งาน (บัฟเฟอร์ 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)
// Assign buffers to index, hide from chart, show in Data Window 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การวนลูปในฟังก์ชัน OnCalculate
- จากนั้นเราก็ไปที่ฟังก์ชัน OnCalculate:
- ที่นี่เราจะตั้งค่าบัฟเฟอร์ทั้งหมดกลับเป็นศูนย์ และเปลี่ยนเฉพาะบัฟเฟอร์ที่ตรงกับชั่วโมงในปัจจุบันให้เป็นหนึ่ง
if(rates_total 0 ? prev_calculated - 1 : 0); for(int i = start; iฟังก์ชันสำหรับเพิ่มสีสันให้กับความคิดเห็น
- และสุดท้าย เป็นโปรแกรมสำหรับแสดงความคิดเห็น: นี่เป็นการตรวจสอบการดีบัก แต่ยังคงไว้ซึ่งความคิดเห็น
string HourToText(int bh) {
string TextHour;
switch(bh)
{
case 0: TextHour = "12 am"; 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"; 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: TextHour = "Unknown"; break;
}
return TextHour;
}หมายเหตุว่า ข้อมูลนี้จะแสดงผ่านหน้าต่างข้อมูลในปัจจุบัน

ขอให้ทุกคนมีความสุขในวันคริสต์มาสและปีใหม่ 2025!

ความคิดเห็น 0