traderider forex ไทย

รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

  • 6 replies
  • 1032 views

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

รบกวนผู้รู้ช่วยหน่อยครับ

ผมเขียนให้ buy หรือ sell แล้วออก pending order พวก limit ไว้อีก12 ออเดอร์ห่างกัน 100 จุด

โดยแทนตัวแปรเป็น
buy1-buy13
sell1-sell13

ต้องการให้ buy1หรือsell1 โดน tp
แล้วให้ปิดออเดอร์ทั้งหมดรวมถึง pending order ด้วย

ต้องเขียนยังไงครับ รบกวนหน่อยนะครับ
จนปัญญาจริงๆแล้วครับ

ขอบคุณครับ

Share Topic.

Follow Me.


traderider forex ไทย
traderider forex ไทย
traderider forex ไทย
*

ออนไลน์ iRuler

  • *
  • 1,225
  • 39

Re: รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

« ตอบกลับ #1 เมื่อ: 12, มกราคม 2019, 09:53:29 PM »
แนบโค้ดมาด้วยครับ

Re: รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

« ตอบกลับ #2 เมื่อ: 12, มกราคม 2019, 11:14:20 PM »
แนบโค้ดมาด้วยครับ


//+==================================================================+
//|                  Open Order Function Start 1                            |
//+==================================================================+

int ticket_buy1, ticket_sell1;
     if( OpenBuy == 1 )
     {
     if( Trend == 1 )
     
{ ticket_buy1 = OrderSend(Symbol(),OP_BUY,Lot,Ask_simple,0,Ask-(SL_Buy*xecn)*Point,Ask+(TP_Buy*xecn)*Point,"EA BUY START",580810395,0,Green);}
       
         }
     

     if( OpenSell == 1 )
     {     
     if( Trend == -1 )

{ticket_sell1 = OrderSend(Symbol(),OP_SELL,Lot,Bid_simple,0,Bid+(SL_Sell*xecn)*Point,Bid-(TP_Sell*xecn)*Point,"EA SELL START",580810395,0,Red);}
             
         }
 
//+==================================================================+
//|                  Open Order Function Start 2                             |
//+==================================================================+

   
  int ticket_buy2, ticket_sell2;
     if( OpenBuy == 1 )
     {
     if( Trend == 1 )
     
{ ticket_buy2 = OrderSend(Symbol(),OP_BUYLIMIT,Lot,Ask-1,0,Ask-(SL_Buy*xecn)*Point,Ask+(TP_Buy*xecn)*Point,"EA BUY START",580810395,0,Green);}
       
         }
     

     if( OpenSell == 1 )
     {     
     if( Trend == -1 )

{ticket_sell2 = OrderSend(Symbol(),OP_SELLLIMIT,Lot,Bid+1,0,Bid+(SL_Sell*xecn)*Point,Bid-(TP_Sell*xecn)*Point,"EA SELL START",580810395,0,Red);}
             
         }

.
.
.
.
.
.
.

//+==================================================================+
//|                  Open Order Function Start 14                             |
//+==================================================================+

   
  int ticket_buy14, ticket_sell14;
     if( OpenBuy == 1 )
     {
     if( Trend == 1 )
     
{ ticket_buy14 = OrderSend(Symbol(),OP_BUYLIMIT,Lot,Ask-12.5,0,Ask-(SL_Buy*xecn)*Point,Ask+(TP_Buy*xecn)*Point,"EA BUY START",580810395,0,Green);}
       
         }
     

     if( OpenSell == 1 )
     {     
     if( Trend == -1 )

{ticket_sell14 = OrderSend(Symbol(),OP_SELLLIMIT,Lot,Bid+12.5,0,Bid+(SL_Sell*xecn)*Point,Bid-(TP_Sell*xecn)*Point,"EA SELL START",580810395,0,Red);}
             
         }                                                                                     
//+==================================================================+
//|                 check order close all                            |
//+==================================================================+

 
  {{ for(int F=0;F<OrdersTotal();F++);

   double open;
 
  OrderSelect(F,SELECT_BY_POS,MODE_TRADES)==true;
   
   
   open = OrderOpenPrice() ;
   
   if (Ask == (open + TP_Buy) );
   closeall();}
   
   return(F);
   }

 
 
  //------------------------------------------------------------------------------   
        return(0);
  }
 
  //+==================================================================+
