HomeCoding-ProgramingMQL4 Basic - ขอบเขตการเรียกใช้งานตัวแปร Global & Local Variables

MQL4 Basic – ขอบเขตการเรียกใช้งานตัวแปร Global & Local Variables

-

บางคนอาจเจอปัญหา error ไม่เจอตัวแปรที่เรียกใช้งานทั้งที่ประกาศไปแล้ว เนื่องจากตำแหน่งของการประกาศตัวแปร มีผลต่อขอบเขตการเรียกใช้งานตัวแปรนั้นๆ วันนี้เรามาเรียนรู้ขอบเขตนี้กันครับ

Global Variables vs Local Variables

ตัวแปรที่เราประกาศตั้งแต่ส่วนต้นๆของโปรแกรม ก่อนจะเข้าสู่ function ต่างๆ เช่น OnInit() หรือ OnStart() ตัวแปรเหล่านั้นจะสามารถถูกเรียกใช้งานอ้างอิงได้ตลอดทั้งโปรแกรมครับ เราเรียกตัวแปรเหล่านี้ว่าเป็น Global Variables ส่วนตัวแปรที่ถูกประกาศภายในฟังค์ชั่นต่างๆ จะถูกเรียกใช้งานได้เฉพาะแค่ในฟังค์ชั่นนั้นๆ ตัวแปรลักษณะนี้เรียกว่า Local Variables ครับ

เพิ่มเติมหน่อยนะครับ โดยปกติแล้วใน MQL4 version เก่า Local Variables จะมีขอบเขตการเรียกใช้งาน(scope) ได้ทั่วทั้งฟังค์ชั่นที่ได้ประกาศใช้ แม้ตอนประกาศจะอยู่ในโค๊ดส่วนย่อย (block) ภายในฟังค์ชั่นนั้นก็ตาม แต่เมื่อมี MQL4 version ใหม่ ซึ่งบางครั้งจำเป็นต้องมีการประกาศ #Property Strict ด้านบน (จะมีเสมอเวลาสร้างไฟล์ใหม่ขึ้นมาด้วย MQL4 Wizard) Local Variables จะมี scope อยู่เพียงแค่กรอบวงเล็บปีกกา {…} ของส่วนย่อย(block)ของโค๊ดที่ทำการประกาศตัวแปรเท่านั้น หลุดจากวงเล็บปีกกา } นี้ไป จะเรียกใช้งานไม่ได้อีกแม้จะอยู่ในฟังค์ชั่นเดียวกันก็ตาม

จากในรูป มีการประกาศ #Property strict ต่อมาบรรทัดที่ 15 มีการประกาศตัวแปร x ซึ่งอยู่ในblock ของคำสั่ง if การสั่ง Print ค่า x ในบรรทัด ที่ 16 สามารถ ไม่เกิดปัญหาใดๆ เนื่องจากยังอยู๋ในวงเล็บปีกกาเดียวกับที่ประกาศไว้ {} แต่ คำสั่ง Print ค่า x ในบรรทัดที่ 18 เกิด error เนื่องจาก ค่า x นั้นถูกลบออกไปแล้วเมื่อหลุดจากวงเล็บปีกกาปิด } ไป

ซึ่งหลายคนมักเจอ error เกี่ยวกับตัวแบบทำนองนี้ เมื่อไปโหลด EA/Indicator ที่เขียนด้วย mql4 เก่า แล้วนำวางลง แก้ไขในไฟล์แบบใหม่ ซึ่งมักมีการประกาศ #Property strict ครับ

หวังว่าจะทำให้เพื่อนๆ ได้เข้าใจ ขอบเขตการเรียกใช้งานของตัวแปรทั้ง Global และ Local มากขึ้นนะครับ เวลาเจอ error จะได้เข้าใจและแก้ได้ถูกจุดครับ

หากคิดว่าบทความนี้มีประโยชน์กับคนที่สนใจ MQL4 ฝากแชร์ต่อด้วยนะครับ

