Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ทำไม ea มัน buy อย่างเดียวครับ  (Read 6798 times)

jookcom

  • Newbie
  • *
  • Posts: 16
    • EA
ทำไม ea มัน buy อย่างเดียวครับ
« on: พฤษภาคม 17, 2013, 01:17:23 am »
พอดีหัดทำ ea พอtestออกมาเทรดฝั่ง buy ทางเดียวครับแก้ยังไงดี
Code: [Select]

extern double Lots = 0.01;
extern int Slippage = 3;
extern int TP = 10;
extern int SL = 100;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
 
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
 
  int Total;
  int Ticket;
 
 
 
  double Buy1_1 = iMA(NULL,0, 5, 0, MODE_EMA,PRICE_CLOSE,0);
  double Buy1_2 = iMA(NULL,0, 10, 0, MODE_EMA,PRICE_CLOSE,0);
  double Buy2_1 = iMA(NULL,0, 10, 0, MODE_EMA,PRICE_CLOSE,0);
  double Buy2_2 = iMA(NULL,0, 20, 0, MODE_SMA,PRICE_CLOSE,0);
  double Buy3_1 = iRSI(NULL,0, 14, PRICE_CLOSE,0);
  double Buy3_2 = 50;
  double Buy4_1 = iADX(NULL,0, 14, PRICE_CLOSE,MODE_PLUSDI,0);
  double Buy4_2 = iADX(NULL,0, 14, PRICE_CLOSE,MODE_MINUSDI,0);
  double Buy5_1 = iADX(NULL,0, 14, PRICE_CLOSE,MODE_MAIN,0);
  double Buy5_2 = 25;

  double Sell1_1 = iMA(NULL,0, 5, 0, MODE_EMA,PRICE_CLOSE,0);
  double Sell1_2 = iMA(NULL,0, 10, 0, MODE_EMA,PRICE_CLOSE,0);
  double Sell2_1 = iMA(NULL,0, 10, 0, MODE_EMA,PRICE_CLOSE,0);
  double Sell2_2 = iMA(NULL,0, 20, 0, MODE_SMA,PRICE_CLOSE,0);
  double Sell3_1 = iRSI(NULL,0, 14, PRICE_CLOSE,0);
  double Sell3_2 = 50;
  double Sell4_1 = iADX(NULL,0, 14, PRICE_CLOSE,MODE_PLUSDI,0);
  double Sell4_2 = iADX(NULL,0, 14, PRICE_CLOSE,MODE_MINUSDI,0);
  double Sell5_1 = iADX(NULL,0, 14, PRICE_CLOSE,MODE_MAIN,0);
  double Sell5_2 = 25;
//----
   Total=OrdersTotal();
   
   if(Total<1)
   {
   if (Buy1_1 > Buy1_2 && Buy2_1 > Buy2_2 && Buy3_1 > Buy3_2 && Buy4_1 > Buy4_2 && Buy5_1 > Buy5_2)
    {
     
      Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask,Slippage,Bid-Point*SL,Ask+Point*TP,"firstea",0,0,Green);
      OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
     }
     
     
    if (Sell1_1 < Sell1_2 && Sell2_1 < Sell2_2 && Sell3_1 < Sell3_2 && Sell4_1 < Sell4_2 && Sell5_1 > Sell5_2)
      {
     
      Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid,Slippage,Ask-Point*SL,Bid+Point*TP,"firstea",0,0,Red);
      OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
      }
    } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
ลายเซ็น

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ทำไม ea มัน buy อย่างเดียวครับ
« Reply #1 on: พฤษภาคม 17, 2013, 12:46:14 pm »
EA มันน่าจะสับสนที่เงื่อนไขครับ เพระาเป็นBug ของMQL4 เรื่องเงื่อนไขหลายๆๆอันให้ใส่วงเล็บครอบแบบนี้ครับ

 if (  ((Buy1_1 > Buy1_2) && (Buy2_1 > Buy2_2)) && ( ( Buy3_1 > Buy3_2) &&( Buy4_1 > Buy4_2)) &&( Buy5_1 > Buy5_2))

ให้มันตรวจสอบเงื่อนไขเป็นชั้นๆๆออกมาครับมันไม่เหมือนภาษาอื่นที่เขียน ยาวที่เดียวได้ครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: ทำไม ea มัน buy อย่างเดียวครับ
« Reply #2 on: พฤษภาคม 18, 2013, 08:40:14 am »
ใส่ SL กับ TP ผิดครับ  Ask-Point*SL,Bid+Point*TP

แก้เป็น Bid+Point*SL,Bid-Point*TP

jookcom

  • Newbie
  • *
  • Posts: 16
    • EA
Re: ทำไม ea มัน buy อย่างเดียวครับ
« Reply #3 on: พฤษภาคม 19, 2013, 02:45:17 am »
ขอบคุณทั้งสองท่านมากเลยครับได้แล้ว งมหาตั้งนานผิดที่เครื่องหมายนี่เอง
ลายเซ็น