หัวข้อ
Code MQL4 ที่ใช้บ่อย
หมวด: พื้นฐาน MQL4
ในการเขียนโปรแกรม ภาษา MQL4 เพื่อสร้างบอทเทรด หรือ EA นั้น
ขั้นตอนแรกเราจำเป็นต้องบอกคอมพิวเตอร์ว่า เราต้องการจะดึงค่า (Value) จากสิ่งไหน เพื่อมาคำนวณ
ยกตัวอย่างเช่น เราต้องการจะปิดออเดอร์ทันทีที่ออเดอร์นั้นขาดทุน มากกว่าหรือเท่ากับ 5% ของมูลค่าพอร์ท
สมมติ พอร์ทเรามีเงินอยู่ 1,000 USD 5% ของ 1,000 USD ก็คือ 50 USD
เพื่อให้คอมพิวเตอร์เข้าใจตรงกับเรา เราต้องทำขั้นตอนตามนี้ครับ
1. ประกาศตัวแปร
การประกาศตัวแปรจะต้องกำหนดประเภทของตัวแปรให้ถูกต้อง (มีสอนข้างล่างครับ)
เช่น ถ้าเราต้องการตัวแปรประเภทเลขจำนวนเต็ม เราต้องระบุตัวแปรเป็น int แล้วตามด้วยชื่อตัวแปร
2. กำหนดค่าให้ตัวแปร
การกำหนดค่าให้ตัวแปรทำได้ง่าย ๆ ด้วยการใช้เครื่องหมาย = แล้วตามด้วยค่าที่ต้องการครับ
ตัวอย่างการประกาศตัวแปร
int start_balance = 10000;
จากตัวอย่างข้างบน เป็นการบอกคอมพิวเตอร์ว่า ตัวแปรชื่อ start_balance เป็นตัวแปรประเภท "เลขจำนวนเต็ม (integer)" มีมูลค่าเป็น 10,000 ไม่ต้องใส่ลูกน้ำ ( , ) ในการประกาศตัวแปรนะครับ
ซึ่งหลังจากที่เราสร้างและกำหนดค่าตัวแปรไปแล้ว เราสามารถเรียกใช้ตัวแปรนี้จากที่ไหนก็ได้ในโปรแกรมของเราครับ
ตัวอย่างการนำตัวแปรไปใช้
double percent_loss = 0.05;
double maximum_loss = start_balance * percent_loss;
จากตัวอย่างข้างบน เราได้ประกาศตัวแปรเพิ่มอีก 2 ตัว คือ percent_loss และ maximum_loss
โดยมีประเภทตัวแปรเป็น double คือตัวเลขที่สามารถมีจุดทศนิยมได้
ที่กำหนดให้ percent_loss มีค่าเป็น 0.05 เพราะมาจาก 5% ซึ่งก็คือ 5 หารด้วย 100 นั่นเอง
ส่วนตัวแปร maximum_loss จะมีมูลค่ามาจากการคูณกันของ ตัวแปรสองตัว
เพราะฉะนั้น maximum_loss จะได้เท่ากับ 10,000 * 0.05 = 500
เป็นยังไงบ้างครับ พอเห็นภาพการนำไปใช้กันบ้างหรือยัง?
หวังว่าจะเริ่มเห็นภาพกันมากขึ้นนะครับ สำหรับหน้านี้จะเป็นการยกตัวอย่างของประเภทตัวแปรที่ใช้บ่อย ๆ ใน MQL4
และตัวอย่างฟังก์ชันที่ใช้บ่อยใน MQL4 ครับ
สำหรับคนที่สนใจเรียนเนื้อหาอื่น ๆ แบบละเอียดสามารถติดตามได้ 2 ช่องทางครับ
1. ซื้อคอร์สสอนสด หรือ คอร์สออนไลน์ ในเว็บ หากสนใจสามารถติดต่อเพจ ตามGooมา ได้ที่ปุ่มสีเขียวขวาล่างหน้าจอ
(ตอนนี้เนื้อหาคอร์สออนไลน์ยังไม่สมบูรณ์ครับ)
2. เปิดบัญชีเทรดกับ TMGM เพื่อรับสิทธิ์เข้าเรียนเขียนบอทโดย ตามGooมา x TMGM
สนใจเปิดบัญชีเทรด >> คลิกที่นี่
ประเภทตัวเลขที่ใช้บ่อย ๆ มี 2 แบบครับ ทั้งสองแบบนี้สามารถมีค่าเป็น บวก หรือ ติดลบ ก็ได้ครับ
int - ตัวเลขจำนวนเต็ม
double - ตัวเลขที่สามารถติดจุดทศนิยมได้
ตัวแปรประเภทตัวหนังสือ String เป็นตัวแปรที่สารพัดประโยชน์มากครับ ยกตัวอย่างเช่น
เป็นตัวบอกว่าตอนนี้มีสัญญาณการเข้าซื้อ หรือ เข้าขายหรือยัง?
string - ตัวแปรประเภทตัวหนังสือต้องใส่ " ทั้งหน้าและหลังประโยค ตามตัวอย่างข้างล่างครับ
ตัวอย่างการประกาศตัวแปร string
string lma_status = "uptrend";
จากตัวอย่างข้างบนคือ ผมใช้ตัวแปร lma_status เพื่อบอกว่า ตอนนี้อินดิเคเตอร์ LMA เส้นค่าเฉลี่ยเคลื่อนที่
กำลังเป็นเทรนด์ขาขึ้น ซึ่งในการเขียนโปรแกรมจริง ๆ เราสามารถใช้ค่าต่าง ๆ มาคำนวณแล้วเปลี่ยนแปลงค่าของตัวแปรต่าง ๆ ที่เราต้องการได้เลยครับ
หมวด: บัญชีเทรด
การดูยอดเงินคงเหลือในบัญชี (Balance)
ตัวอย่าง
double Balance_now = AccountBalance();
หลังจากนั้นเราสามารถเอาตัวแปร Balance_now ไปใช้เพื่อทำการคำนวณหรือแสดงผลตามที่ต่าง ๆ ในโปรแกรมได้
เช่น
Print("Your Balance is ",Balance_now);
คำสั่ง Print ใช้สำหรับแสดงผลลัพธ์บางอย่างจากการคำนวณ โดยผลลัพธ์จากการ Print จะถูกแสดงในแถบ Journal ภายในส่วนของแถบ Tester ในโปรแกรม Metatrader 4 ครับ
การดูยอดเงินในบัญชีก่อนปิดออเดอร์ (Equity)
ตัวอย่าง
double Equity_now = AccountEquity();
หลังจากนั้นเราสามารถเอาตัวแปร Equity_now ไปใช้เพื่อทำการคำนวณหรือแสดงผลตามที่ต่าง ๆ ในโปรแกรมได้
เช่น
Print("Your Equity is ",Equity_now);
หมวด: ออเดอร์
ใน MQL4 จะมีประเภทของการเปิดออเดอร์ (Order) อยู่ทั้งหมด 2 ประเภท คือ ซื้อและขาย
โดยในแต่ละประเภทจะสามารถแบ่งย่อยได้อีก อย่างละ 3 แบบดังนี้
1. เปิดออเดอร์ทันที OP_BUY, OP_SELL
2. เปิดออเดอร์เมื่อราคาย้อนกลับไปจุดที่กำหนด OP_BUYLIMIT, OP_SELLLIMIT
จากภาพข้างบน คือตัวอย่างของการตั้งออเดอร์แบบ SELL LIMIT เมื่อราคาวิ่งขึ้นไปชน เส้นสีเขียว
MT4 จะทำการเปิดออเดอร์ SELL ให้ทันที โดยในภาพ ได้มีการตั้ง Stoploss ดักไว้เหนือราคาขึ้นไปตรง เส้นสีแดง
3. เปิดออเดอร์เมื่อราคาทะลุจุดที่กำหนด OP_BUYSTOP, OP_SELLSTOP
ภาพข้างบน คือตัวอย่างของการตั้งออเดอร์แบบ BUY STOP เมื่อราคาวิ่งขึ้นไปชน เส้นสีเขียว
MT4 จะทำการเปิดออเดอร์ BUY ให้ทันที โดยในภาพ ได้มีการตั้ง Stoploss ดักไว้ใต้ราคาตรง เส้นสีแดง
ตัวอย่างการใช้ฟังก์ชันเพื่อเปิดออเดอร์
int ticket = OrderSend("XAUUSD", OP_BUY, 1, 1920, 3, 1900, 1950, "Just BUY IT", magic, 0, clrGreen);
ประโยคด้านบนคือ ตัวอย่างการเปิดออเดอร์ประเภท BUY ในกราฟ XAUUSD จำนวน 1 lot
สามารถเลือกเปิดออเดอร์ได้ทั้งหมด 6 แบบ ดังนี้
OP_BUY, OP_SELL
OP_BUYLIMIT, OP_SELLLIMIT
OP_BUYSTOP และ OP_SELLSTOP
เปิดออเดอร์ที่ราคา 1920
ตั้ง Stoploss ที่ราคา 1900
และ Takeprofit ที่ราคา 1950
3 คือเลขของ Slippage (การคลาดเคลื่อนของกราฟ ส่วนใหญ่ตั้งไว้ที่ 3)
โดยมีการใส่คอมเมนต์ไว้ว่า "Just BUY IT" ซึ่งคอมเมนต์ตรงนี้มีไว้สำหรับใส่ประโยคสั้น ๆ บางอย่าง
โดยส่วนตัว ผมมักจะใช้สำหรับการบอกว่า เปิดเพราะอะไร เช่น เปิดเพราะ LMA เป็นต้น
magic คือ ตัวแปรประเภทเลขจำนวนเต็ม (Integer) ชุดนึงที่เอาไว้บอกว่า บอทตัวไหนเป็นคนเปิดออเดอร์นี้ เพราะหลาย ๆ ครั้ง
เราจะใช้บอทหลายตัวในการจัดการพอร์ท
เลข 0 คือ เลขบอกสถานะว่า ออเดอร์ประเภทรอคอยนี้ไม่มีหมดอายุ (Order expiration time)
ใช้สำหรับออเดอร์ประเภท LIMIT และ STOP
clrGreen ใช้เพื่อสร้างลูกศรสีเขียว บนกราฟเพื่อให้เรารู้ว่า ตัวนี้คือออเดอร์ประเภทอะไร (เลือกสีเองได้)
ดูสีทั้งหมดของ MQL4 ได้ที่ >> คลิกที่นี่
หลังจากที่โปรแกรมทำการเปิดออเดอร์ไปแล้ว จะมีการเก็บเลขตั๋วไว้ในตัวแปร ticket
โดยเราสามารถนำเลขตั๋วไปใช้ทำสิ่งต่าง ๆ ได้ เช่น สั่งปิดออเดอร์, สั่งทำ Trailing Stop
(การขยับ stoploss ตามราคาเพื่อรักษากำไร) หรือเรียกดูผลกำไร - ขาดทุนของออเดอร์นั้น ๆ
หลังจากที่เราได้ทำการเปิดออเดอร์ไปแล้ว และต้องการสั่ง ปิดออเดอร์ ทันทีเมื่อตรงเงื่อนไขบางอย่าง เช่น
ขาดทุนเกิน 5% ของพอร์ทให้สั่งปิดทันที เราสามารถทำได้ตามตัวอย่างข้างล่างครับ
ตัวอย่างการใช้ฟังก์ชันปิดออเดอร์
if(order_loss > max_loss){
OrderClose(ticket, 1, Bid, 3, clrBlack);
}
จากตัวอย่างด้านบนคือ เมื่อ order_loss (ตัวแปรที่เก็บค่าการขาดทุน) มากกว่า max_loss (ตัวแปรที่เก็บค่าการขาดทุนสูงสุด)
ให้ทำการปิดออเดอร์ที่มีเลขตั๋วตรงกับตัวแปร ticket (ตัวแปรที่ใช้เก็บเลขตั๋วจากตัวอย่างการเปิดออเดอร์ข้างบน) ทันที
โดยเลข 1 หมายถึงจำนวน lot ที่ต้องการปิด โดยเราสามารถแบ่งปิดออเดอร์เป็นส่วน ๆ ได้ เช่น ปิดที่ละ 0.5 lot เป็นต้น
Bid คือเส้นบอกราคา ณ ปัจจุบัน ปกติจะใช้กันแบบนี้ครับ
ออเดอร์ BUY เปิดที่ Ask ปิดที่ Bid
ออเดอร์ SELL เปิดที่ Bid ปิดที่ Ask
3 คือ Slippage
clrBlack คือกำหนดสีลูกศรเป็นสีดำ เมื่อปิดด้วยคำสั่งนี้
สรุป
เป็นยังไงกันบ้างครับ? คิดว่าถ้าใครได้อ่านมาถึงตรงนี้ ก็น่าจะพอเข้าใจเรื่องการใช้งานฟังก์ชันต่าง ๆ ของ MQL4 มากขึ้น
ใช่ไหมครับ? หรือไม่เข้าใจเลย ฮ่า ๆ
สิ่งที่ทุกคนเห็นในหน้านี้เป็นเพียงเสี้ยวหนึ่งของฟังก์ชันทั้งหมดที่เราสามารถเรียกใช้ได้ใน MQL4 ครับ
ยังมีฟังก์ชันที่น่าสนใจอีกมากมาย ที่รอให้เราเรียกใช้
ซึ่ง ถ้าหากใครสนใจจะเริ่มเขียนโปรแกรม MQL4 เพื่อสร้างบอทของตัวเอง แล้วยังไม่รู้จะเริ่มยังไง
หรืออยากเรียนรู้เร็ว ๆ โดยมีคนที่เข้าใจเรื่องนี้ และสามารถถ่ายทอดเป็นขั้นเป็นตอนได้จริง ๆ
ผมแนะนำให้มาเรียนด้วยกันกับเพจ ตามGooมา ของเราครับ
ขายของ
สำหรับคนที่สนใจเรียนเนื้อหาอื่น ๆ แบบละเอียดสามารถติดตามได้ 2 ช่องทางครับ
1. ซื้อคอร์สสอนสด หรือ คอร์สออนไลน์ ในเว็บ หากสนใจสามารถติดต่อเพจ ตามGooมา ได้ที่ปุ่มสีเขียวขวาล่างหน้าจอ
(ตอนนี้เนื้อหาคอร์สออนไลน์ยังไม่สมบูรณ์ครับ)
2. เปิดบัญชีเทรดกับ TMGM เพื่อรับสิทธิ์เข้าเรียนเขียนบอทโดย ตามGooมา x TMGM
สนใจเปิดบัญชีเทรด >> คลิกที่นี่
ขอบคุณครับ