Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: EA เปิดออเดอร์หลายออเดอร์ในแท่งเทียนเดียวกันต้องแก้ยังไงครับ มือใหม่หัดเขียนครับ  (Read 6539 times)

StickeT

  • Newbie
  • *
  • Posts: 1
ผมได้ลองฝึกเขียน EA ครับ แล้วทีนี้ในหนึ่งแท่งเทียนที่เป็นแท่งยาวๆ EA มันเปิดออเดอร์หลายครั้งในแท่งเดียวครับ อยากให้เปิดแค่ครั้งเดียวต้องแก้ยังไงหรือครับ รบกวนผู้รู้ด้วยครับ ผมมือใหม่หัดเขียนเรียนโค้ตครับ อาจมีอะไรที่ไม่ทราบอีกมาก

ผมได้เขียนคำสั่งเปิดออเดอร์ไว้แบบนี้ครับ สร้างเป็น function เอาไว้

void OpenBuy(){
   double sl =Ask-SL*Point;
   double tp =Ask+TP*Point;
   OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,sl,tp,"My order",MagicNumber,0,clrGreen);
}

void OpenSell(){
   double sl =Bid+SL*Point;
   double tp =Bid-TP*Point;
   OrderSend(Symbol(),OP_SELL,LotSize,Bid,3,sl,tp,"My order",MagicNumber,0,clrRed);
}

และผมได้สร้างตัวนับออเดอร์เอาไว้แล้วครับ สร้างเป็น function เอาไว้

int CountOrder(int type){

   int CntOrder = 0;
   
   for(int i=0;i<OrdersTotal();i++){
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderType() == type && OrderMagicNumber()== MagicNumber){
         if(OrderSymbol() == Symbol()){
            CntOrder++;
         }
      }
   }
   return(CntOrder);
}

ขอรบกวนทุกท่านด้วยครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
ตัวอย่างครับ

void countorder()
{

   int total = OrdersTotal();
   for (int pos = 0; pos < total; pos++)
   {
      if ( OrderSelect( pos, SELECT_BY_POS, MODE_TRADES ) )
      if ( OrderSymbol() == Symbol() && OrderMagicNumber() == Magic )
      {
         if( OrderType()== OP_BUY )
         {
          if(bcount==0) { FirstBuy = OrderOpenPrice(); }
          bcount++;
          LastBuy=OrderOpenPrice();
          LastBuyTime=OrderOpenTime();
          TotalProfitBuy += OrderProfit(); 
         }
         
         else if( OrderType()== OP_SELL )
         {
          if(scount==0) { FirstSell = OrderOpenPrice(); }
          scount++;
          LastSell=OrderOpenPrice();
          LastSellTime=OrderOpenTime();
          TotalProfitSell += OrderProfit(); 
         }
         
         
        // BarFromOpen=iBarShift(Symbol(),PERIOD_M15,OrderOpenTime());       
             
         
      }
   }
}