Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ต้องการจะเขียน Order Delete pending order เมื่อไม้แรก TakeProfit ต้องทำยังไงครับ  (Read 8249 times)

Seksun Ch.

  • Newbie
  • *
  • Posts: 1
ผมต้องการ OrderDelete เมื่อไม้แรกวิ่งไปชน TP แล้วให้ Pending Order ที่เหลือทั้งหมดลบทิ้ง ไม่ทราบว่าจะเขียนยังไงครับ
มันต้องมีคำสั่งยังไงส่งไปครับ  คือผมไม่รู้ว่าจะต้องใช้คำสั่งยังไงเขียนยังไงครับ

   if(Ticket_R1 = OrderSend(Symbol(),OP_SELL,order_R1,EntryPrice_R1,5,SLPrice_R1,TP_R1, "Sell Order",MagicNumber,0,clrAliceBlue)> 0)
           {
            if(Ticket_R1 > 0)
              {
               if(Ticket_R1Limit = OrderSend(Symbol(),OP_SELLLIMIT,order_R2,EntryPrice_R1+PriceLevel_R2,5,SLPrice_R1,TP_R1,"Sell limit_1",MagicNumber,0,clrAliceBlue)== false)
                  Alert("Sell limit_1 Error: ",GetLastError());
               if(Ticket_R1Limit = OrderSend(Symbol(),OP_SELLLIMIT,order_R3,EntryPrice_R1+PriceLevel_R3,5,SLPrice_R1,TP_R1,"Sell limit_2",MagicNumber,0,clrAliceBlue)== false)
                  Alert("Sell limit_2 Error: ",GetLastError());
               if(Ticket_R1Limit = OrderSend(Symbol(),OP_SELLLIMIT,order_R4,EntryPrice_R1+PriceLevel_R4,5,SLPrice_R1,TP_R1,"Sell limit_3",MagicNumber,0,clrAliceBlue)== false)
                  Alert("Sell limit_3 Error: ",GetLastError());
               if(Ticket_R1Limit = OrderSend(Symbol(),OP_SELLLIMIT,order_R5,EntryPrice_R1+PriceLevel_R5,5,SLPrice_R1,TP_R1,"Sell limit_4",MagicNumber,0,clrAliceBlue)== false)
                  Alert("Sell limit_4 Error: ",GetLastError());
              }
           }
        }
     }
   if(OrderClosePrice()> OrderTakeProfit())
     {
      DeletePendingOrder(1);
     }
   if(OrderClosePrice()< OrderTakeProfit())
     {
      DeletePendingOrder(2);
     }

//-------------------------------------------------------------------------------//
void DeletePendingOrder(int type)
  {
   for(int i=0; i<OrdersTotal(); i++)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);                  // Select i = Mode Trand
      if(type==1)                                                                      // type = 1 is Open Order Buy
        {
         if(OrderType()==OP_BUYLIMIT)                                      // Check Order OP_BuyLimit
           {
            if(OrderDelete(OrderTicket())== false)                        // Command Delete Pending Order Buy limit
               Alert("OrderDelete Error: ",GetLastError());
           }
        }
      if(type==2)                                                                  // type = 1 is Open Order Sell
        {
         if(OrderType()==OP_SELLLIMIT)                                // Check Order OP_SellLimit
           {
            if(OrderDelete(OrderTicket())== false)                    // Command Delete Pending Order Sell limit             
               Alert("OrderDelete Error: ",GetLastError());             
           }
        }
     }
  }

ผลออกมามันลบเมื่อราคาไม้แรกไปถึง TP  แต่มันก็มี Pending order บางตัวที่ถูก Delete ออกไปตั้งแต่เปิด Order แล้วถูก Delete  ครับ
ไม่ทราบว่าต้องแก้ไขยังไงครับ   หรือมีวิธีเขียนลบ Pending Order อื่นไหมครับ



ขอรบกวนอีกหน่อยนะครับเพิ่งเริ่มหัดเขียน
ขอบคุณมากครับ
« Last Edit: มิถุนายน 06, 2022, 09:06:52 pm by Seksun Ch. »