MetaTrader5
การสร้างตัวบัฟเฟอร์สำหรับรวบรวมข้อมูลตามชั่วโมงใน MetaTrader 5
วัตถุประสงค์สำหรับเพื่อน ๆ นักเทรดที่ต้องการรวบรวมข้อมูลเพื่อการวิเคราะห์ การใช้ตัวบัฟเฟอร์ตามชั่วโมงในรูปแบบไบนารีเป็นแนวทางที่ดีครับ ตัวชี้วัดง่าย ๆ ด้านล่างนี้สามารถปรับขยายได้ง่าย โดยมันจะให้บัฟเฟอร์สำหรับแต่ละชั่วโมงเป็นเวกเตอร์แบบไบนารี และบัฟเฟอร์สุดท้ายจะเก็บค่าชั่วโมงของวันนั้น ๆหากคุณกำลังรวบรวมข้อมูลจากตัวชี้วัดอื่น ๆ ลงในไฟล์ 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 < 24; i++)
{
PlotIndexSetInteger(i, PLOT_DRAW_TYPE, DRAW_NONE);
PlotIndexSetInteger(i, PLOT_SHOW_DATA, true);
}
return(INIT_SUCCEEDED);การวนลูปในฟังก์ชัน OnCalculateจากนั้นเราก็ไปที่ฟังก์ชัน OnCalculate:ที่นี่เราจะตั้งค่าบัฟเฟอร์ทั้งหมดกลับเป็นศูนย์ และเปลี่ยนเฉพาะบัฟเฟอร์ที่ตรงกับชั่วโมงในปัจจุบันให้เป็นหนึ่งif(rates_total
2024.12.25