บทเรียนเรื่องการสร้าง และ การเรียกใช้งาน ฟังก์ชันใน 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 เปิดออเดอร์ตามเงื่อนไข และ ฟังก์ชันอื่นๆ

เนื้อหาของบทความนี้ทั้งหมด จะดูได้เฉพาะสมาชิกที่สมัครเรียนเท่านั้น
หากต้องการสมัครเข้าเรียนสามารถติดต่อได้ที่ช่องทางติดต่อสอบถามได้ที่ด้านล่างของเว็บนี้

Existing Users Log In
   
↑ กลับไปด้านบน