EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: chartwat on พฤษภาคม 13, 2014, 02:55:28 pm

Title: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: chartwat on พฤษภาคม 13, 2014, 02:55:28 pm
ผมเขียนแบบง่าย ๆ เลย ครับ รับค่า input มาจาก MA 3 ค่า และเปรียบเทียบ ค่า มากกว่าน้อยกว่า และแสดงผลการเปรียบเทียบ ว่าผลเป็นอย่างไร ยังไม่เป็นไปตามที่คิดเลย ครับ
รบกวนผู้รู้ช่วยชี้แนะครับ

int start()
  {
     double ma3 , ma7 , ma14 ;
     int total;
     int ticket;
     int Ans=0;
     ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
          total=OrdersTotal();
         
     if(total<1)
     {
                 if(Ask>ma3>ma7>ma14)
                {
                 
                Ans=1;
     
                }
                     
             if(Bid<ma3<ma7<ma14)
                 {
                 
                 Ans=2;
         
                  }
                 
              else
                 {
                 
                 Ans=0;
     
                  }
                                 
      }
     
      Print(Ans);
     
   return(0);
  }
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: admin on พฤษภาคม 13, 2014, 05:15:17 pm
int start()
  {
     double ma3 , ma7 , ma14 ;
   //  int total;
   //  int ticket;
     int Ans=0;
     ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
         
         
     
                 if( (Ask>ma3) > (ma7>ma14) )
                {
                 
                Ans=1;
     
                }
                     
             if( (Bid<ma3) < (ma7<ma14))
                 {
                 
                 Ans=2;
         
                  }
                 
              else
                 {
                 
                 Ans=0;
     
                  }
                                 
     
     
      Print(Ans);
     
   return(0);
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: chartwat on พฤษภาคม 14, 2014, 09:00:05 am
ขอบคุณ admin มากครับ ได้แล้ว ครับ
อยากขอ เพิ่มอีกนิดครับ

หาก Ans = 0 ให้ close oder ทั้งหมดที่มีไม่ว่าจะ Buy หรือ Sell ครับ ตอนนี้ ให้เปิดเพียงแค่  1 oder เท่านั้นครับ

ขอบคุณมากครับ
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: admin on พฤษภาคม 14, 2014, 12:37:03 pm


int start()
  {
     double ma3 , ma7 , ma14 ;
   //  int total;
   //  int ticket;
     int Ans=0;
     ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);
         
         
     
                 if( (Ask>ma3) > (ma7>ma14) )
                {
                 
                Ans=1;
     
                }
                     
             if( (Bid<ma3) < (ma7<ma14))
                 {
                 
                 Ans=2;
         
                  }
                 
              else
                 {
                 
                 Ans=0;
     
                  }
                                 
     
     
      if(Ans==0)
      {
      closeall();
      }
     
   return(0);
  }
 
  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; 
          case OP_BUYSTOP  : result = OrderDelete(OrderTicket());
                         break;     
          case OP_SELLSTOP : result = OrderDelete(OrderTicket());
                         break; 
                         
          }
 

}


 }
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: chartwat on พฤษภาคม 14, 2014, 03:26:30 pm
ขอบ คุณมากครับ จะทดสอบดูครับ
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: chartwat on พฤษภาคม 15, 2014, 03:25:51 pm
ค่า จาก ima ที่รับมา มันไม่ตรงกับเส้นที่ปรากฏในจอ เลย ครับ ใช้คำสั่งยังไงมันจึงจะดึงค่าออกมาตรงกับที่ ปรากฏในจอได้ครับ
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: admin on พฤษภาคม 15, 2014, 03:36:42 pm
ค่า จาก ima ที่รับมา มันไม่ตรงกับเส้นที่ปรากฏในจอ เลย ครับ ใช้คำสั่งยังไงมันจึงจะดึงค่าออกมาตรงกับที่ ปรากฏในจอได้ครับ

อันนี้คำถามคลาสสิกครับ ค่าพารามิเตอร์ของคุณคือ

ma3=iMA(NULL,0,3,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma7=iMA(NULL,0,7,8,MODE_SMMA,PRICE_MEDIAN,0);
     ma14=iMA(NULL,0,14,8,MODE_SMMA,PRICE_MEDIAN,0);

ต้องไปตั้งที่ตัวอินดี้บนกราฟให้พวกค่า ต่างตรงกับ code ที่เราดึงค่ามันออกมาครับ พวกค่า shift ค่า เวลาที่ใช้คำนวณ  วิธีการคำนวณครับ
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: admin on พฤษภาคม 15, 2014, 03:37:35 pm
ถึงจะเห็นค่าบนกราฟกับค่าที่ EA ดึงออกมาตรงกันครับ
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: chartwat on พฤษภาคม 15, 2014, 04:00:43 pm
ตอบเร็วดีจัง ครับ
ตอนนี้ผมใช้ แบบนี้ เห็นจากใน web นี้ ครับ อ่านไปเจอมาครับ ก็ไกล้เคียงมาก

ma3=iMA(NULL,0,Ema1,0,MODE_EMA,PRICE_CLOSE,0);

ขอบคุณมากครับ
Title: Re: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&
Post by: D_Diamond on พฤษภาคม 16, 2014, 11:38:18 am
ท่านต้องไปกด properties ของอินดี้ที่อยู่บนกราฟครับ  ดูว่า paremeters มันใส่ค่าอะไรบ้าง แล้วเอามาใส่ในโค้ดให้ตรงกัน