Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: การเรียกข้อมูลจาก Order ที่เราทำการปิดไปแล้ว  (Read 20031 times)

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ผมเขียนหัวข้อมีสมาชิกหลายคนถามเกี่ยวกับการเรียกข้อมูลของ 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 แล้วไปทำงานตามที่เราต้องการต่อไป
 }

}
 

ผมขอจบหัวข้อนี้แต่เพียงเท่านี้นะครับ

lvlajung

  • Newbie
  • *
  • Posts: 1
ขอบคุณครับ ได้ความรู้มากขึ้นเลยครับ