ปล. หากมีส่วนไหนที่อาจให้ข้อมูลไม่ถูกต้อง แจ้งได้นะครับ ผมเองก็พร้อมจะเรียนรู้แก้ไข ให้ถูกต้องครับ เพื่อประโยชน์ต่อคนอ่านทุกท่านครับ

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.

LATEST POSTS

เขียน EA ส่งแจ้งเตือนเข้า Line | Send Line Notify in MT4/MT5 EA

https://youtu.be/X9N2aaS-alQ Download LineNotify MQL4 Script ==== Chapters ====00:00 เกริ่น01:15 ฟังค์ชั่น LineNotify ใน MQL4 script02:44 การขอ Access Token จาก Line notify04:15 ตัวอย่างการเรียกใช้ฟังค์ชั่น LineNotify ใน EA06:43 ฟังค์ชั่น LineNotify นี้ทำงานยังไง?07:53...

เขียนโค๊ด MQL4 ปิดออเดอร์ทั้งหมดใน MT4 | Close All Orders MQL4 Coding

https://youtu.be/b2P7PW6lqP0 ในคลิปนี้เรามาดูวิธีเขียน code script mql4 ที่จะช่วยเราปิดออเดอร์ทั้งหมดใน MT4บางคนอาจจะเคยเขียนแล้ว ทั้งๆที่ไม่มี error อะไรเลย แต่ก็ปิดออเดอร์ได้ไม่หมด เพราะอะไรยังไงลองดูเป็นแนวทางเพิ่มเติมละกันนะครับ เพื่อนๆสามารถนำ code นี้ไปปรับแต่งสร้างเป็นฟังค์ชั่นที่ใช้ภายใน EA ของเพื่อนๆได้นะครับ ลิงค์เว็บที่ได้กล่าวถึงในคลิป https://www.mql5.com/en/forum/139654 สำหรับเพื่อนๆที่เพิ่งได้ดูคลิปนี้เป็นคลิปแรกแนะนำดูคลิปเก่าๆที่ผมได้ปูพื้นฐานเกี่ยวกับการเขียน EA ด้วย MQL4 ตาม Playlist ด้านล่างนี้ได้นะครับhttps://www.youtube.com/playlist?list=PLC5FDftkfAqyeg6ipIo0Hqm7NqpT7EkxHดูแล้วไม่เข้าใจยังไง comment มาพูดคุยกันได้นะครับ=======...

สอนเขียน MQL4 Indicator หาราคาต้นทุนเฉลี่ยเพื่อ Breakeven

ในคลิปนี้ เรามาฝึกการเขียน Code MQL4 กันโดยจะมาลองสร้าง MT4 indicator ที่ช่วยแสดงราคาต้นทุนเฉลี่ยรวมของทุกออร์เดอร์ฝั่ง buy หรือ ฝั่ง sell ในคู่เงินนั้นๆกันนะครับ https://www.youtube.com/watch?v=HVbAhl7m4_4 ราคาต้นทุนเฉลี่ยรวมนี้ จะเป็นระดับราคาที่ทำให้ Order ฝั่งนั้นๆ ( buy หรือ sell) สามารถปิดออร์เดอร์แล้วจะไม่กำไรหรือขาดทุน (Breakeven price) เมื่อเรารู้ราคา Breakeven...

สอนเขียน EA MQL4 เทรดด้วย 3 EMA + Fractal Trading System

https://youtu.be/5EI9xOs-3_Y ===== Chapters ===== 00:00 เกริ่น01:32 เงื่อนไขระบบเทรด 3 EMA+Fractal04:01 ตัวอย่างการทำงานของ EA07:00 Flowchart การทำงาน EA09:50 Mql4 Code : ส่วนของการรับค่า input11:17 Mql4 Code : อธิบายการทำงานหลักใน OnTick13:22 เขียน function เช็ค...

Follow us

0FansLike
9,070SubscribersSubscribe

Most Popular