บทเรียนเรื่องการสร้าง และ การเรียกใช้งาน ฟังก์ชันใน MQL4
บทเรียนเรื่องการสร้าง และ การเรียกใช้งาน ฟังก์ชันใน MQL4
คลิ๊กเพื่อดูคลิปวีดีโอที่มีรายละเอียดมากกว่าบทความนี้ (ลิ้งค์นี้จะดูได้เฉพาะสมาชิกเท่านั้น)
1. ฟังก์ชัน (Function) คืออะไร?
ฟังก์ชัน (Function) เปรียบเสมือนกล่องวิเศษที่มีช่องรับข้อมูล (input) และช่องส่งผลลัพธ์ (output) เมื่อผู้เรียนใส่ข้อมูลเข้าไปที่ช่อง input ฟังก์ชันจะประมวลผลข้อมูลนั้น และส่งผลลัพธ์ออกมาทางช่อง output
ตัวอย่างง่ายๆ ของฟังก์ชัน:
int AddNumbers(int a, int b) {
return a + b;
}
ในตัวอย่างนี้ ฟังก์ชัน AddNumbers เป็นกล่องที่รับข้อมูล a และ b (input) แล้วส่งผลรวมของทั้งสองออกมาเป็น int (output) ซึ่งก็คือผลลัพธ์ที่ได้จากการบวกกัน
การเรียกใช้ฟังก์ชัน
เมื่อผู้เรียนสร้างฟังก์ชันแล้ว สามารถเรียกใช้ฟังก์ชันนั้นได้ทุกที่ในโปรแกรม โดยใช้ชื่อฟังก์ชันและส่งข้อมูลที่ต้องการผ่านทาง input
ตัวอย่างการเรียกใช้ฟังก์ชัน AddNumbers:
int result = AddNumbers(5, 10);
Print("ผลลัพธ์คือ: ", result);
ในตัวอย่างนี้ ฟังก์ชัน AddNumbers ถูกเรียกใช้งานโดยส่งค่า 5 และ 10 เข้าไปเป็น input ผลลัพธ์ที่ได้คือ 15 ซึ่งถูกเก็บไว้ในตัวแปร result และแสดงผลในหน้าต่าง Terminal
ทำไมต้องใช้ฟังก์ชัน?
ทุกครั้งที่มีการทำงานซ้ำๆ หรือมีการคำนวณด้วยสูตรเดิมๆ บ่อยๆ เราสามารถสร้างฟังก์ชันขึ้นมาเพียงครั้งเดียว เมื่อจำเป็นต้องใช้วิธีการนั้นอีก เราเพียงแค่เรียกใช้ฟังก์ชันนั้นก็จะได้ผลลัพธ์ทันที ซึ่งช่วยลดจำนวนคำสั่งที่ซ้ำซ้อนลงได้มาก ทำให้โค้ดสั้นและจัดการง่ายขึ้น
ตัวอย่างการเขียนโค้ดแบบปกติ
A1=ผลัพธ์
B1=5
C1=10
A1=B1+C1
Print(A1) ซึ่ง A1 จะมีค่าเท่ากับ 15
A2=ผลัพธ์
B2=20
C2=30
A2=B2+C2
Print(A2) ซึ่ง A2 จะมีค่าเท่ากับ 50
A3=A1+A2
Print(A3) ซึ่ง A3 จะมีค่าเท่ากับ 65
ตัวอย่างการเขียนโค้ดแบบใช้ฟังก์ชัน (Function)
My_Function(A,B){
return(A+B)
}
A=My_Function(5,10)
Print(A) ซึ่ง A จะมีค่าเท่ากับ 15
B=My_Function(20,30)
Print(B) ซึ่ง B จะมีค่าเท่ากับ 50
C=My_Function(A,B)
Print(C) ซึ่ง C จะมีค่าเท่ากับ 65
จะเห็นได้ชัดเจนว่าการใช้ฟังก์ชันเข้ามาช่วยจะทำให้ลดการประกาศตัวแปรลงไปได้มาก และ ยังช่วยให้โคัดอ่านง่ายเป็นระเบียบ และ ยังทำให้โปรแกรมทำงานได้เร็วขึ้นอีกด้วย
สรุป
ฟังก์ชันคือเครื่องมือที่ช่วยจัดการโค้ดให้เป็นระบบ เปรียบเสมือนกล่องวิเศษที่รับข้อมูล (input) เพื่อทำการประมวลผล แล้วส่งผลลัพธ์ออกมา (output) ช่วยให้โปรแกรมของผู้เรียนทำงานได้อย่างมีประสิทธิภาพและลดความซ้ำซ้อนในการเขียนโค้ดลงไปได้มาก
2. โครงสร้างพื้นฐานของฟังก์ชันใน MQL4
ฟังก์ชันใน MQL4 มีโครงสร้างพื้นฐานดังนี้:
return_type function_name(parameter_list) {
// คำสั่งที่ต้องการให้ฟังก์ชันทำงานสมมุติเก็บไว้ที่ X
return X; // คำสั่งส่งค่า X ออกไป ตามประเภทของ return_value ที่กำหนด
}
หมายเหตุการใส่คำอธิบายเข้าไปในโค้ดจะต้องใส่เครื่องหมาย // ขึ้นต้นก่อนคำอธิบาย
– Return Type (ประเภทข้อมูลที่คืนค่า): ระบุชนิดของข้อมูลที่ฟังก์ชันจะคืนค่า เช่น int (จำนวนเต็ม), double (ตัวเลขทศนิยม), boolean(true หรือ false) ,string(ข้อความ) ,void (ไม่คืนค่าอะไร)
– Function Name (ชื่อฟังก์ชัน): ชื่อที่ใช้เรียกฟังก์ชันในส่วนต่างๆ ของโปรแกรม ชื่อฟังก์ชันควรบ่งบอกถึงหน้าที่ของมัน และ ต้องเป็นชื่อไม่ไม่ซ้ำกับชื่อฟังก์ชันมาตรฐานที่มีใน MQL อยู่แล้ว ชื่อฟังก์ชันแนะนำให้ใช้ _ คั่นระหว่างคำแจะลดปัญหาชื่อซ้ำได้ เช่น Open_Buy_Order()
– Parameter List (รายการพารามิเตอร์): รายการของตัวแปรที่ส่งค่าเข้ามาในฟังก์ชัน เมื่อฟังก์ชันถูกเรียกใช้ (สามารถไม่มีพารามิเตอร์ก็ได้)
– Function Body (เนื้อหาของฟังก์ชัน): กลุ่มของคำสั่งที่ทำงานเมื่อฟังก์ชันถูกเรียกใช้
ตัวอย่างฟังก์ชันที่ไม่มีการส่งค่าพารามิเตอร์เข้าไปให้ฟังก์ชัน:
double Get_Spread_Value() {
double spread = (Ask - Bid) / Point;
return spread ; // คืนค่าผลลัพธ์ของค่าสเปรดในขณะนั้น
}
การเรียกใช้งานก็จะเป็นแบบนี้ Print( Get_Spread_Value() );
ตัวอย่างฟังก์ชันที่มีการส่งค่าพารามิเตอร์เข้าไปให้ฟังก์ชัน:
int AddTwoNumbers(int a, int b) {
int sum = a + b; // บวก a และ b เก็บผลลัพธ์ในตัวแปร sum
return sum; // คืนค่าผลลัพธ์
}
การเรียกใช้งานก็จะเป็นแบบนี้ Print( AddTwoNumbers(5,10) ); ผลลัพธ์ก็จะออกมาเป็น 15
3. การเรียกใช้ฟังก์ชันในโปรแกรม
เมื่อสร้างฟังก์ชันแล้ว เราสามารถเรียกใช้ฟังก์ชันนั้นในส่วนอื่นๆ ของโปรแกรมได้ โดยการเรียกใช้จะทำให้ฟังก์ชันทำงานและคืนค่าผลลัพธ์ (ถ้ามี)
ตัวอย่างการเรียกใช้ฟังก์ชัน AddTwoNumbers:
void OnTick() {
int result = AddTwoNumbers(5, 3); // เรียกใช้ฟังก์ชัน AddTwoNumbers และเก็บผลลัพธ์ในตัวแปร result
Print("Result: ", result); // แสดงผลลัพธ์ในหน้าต่าง Terminal
}
– ในฟังก์ชัน OnTick() ซึ่งเป็นฟังก์ชันที่ทำงานทุกครั้งที่ราคามีการเปลี่ยนแปลง เราเรียกใช้ฟังก์ชัน AddTwoNumbers โดยส่งค่า 5 และ 3 เป็นพารามิเตอร์
– ผลลัพธ์จากการบวก 5 และ 3 จะถูกเก็บในตัวแปร result และแสดงผลออกมาในหน้าต่าง Terminal ด้วยคำสั่ง Print
5. การสร้างฟังก์ชันที่กำหนดเอง
ผู้เรียนสามารถสร้างฟังก์ชันของผู้เรียนเองใน MQL4 เพื่อใช้ทำงานเฉพาะเจาะจงที่ผู้เรียนต้องการ โดยฟังก์ชันที่ผู้เรียนสร้างขึ้นจะสามารถถูกเรียกใช้งานได้จากส่วนต่างๆ ของโปรแกรม
ตัวอย่างการสร้างฟังก์ชันเพื่อคำนวณ Moving Average:
double CalculateMovingAverage(int period, int shift) {
double sum = 0.0;
for(int i = 0; i < period; i++) {
sum += Close[i + shift];
}
return sum / period;
}
การเรียกใช้ฟังก์ชันนี้:
void OnTick() {
double ma = CalculateMovingAverage(14, 0); // คำนวณค่าเฉลี่ยเคลื่อนที่ 14 แท่ง เริ่มจากแท่งล่าสุด
Print("Current Moving Average: ", ma);
}
– เมื่อเรียกใช้ฟังก์ชันนี้ใน OnTick() จะได้ค่าเฉลี่ยเคลื่อนที่และแสดงผลออกมาในหน้าต่าง Terminal
ตัวอย่างต่อไปนี้จะเป็นตัวอย่างที่มีการเรียกใช้งานจริงบ่อยๆ เช่น ฟังก์ชันช่วยคำนวณค่า Lot size โดยคำนวณจาก เงินทุน , %ความเสี่ยง ,ระยะ Stop Loss เพื่อให้ได้ค่า Lot size ที่เหมาะสมกับเงินทุน หรือ ตัวอย่างการสร้างฟังก์ชันเพื่อให้ EA เปิดออเดอร์ตามเงื่อนไข และ ฟังก์ชันอื่นๆ
เนื้อหาของบทความนี้ทั้งหมด จะดูได้เฉพาะสมาชิกที่สมัครเรียนเท่านั้น
หากต้องการสมัครเข้าเรียนสามารถติดต่อได้ที่ช่องทางติดต่อสอบถามได้ที่ด้านล่างของเว็บนี้