//|                            End function                             |
//+==================================================================+

 
//+==================================================================+
//|                          Close all                             |
//+==================================================================+

  void closeall()

  {
         int total = OrdersTotal() ;
         for(int i=0;i<total;i++)
         
            {
               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
               
                  int type = OrderType();
                  bool result = false;
                  switch(type)
                 
      {
         case OP_BUY : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
               
               break;
         
         case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
               
               break;     
         
         case OP_BUYLIMIT : result =OrderDelete(OrderTicket());
               
               break;
               
         case OP_SELLLIMIT : result =OrderDelete(OrderTicket());
               
               break;
               
       }
             
           
           }
     
     

Re: รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

« ตอบกลับ #3 เมื่อ: 12, มกราคม 2019, 11:29:21 PM »
รบกวนช่วยแนะนำตรงนี้ด้วยครับ

ถ้าเปิด BUY + BUYLIMIT แล้ว ถึงแม้จะมีสัญญาณบายอีกห้ามบายเพิ่มจนกว่าออเดอร์เดิมจะถูกปิด แต่เซลได้
ถ้าเปิด SELL+SELLLIMIT แล้ว ถึงแม้จะมีสัญญาณเซลอีกห้ามเซลเพิ่มจนกว่าออเดอร์เดิมจะถูกปิด แต่บายได้

ชอบคุณครับ

*

ออนไลน์ iRuler

  • *
  • 1,225
  • 39

Re: รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

« ตอบกลับ #4 เมื่อ: 14, มกราคม 2019, 12:04:13 PM »
code ไม่สมบูรณ์ compile ไม่ผ่านครับ

รบกวนช่วยแนะนำตรงนี้ด้วยครับ

ถ้าเปิด BUY + BUYLIMIT แล้ว ถึงแม้จะมีสัญญาณบายอีกห้ามบายเพิ่มจนกว่าออเดอร์เดิมจะถูกปิด แต่เซลได้
ถ้าเปิด SELL+SELLLIMIT แล้ว ถึงแม้จะมีสัญญาณเซลอีกห้ามเซลเพิ่มจนกว่าออเดอร์เดิมจะถูกปิด แต่บายได้

ชอบคุณครับ

โค๊ด
int OnTick()
  {
  if(มีสัญญาณ BUY && !CheckOrder(OP_BUY) && !CheckOrder(OP_BUYLIMIT))
  {
  // open buy here
  }
 
  if(มีสัญญา SELL && !CheckOrder(OP_SELL) && !CheckOrder(OP_SELLLIMIT))
  {
  // open sell here
  }
 
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CheckOrder(int orderType)
  {
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
           {
            if(OrderType()==orderType)
               return true;
           }
        }
     }
   return false;
  }

*

ออนไลน์ iRuler

  • *
  • 1,225
  • 39

Re: รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

« ตอบกลับ #5 เมื่อ: 14, มกราคม 2019, 12:12:48 PM »
เอาหลักการคร่าวๆ ไปคิดดูนะครับ

-ตอนส่งคำสั่ง order buy1 ให้ใส่ comment ว่า buy1
-ทุกๆ tick ให้เช็คว่า มีจำนวน order ที่เปิดอยู่ ลดลงหรือไม่ ถ้าลดลง แสดงว่ามี order ถูกปิด (ไม่ว่าจะ tp/sl)
-ถ้าจำนวน order ลดลง ให้เช็คว่า order ที่โดนปิดล่าสุด มี comment ว่า buy1 หรือไม่ ถ้าใช่ก็ ทำ function closeall()

Re: รบกวนหน่อยครับ ต้องการให้ EA Close all ทุกๆออเดอร์

« ตอบกลับ #6 เมื่อ: 16, มกราคม 2019, 09:38:51 PM »
ขอบคุณมากๆเลยครับ

Tags:
 

เครื่องมือเทรด Forex

ข่าว Forex กราฟ Forex EURUSD GBPUSD GBPJPY ตารางข่าว Forex

เครื่องมือเทรดทองคำ

ราคาทอง วันนี้ ราคาทอง ย้อนหลัง SPDR ล่าสุด กราฟราคาทองคำ วิเคราะห์ ราคาทอง ข่าว ราคาทองคำ ข่าว ราคาน้ำมัน

โบรคเกอร์ Forex

XM Exness FBS Nordfx Pepperstone Land-FX Admiral Markets

Tickmill