Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: [ถาม] การ Close ไม่เต็ม Lot  (Read 13555 times)

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
[ถาม] การ Close ไม่เต็ม Lot
« on: กรกฎาคม 31, 2012, 11:02:53 am »
สมมุติว่าอีเอผมเก็บค่า ticket ไว้ตอนเปิดออเดอร์

ticket = OrderSend(....,0.1.,,,);

สมมุติได้ ticket เป็น 1 แล้วต่อไปผมจะปิดครึ่งลอต

OrderClose(.ticket,0.05.,,,);

พอปิดออเดอร์ไป ใน mt4 มันจะสร้าง Order ID ใหม่ขึ้นมา

ถามว่าอีก 0.05 ลอตที่ผมยังไม่ได้ปิด ผมจะเอาเลข OrderID มาจากไหนครับ  โดยไม่ต้องไปวนลูปหาเอา

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: [ถาม] การ Close ไม่เต็ม Lot
« Reply #1 on: กรกฎาคม 31, 2012, 12:37:58 pm »
ใช้วิธีระบุตำแหน่งของ order ลงไปใน OrderSelect ครัย กล่าคือ หลังจากที่คุณสั่งปิด order ไป ครึ่ง lot แล้ว MT4 มันต้องเปิด order ใหม่ให้คุณ เท่ากับว่าจำนวน order  ทั้งหมดของคุณ ยังเท่าเดิมแต่ที่เปลี่ยนไปคือ Orderticket ของ Order  สุดท้ายต้องมากกว่าของเก่า คุณก็แค่ระบุตำแหน่งลงไปใน OrderSelectเพื่อเรียกค่าออกมาใช้เลยครับ
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
int temp=OrderTicket();
จากนั่นเอา  temp ตรวจสอบกับ  ticket ตัวสุดท้ายของที่คุณเคยบันทึกไว ถ้ามากกว่า ก็คือ ticket ใหม่ที่ได้ก็นำไปใช้งานต่อได้ ครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: [ถาม] การ Close ไม่เต็ม Lot
« Reply #2 on: กรกฎาคม 31, 2012, 12:44:08 pm »
ขอบคุณครับ  วิธีนี้มีโอกาสพลาดรึเปล่าครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: [ถาม] การ Close ไม่เต็ม Lot
« Reply #3 on: กรกฎาคม 31, 2012, 01:14:07 pm »
ขอบคุณครับ  วิธีนี้มีโอกาสพลาดรึเปล่าครับ
หาก mt4 ปิด order แล้วเปิดใหม่ขึ้นมาใหม่  และ ยังไม่มีการเปิด Order ต่อไป ค่า Orderticket ของ Order ล่าสุดต้องเป็นค่าที่มากที่สุดครับ ค่าที่ออกมายังไงก็เป้นค่าที่มากสุดครับ แต่ถ้าจะพลาดคือ ช่วงที่ MT4 ยังเปิด order ไม่เสร็จแต่ EA เราทำงานต่อ นี้หละครับ ยังไง ตอนสั่ง close order ครึ่ง lots ก็หน่วยเวลารอ Mt4 เปิด order ใหม่ด้วยนะครับ