สอนสร้างและใช้ EA

หัวข้อ

    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);

     

    หมวด: ออเดอร์

    การเปิดออเดอร์ (OrderSend)

    ใน 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 ตามราคาเพื่อรักษากำไร) หรือเรียกดูผลกำไร - ขาดทุนของออเดอร์นั้น ๆ 

     

     

    การปิดออเดอร์ (OrderClose)

    หลังจากที่เราได้ทำการเปิดออเดอร์ไปแล้ว และต้องการสั่ง ปิดออเดอร์ ทันทีเมื่อตรงเงื่อนไขบางอย่าง เช่น

    ขาดทุนเกิน 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

    สนใจเปิดบัญชีเทรด >> คลิกที่นี่

     

    ขอบคุณครับ