Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: เกี่ยวกับการสั่งให้ปิด Order พร้อมกันยกชุดในกลุ่ม magicnumber  (Read 11077 times)

veronika

  • Newbie
  • *
  • Posts: 44
Quote
for(i=0;i<=OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
            if(OrderType()==OP_BUY){
               OrderClose(OrderTicket(),OrderLots(),Bid,3,0,Lime);
            }
            if(OrderType()==OP_SELL){
               OrderClose(OrderTicket(),OrderLots(),Ask,3,0,Red);
            }
         }
      }

ใช้แบบนี้มันจะปิดไม่หมดครับ โดยที่จะมีเงื่อนไขในการเช็คอีกทีนึงก่อน กลัวว่าหากปิดไปแล้วมันปิดไม่หมดทีเดียว จะทำให้เงื่อนไขเปลี่ยนแปลง

เช่น เช็ค Profit รวมของทั้งชุดว่า ถ้าเกิน 10$ ให้ปิดทั้ง ชุด magicNumber 123 ประมาณนี้ครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
แก้ง่ายนิดเดียวครับ
while(OrdersTotal() >0 )
{
for(i=0;i<=OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
            if(OrderType()==OP_BUY){
               OrderClose(OrderTicket(),OrderLots(),Bid,3,0,Lime);
            }
            if(OrderType()==OP_SELL){
               OrderClose(OrderTicket(),OrderLots(),Ask,3,0,Red);
            }
         }
      }

  Sleep(2000); // ใส่ให้มันรอการประมวลผลจาก โบรเกอร์สักนิดหนึ่งเพราะที่สั้งไปแล้วอาจกำลังปิดอยู่ จากนั่น มันจะวน loop while จนกว่า จะไม่มี Order เหลือถึงจบการทำงาน

}

veronika

  • Newbie
  • *
  • Posts: 44
ขอบคุณครับ ปกติใช้แต่ for loop ลืมไปเลย ^^