ผมเขียนหัวข้อมีสมาชิกหลายคนถามเกี่ยวกับการเรียกข้อมูลของ Order ที่ถูกปิดไปแล้วขึ้นมาใช้งาน
การที่เราจะเรียก ข้อมูลของ Order ที่ถูกปิดไปแล้วขึ้นมาใช้งานได้นั่นเราต้องทำให้ EA รู้ก่อนว่าเราต้องการข้อมูลจาก History ซึ้งสามารถ
ทำได้โดยการระบุลงไปที่ฟังก์ชั่น OrderSelect ให้เป็น MODE_HISTORY
ตัวอย่างเช่น
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
เป็นการระบุให้ EA รู้ว่าเราต้องการดึงข้อมูลของ Order ที่เราปิดเป็น Order สุดท้ายขึ้นมาใช้งาน
โดยที่ฟังก์ชั่น OrdersHistoryTotal() เป็นฟังก์ชั่นที่ใช้นับจำนวน order ที่เราปิดไปทั้งหมดตามช่วงเวลาที่เราสั่งให้ MT4 แสดงข้อมูล
ของ Order ย้อนหลัง แล้วที่มีการ -1 เพราะ Order แรกจะเริ่มจาก 0 ดังนั่นค่าที่ได้ต้องลบออกไป 1 เสมอ
เมื่อได้สั่งให้ EA รู้ว่า Order ที่เราต้องการเรียกใช้เป็น Order ล่าสุดเราต้องการข้อมูลอะไรก็ใช้ หลักการเดียวกับการดึงค่าฟังก์ชั่นธรรมดาออกมาเลยเช่น
double lastlot=OrderLots(); // ดึงค่าจำยจำนวน lot
double lastprofit=OrderProfit(); // ดึงค่า Profit
double lastopenprice=OrderOpenPrice(); //ดึงค่าราคาเปิด
double lastcloseprice=OrderClosePrice(); //ดึงค่าราคาปิด
int magic =OrderMagicNumber(); //ดึง magic number ขึ้นมามีประโยชน์เวลาใช้ตรวจสอบว่าเป็น order ที่เปิดโดย EA ตัวไหน
เมื่อได้ค่ามาอย่างนี้แล้วแต่เป็นแค่ค่าของ Order ตัวสุดท้ายตัวเดียวถ้าเราอยากได้ตัวอื่นๆๆด้วยจะทำยังไงก็ต้องใช้ for เข้ามาช่วย
for(int i= OrdersHistoryTotal()-1;i>0;i--) // จากคำสั่งนี้โปรแกรมจากทำการวนอ่านค่าทุก order ที่เราปิดไปในช่วงเวลาที่เรียกแสดงขึ้นมา
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
{
//ตรงนี้เราสามารถใส่เงื่อนไขตรวจสอบได้เลยครับว่าให้ค้นหาจากอะไรเช่น ชนิดการเปิด order ,profit , magic เมื่อมันพบสิ่งที่ขึ้นหาแล้วเราอาจจะกำไรหนดให้ i=0 ไปเลยก็ได้ครับเพื่อให้มันจบ loop แล้วไปทำงานตามที่เราต้องการต่อไป
}
}
ผมขอจบหัวข้อนี้แต่เพียงเท่านี้นะครับ