Object ใน MT4 ไม่ว่าจะเป็น trendline เส้นแนวตั้ง แนวนอน แนว Fibo รวมถึง Text ข้อความแบบต่างๆ เหล่านั้น เราสามารถเขียนโปรแกรมให้สร้าง object เหล่านั้นได้ด้วยฟังค์ชัน ObjectCreate รูปแบบการเรียกใช้ฟังค์ชั่นเป็นดังนี้ครับ
bool ObjectCreate(string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0)
- name – ชื่อของ Object
- type – ชนิดของ Object ที่ต้องการสร้าง เช่น OBJ_HLINE เป็นการสร้างเส้นแนวนอน สามารถดูรายละเอียด Object Type อื่นได้ตามลิงค์นี้ครับ
- window – กำหนดให้ Object ถูกสร้างขึ้นที่หน้าต่างไหน โดยหน้าต่างหลักที่แสดงราคาคู่เงิน จะเป็น 0
- time1 – ตำแหน่งบนแกนเวลา (แกน X) ของพิกัดที่ 1
- price1 – ตำแหน่งบนแกนราคา (แกน Y) ของพิกัดที่ 1
- time2 – ตำแหน่งบนแกนเวลา (แกน X) ของพิกัดที่ 2
- price2 – ตำแหน่งบนแกนราคา (แกน Y) ของพิกัดที่ 2
- time3 – ตำแหน่งบนแกนเวลา (แกน X) ของพิกัดที่ 3
- price3 – ตำแหน่งบนแกนราคา (แกน Y) ของพิกัดที่ 3
ยกตัวอย่างเช่น หากเราต้องการสร้างเส้นแนวนอน (Horizontal Line) ที่ราคา High ของแท่งราคาที่ 6 เราสามารถเขียนได้ดังนี้
ObjectCreate("MyHLine",OBJ_HLINE,0,0,High[5]) ;
ความหมายคือ สร้าง Object โดยตั้งชื่อ objectนี้ ว่า MyHLine , Object นี้เป็นแบบ OBJ_HLINE (เส้นแนวนอน) สร้างในหน้าต่างที่ 0 (หน้าต่างราคาหลัก) , พิกัดแกวเวลา เป็น 0 เพราะเป็นเส้นแนวนอนขีดตลอดทุกช่วงเวลา พิกัดแกนราคา เป็น ค่า High ของแท่งเทียนที่ 6 (เรียก High[5] เพราะแท่งเทียนปัจจุบันเป็นแท่งที่ 0) ผลลัพธ์ของโค๊ดนี้จะได้ ตามรูปครับ (เส้นแนวนอน สีแดง ที่ระดับราคา High ของแท่งเทียนที่ 6)
อีกตัวอย่างนะครับ ถ้าเราต้องการสร้าง Trendline ที่ลากจากจุด Low แท่งที่ 14 ไปยัง Low ของแท่งที่ 2 เราสามารถเขียนโค๊ดได้แบบนี้ครับ
ObjectCreate("MyTrend",OBJ_TREND,0,Time[13],Low[13],Time[1],Low[1]) ;
ความหมายคือ สร้าง Object ที่ชื่อว่า MyTrend โดยเป็น object ประเภท OBJ_TREND (เส้น Trendline) สร้างในหน้าต่าง 0 (หน้าต่างราคาหลัก ) โดยจุดเริ่มต้น Trendline อยู่ที่พิกัดที่1 แกน X เป็น Time[13] (วันเวลาของแท่งที่14) แกน Y เป็น Low[13] (ราคา low ของแท่ง 14) ลากผ่านพิกัดที่ 2 แกน X เป็น Time[1] แกน Y เป็น Low[1] จะได้ผลลัพธ์ตามรูปครับ
ด้านล่างนี้เป็น Object Type แบบอื่นๆที่เราสามารถ create ขึ้นมาได้ครับ
Object Type | Value | คำอธิบาย |
---|---|---|
OBJ_VLINE | 0 | เส้นแนวตั้ง ระบุแค่แกนเวลาในพิกัดแรกเท่านั้น แกนราคาไม่ต้องระบุ ใส่เป็น 0 |
OBJ_HLINE | 1 | เส้นแนวนอน ระบุแค่แกนราคาในพิกัดแรกเท่านั้น แกนเวลาไม่ต้องระบุใส่เป็น 0 |
OBJ_TREND | 2 | เส้นแนวโน้ม Trend line ต้องระบุ 2 พิกัด Time1 Price1 Time2 Price2 |
OBJ_TRENDBYANGLE | 3 | เส้น Trend line โดยระบุองศา ระบุข้อมูล 2 พิกัด หรือ อาจจะระบุเพียง 1พิกัด แล้วตั้งค่าองศาการเอียง โดยใช้ฟังค์ชั่น Objectset() แก้ไขค่า property องศาของ Object ที่ OBJPROP_ANGLE |
OBJ_REGRESSION | 4 | เส้น Regression Channel ระบุเพียง 2 พิกัด เฉพาะแกนเวลา Time 1 Time2 ส่วน แกนราคา ละเป็น 0 |
OBJ_CHANNEL | 5 | Equidistant channel ต้องระบุ ทั้ง 3 พิกัด |
OBJ_STDDEVCHANNEL | 6 | Standard deviation channel ระบุเพียง 2 พิกัด เฉพาะแกนเวลา Time 1 Time2 ส่วน แกนราคา ละเป็น 0 |
OBJ_GANNLINE | 7 | Gann line. ระบุ 2 พิกัด แต่แกนราคาในพิกัดที่ 2 ไม่ต้องระบุ ใส่เป็น 0 |
OBJ_GANNFAN | 8 | Gann fan. Uses 2 coordinates, but price part of the second coordinate is ignored. To set the ratio between the price and time scales (OBJPROP_SCALE property) use ObjectSet() function. |
OBJ_GANNGRID | 9 | Gann grid. Uses 2 coordinates, but price part of the second coordinate is ignored. To set the ratio between the price and time scales (OBJPROP_SCALE property) use ObjectSet() function. |
OBJ_FIBO | 10 | Fibonacci retracement ระบุ 2 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่า property อื่นๆ เช่นจำนวน Level ที่ต้องการวาด (OBJPROP_FIBOLEVELS ) ค่าสัดส่วน Fibo แต่ละ level (OBJPROP_FIRSTLEVEL+n ) |
OBJ_FIBOTIMES | 11 | Fibonacci time zones ระบุ 2 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่า property อื่นๆ เช่นจำนวน Level ที่ต้องการวาด (OBJPROP_FIBOLEVELS ) ค่าสัดส่วน Fibo แต่ละ level (OBJPROP_FIRSTLEVEL+n ) |
OBJ_FIBOFAN | 12 | Fibonacci fan ระบุ 2 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่า property อื่นๆ เช่นจำนวน Level ที่ต้องการวาด (OBJPROP_FIBOLEVELS ) ค่าสัดส่วน Fibo แต่ละ level (OBJPROP_FIRSTLEVEL+n ) |
OBJ_FIBOARC | 13 | Fibonacci arcs ระบุ 2 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่า property อื่นๆ เช่นจำนวน Level ที่ต้องการวาด (OBJPROP_FIBOLEVELS ) ค่าสัดส่วน Fibo แต่ละ level (OBJPROP_FIRSTLEVEL+n ) |
OBJ_EXPANSION | 14 | Fibonacci expansions. ระบุ 3 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่า property อื่นๆ เช่นจำนวน Level ที่ต้องการวาด (OBJPROP_FIBOLEVELS ) ค่าสัดส่วน Fibo แต่ละ level (OBJPROP_FIRSTLEVEL+n ) |
OBJ_FIBOCHANNEL | 15 | Fibonacci channel. ระบุ 3 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่า property อื่นๆ เช่นจำนวน Level ที่ต้องการวาด (OBJPROP_FIBOLEVELS ) ค่าสัดส่วน Fibo แต่ละ level (OBJPROP_FIRSTLEVEL+n ) |
OBJ_RECTANGLE | 16 | สี่เหลี่ยม ระบุ 2 พิกัด |
OBJ_TRIANGLE | 17 | สามเหลี่ยม ระบุ 3 พิกัด |
OBJ_ELLIPSE | 18 | วงรี ระบุ 2 พิกัด |
OBJ_PITCHFORK | 19 | Andrews pitchfork ระบุ 3 พิกัด |
OBJ_CYCLES | 20 | Cycle Lines ระบุ 2 พิกัด |
OBJ_TEXT | 21 | ข้อความ Text ระบุพิกัดเพียง 1 พิกัด ใช้ฟังค์ชั่น ObjectSetText() ในการแก้ไขข้อความใน Text |
OBJ_ARROW | 22 | ลูกศร รวมถึงสัญลักษณ์ Symbol อื่นๆ ระบุเพียง 1 พิกัด ใช้ฟังค์ชั่น ObjectSet() ในการตั้งค่าเป็นสัญลักษณ์ Symbol แบบอื่นๆ ที่ค่าproperty OBJPROP_ARROWCODE |
OBJ_LABEL | 23 | Text label. ระบุตำแหน่งของ Text Label โดยใช้ฟังค์ชั่น ObjectSet() แก้ไขค่า property ต่างๆ (OBJPROP_CORNER, OBJPROP_XDISTANCE, OBJPROP_YDISTANCE) ใช้ฟังค์ชั่น ObjectSetText() ในการแก้ไขข้อความใน Text Label |
ยังไงเพื่อนๆลองฝึกเขียน object อื่นๆเล่นดูนะครับ ได้ผลยังไง ติดปัญหาตรงไหนพูดคุยแลกเปลี่ยนกันได้นะครับ.. Happy Coding ครับ