EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: StickeT on กรกฎาคม 20, 2018, 10:56:48 am

Title: EA เปิดออเดอร์หลายออเดอร์ในแท่งเทียนเดียวกันต้องแก้ยังไงครับ มือใหม่หัดเขียนครับ
Post by: StickeT on กรกฎาคม 20, 2018, 10:56:48 am
ผมได้ลองฝึกเขียน 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);
}

ขอรบกวนทุกท่านด้วยครับ
Title: Re: EA เปิดออเดอร์หลายออเดอร์ในแท่งเทียนเดียวกันต้องแก้ยังไงครับ มือใหม่หัดเขียนครับ
Post by: D_Diamond on กรกฎาคม 24, 2018, 02:57:03 pm
ตัวอย่างครับ

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());       
             
         
      }
   }
}