Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: หัดเขียนครับ ไม่รู้ว่าerror ตรงไหนครับ  (Read 12063 times)

toonrx09

  • Newbie
  • *
  • Posts: 36
extern double Lots = 0.1;
extern double TP = 0;
extern double gap = 0;

int start()
  {
    if(OrdersTotal()<1)
   
    OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"Toongold",0,0,Green);
   
       if(OrdersTotal()>0)
           OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
             double a=OrderOpenPrice();
     
         if (Ask >= a + gap)
          {
           OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"Toongold",0,0,Green);
           }
               
      for(int i=0;i<OrdersTotal();i++)
        {
            OrderSelect( i,SELECT_BY_POS,MODE_TRADES) ;
            double b=OrderTakeProfit();
             double c=gap*Point;
            double d=OrderOpenPrice();
            if ( b = 0
                   {
                     OrderModify(OrderTicket(), OrderOpenPrice(),0, d+c, 0,Red);
                       return();
                        }
           
         }   
return(0)     
   

}

พอcompile มันขึ้นข้อความ '\end_of_program' - unbalanced left parenthesis   C:\Program Files\MetaTrader4 - RoboForex2\experts\toongold.mq4 (37, 2)
ทำยังไงก็ไม่ได้  ช่วยด้วยครับ
กำลังหัดลองเขียนครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
เอาไปเปรียบเทียบดูครับ

extern double Lots = 0.1;
extern double TP = 0;
extern double gap = 0;

int start()
  {
    if(OrdersTotal()<1)
   
    OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"Toongold",0,0,Green);
   
       if(OrdersTotal()>0)
       
           OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
             double a=OrderOpenPrice();
       
         if (Ask >= a + gap)
          {
           OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"Toongold",0,0,Green);
           }
               
      for(int i=0;i<OrdersTotal();i++)
        {
            OrderSelect( i,SELECT_BY_POS,MODE_TRADES) ;
            double b=OrderTakeProfit();
             double c=gap*Point;
            double d=OrderOpenPrice();
            if ( b == 0 )
                   {
                     OrderModify(OrderTicket(), OrderOpenPrice(),0, d+c, 0,Red);
                       return(0);
                        }
           
         }   
return(0) ;   
   

}

toonrx09

  • Newbie
  • *
  • Posts: 36
เจอแล้วครับ...

ขอถามเป็นความรู้ครับ return ใส่ 0 ในวงเล็บกับไม่ใส่ มีความหมายแตกต่างกันยังไงครับ

ขอบคุณมากๆครับ... ;D

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
เจอแล้วครับ...

ขอถามเป็นความรู้ครับ return ใส่ 0 ในวงเล็บกับไม่ใส่ มีความหมายแตกต่างกันยังไงครับ

ขอบคุณมากๆครับ... ;D

ใส่เพื่อให้เป็นไปตามกฏของการเขียนโปรแกรมครับ เพราะ ฟังก์ชั่น start เรากำหนดให้เป็น int ต้องมีการคืนค่าออกมาทุกครั้งจะเป็นค่าอะไรก็ได้ที่ตรงกับชนิดของฟังก์ชั่นครับ ถ้าไม่ได้ใส่ก็เท่ากับว่าไม่มีการคืนค่าออกก็จะไม่สามารถ compile ผ่านครับ ถ้าจะไม่ต้องการให้ return ค่าออกมา เราต้องกำหนดให้ฟังก์ชั่นเป็น void ครับ