Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ขอความช่่วยเหลือ Delete Pending Order คับ  (Read 13930 times)

tanachart

  • Newbie
  • *
  • Posts: 3
ขอความช่่วยเหลือ Delete Pending Order คับ
« on: กรกฎาคม 25, 2015, 05:41:51 pm »
คือความต้องการของผม คือ การที่เปิด BuyStop แล้ว ภายใน 16 bar ไม่เทรด ให้ทำการ Delete Pending Order นั้น ทิ้งครับ
หรือ อาจจะเขียนว่าให้ เปิด BuyStop แล้ว ภายใน 4 ชั่วโมง (หรือH4 )ไม่ทำการเทรด ให้ทำการ Delete Order


ตอนแรกผมเขียน


void ChkDelete(){


     

           
     if(bars+16 == Bars){
     if(CountOrder(OP_BUYSTOP) == 0){
        DeleteOrder(OP_BUYSTOP);
     }
     if(CountOrder(OP_SELLSTOP) == 0){
        DeleteOrder(OP_SELLSTOP);
     }
 }
   

}



   
   ChkDelete();
  if(bars != Bars){
 
   if(Lips > Jaws   &&   LipsSH < JawsSH  && Sto > StoHigh && StoSH > StoHigh   ){
      if(CountOrder(OP_BUY)<MaxOrder){
         //OpenBuy();
         OpenBuystop();
      }
   }
 
   if(Lips < Jaws   &&   LipsSH > JawsSH  &&  Sto < StoLow  && StoSH < StoLow ){
      if(CountOrder(OP_SELL)<MaxOrder){
         //OpenSell();
         OpenSellstop();
      }
   }
   
   
 
      bars = Bars;
 
  }       




แล้วมัน Delete แค่ Barเดียว อะคับ



อยากกำหมดให้ได้หลายBar หรือ Delete Order ตอนครบเวลา H4 แบบนี้อะคับ ต้องเขียนว่ายังไงบ้างครับ ผม งง มากมายเลยอะคับ



ขอบคุณครับ (ผมมือใหม่)

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ขอความช่่วยเหลือ Delete Pending Order คับ
« Reply #1 on: กรกฎาคม 25, 2015, 06:36:21 pm »
ถ้าต้องการ Delete Order ตอนครบเวลา H4

ใช้  OrderSelect วน loop  +OrderOpenTime() เรียกเวลาตอนเปิด Order ให้มาเปรียบเทียบกับเวลา ปัจจุบัน ใช้ TimeCurrent() แล้วนำเวลาตั้ง 2 ค่ามาหักลบกันถ้ามากกว่า 4 ชั่วโมงก็สั่งปิด order เลย

tanachart

  • Newbie
  • *
  • Posts: 3
Re: ขอความช่่วยเหลือ Delete Pending Order คับ
« Reply #2 on: กรกฎาคม 26, 2015, 11:29:19 am »
ขอรบกวนด้วยได้ไหมคับ Admin ว่าต้องเขียนแบบไหน


ผมนึกไม่ออกจริงๆ คับ  ขอบคุณครับ

sAcIw

  • Newbie
  • *
  • Posts: 20
Re: ขอความช่่วยเหลือ Delete Pending Order คับ
« Reply #3 on: กรกฎาคม 26, 2015, 08:33:46 pm »
bars ต้องประกาศที่ global ด้วยนะ
Code: [Select]
void ChkDelete(){           
     if(bars+16 == Bars){
     if(CountOrder(OP_BUYSTOP) > 0){
        DeleteOrder(OP_BUYSTOP);
     }
     if(CountOrder(OP_SELLSTOP) > 0){
        DeleteOrder(OP_SELLSTOP);
     }
 }

tanachart

  • Newbie
  • *
  • Posts: 3
Re: ขอความช่่วยเหลือ Delete Pending Order คับ
« Reply #4 on: กรกฎาคม 27, 2015, 01:14:23 am »
ประกาศแบบไหนครับ คือผมลองทำEA เอง โโยไม่ค่อยมีความรู้ด้านนี้เท่าไร เลยอยากให้กูรูเข้ามาช่วยอะคับ


Bar ตรงนั้น เหมือนกะว่าจะ+ไม่เกิน 1 อะคับ นอกนนั้น จะไม่เข้าเงื่อนไข ก็เลยไม่รู้จะทำยังไงให้ คำนวนการ Delete Order อะ ผมยังไม่รู้ว่าจะเขียงยังไง


เลยอยากรบกวนพี่ๆเข้ามาช่วยผมหน่อยอะครับ   


ยังไง ถ้าได้เป็น Codeมาเลย ผมจะขอบพระคุณอยากยิ่งเลยครับ ... ขอบคุณมากครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ขอความช่่วยเหลือ Delete Pending Order คับ
« Reply #5 on: กรกฎาคม 27, 2015, 12:50:25 pm »
int start()
  {
       for(int i=0 ;i<OrdersTotal();i++)
       {
        int a= OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(TimeDay(TimeCurrent())- TimeDay(OrderOpenTime()) > 14400)
         {
             if(OrderType()==OP_BUYSTOP)
             {
              a= OrderDelete(OrderTicket());
             }
         }
       
       
       }
   return (0);
  }