Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ผมเขียน แล้ว แต่มันไม่เป็นไปตามเงื่อนไ&  (Read 18435 times)

chartwat

  • Newbie
  • *
  • Posts: 43
ผมเขียนแบบง่าย ๆ เลย ครับ รับค่า 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);
  }

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
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);

chartwat

  • Newbie
  • *
  • Posts: 43
ขอบคุณ admin มากครับ ได้แล้ว ครับ
อยากขอ เพิ่มอีกนิดครับ

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

ขอบคุณมากครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386


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

}


 }

chartwat

  • Newbie
  • *
  • Posts: 43
ขอบ คุณมากครับ จะทดสอบดูครับ

chartwat

  • Newbie
  • *
  • Posts: 43
ค่า จาก ima ที่รับมา มันไม่ตรงกับเส้นที่ปรากฏในจอ เลย ครับ ใช้คำสั่งยังไงมันจึงจะดึงค่าออกมาตรงกับที่ ปรากฏในจอได้ครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ค่า จาก 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 ค่า เวลาที่ใช้คำนวณ  วิธีการคำนวณครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
ถึงจะเห็นค่าบนกราฟกับค่าที่ EA ดึงออกมาตรงกันครับ

chartwat

  • Newbie
  • *
  • Posts: 43
ตอบเร็วดีจัง ครับ
ตอนนี้ผมใช้ แบบนี้ เห็นจากใน web นี้ ครับ อ่านไปเจอมาครับ ก็ไกล้เคียงมาก

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

ขอบคุณมากครับ

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
ท่านต้องไปกด properties ของอินดี้ที่อยู่บนกราฟครับ  ดูว่า paremeters มันใส่ค่าอะไรบ้าง แล้วเอามาใส่ในโค้ดให้ตรงกัน