EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: phanom on สิงหาคม 14, 2009, 10:31:04 am

Title: อ่านค่าจาก ZigZag ยังไงครับ
Post by: phanom on สิงหาคม 14, 2009, 10:31:04 am
ตามรูป
ผมอยากจะให้ อีเอ มันอ่านค่า ZigZag
ใช้โค๊ด iCustom ยังไงให้มันอ่านค่า Peak ต่างๆ

หรือว่าต้องใช้ฟังชั่นอื่น  ;D
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: admin on สิงหาคม 14, 2009, 12:07:39 pm
ขอถามเพิ่มครับ peak ต่างๆๆ นี้คืออะไรครับ ผมเข้าใจว่าเป็นค่าสูงสุดต่ำสุด ที่ ZigZag กลับตัวใช่ไหมครับ หรือว่าเป็นค่า 1 2 3 4 5 ครับ งงนิดหน่อยคำว่าค่า peak
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: phanom on สิงหาคม 14, 2009, 01:16:37 pm
peak หมายถึง สูงสุด และ ต่ำสุด ตรงมุมแหลมๆ ของ ZigZag
ว่ามีค่าเท่าไหร่ ย้อนหลังกลับไป 5-6 ค่า น่ะครับ
จะได้เอามาให้ อีเอ มันคำนวณหาเทรน แนวรับ แนวต้าน

ขอบคุณล่วงหน้า  ;D
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: admin on สิงหาคม 14, 2009, 01:48:53 pm
peak หมายถึง สูงสุด และ ต่ำสุด ตรงมุมแหลมๆ ของ ZigZag
ว่ามีค่าเท่าไหร่ ย้อนหลังกลับไป 5-6 ค่า น่ะครับ
จะได้เอามาให้ อีเอ มันคำนวณหาเทรน แนวรับ แนวต้าน

ขอบคุณล่วงหน้า  ;D

คุณพนมขอผม 5-6 ค่า ผมให้คุณพนม 10 ค่าเลยครับ  ต้องอธิบายก่อนเนื่องจากค่า อินดิเคเตอร์ zigzag มันไม่ได้ส่งค่าออกมาให้ตลอดส่วนใหญ่แล้วค่าที่มันส่งออกมาคืน 0 ครับ ช่วงที่มันส่งค่า 0 ออกมาก็คือช่วงที่มันเลย peak ไปแล้ว แต่ตามหลักการอินดิเคอเตอร์ใน mt4 มันต้องใช้ index เก็บค่าตามกราฟตลอด จากหลักการนี้ทำให้เรารู้ว่า ค่า peak นั่นก็ถูกเก็บอยู่ใน index แต่เราไม่ทราบว่าเป็น index ที่เท่าไรใช่ไหมครับ ผมจึงใช้  while เพื่อ test ค่า zigzag ปัจจุบันก่อนว่าเป็น 0 ใช่ไหมถ้าใช่ ผมเลยใช่ for เพื่อใช้เป็นตัวชี้ index เพื่อหาค่า peak เมื่อเจอค่า peak ผมก็สังให้มันเก็บเอาไวในตัวแปรเพื่อที่จะ show ออกมาด้วยคำสั่ง print เมื่อ ea มันหาค่า peak ได้ 10 ค่าก็จบ loop หาค่า peak โดยการทำลายเงื่อนไขมัน จากนั่นก็ show ออกมาด้วยคำสั่ง print ด้านล่าง  ผลลัพธ์ที่แสดงออกมาจะเริ่มจาก peak ตัวที่ใกล้ราคาปัจจุบันมากที่สุด ไปจบครบ 10   ในส่วนที่เก็บค่าสามารถใช้ loop เพื่อเขียนให้เก็บค่าได้แต่ผมใช้วิธีง่ายในการเก็บค่าเพราะอยากให้เห็นชัดๆๆตรงนี้อย่าว่ากันนะครับที่ผมเขียน code เหมือนเด็กไม่เป็นระเบียบ

int start()
  {   double tem=0;
      double val=iCustom(NULL, 0, "ZigZag",13,0,0);     
      Print("Var : ",val);
   
     
      if(val==0)
      {    double show[10];
           int time=0;
           while(tem==0)
               {
                       for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",13,0,i);
                               tem=tem;
                               if(tem >0)
                                {
                                   
                                   
                               
                                   
                                    if(time==10)
                                     {show[10]=tem;time++; i=5000;   }
                                     
                                     if(time==9)
                                     {show[9]=tem;time++;}
                                     
                                     if(time==8)
                                     {show[8]=tem;time++;}
                                       
                                    if(time==7)
                                    {show[7]=tem;time++;}
                                   
                                    if(time==6)
                                     {show[6]=tem;time++;}
                                     
                                     if(time==5)
                                     {show[5]=tem;time++;}
                                     
                                     if(time==4)
                                     {show[4]=tem;time++;}
                                     
                                    if(time==3)
                                    {show[3]=tem;time++;}
                                   
                                    if(time==2)
                                     {show[2]=tem;time++;}
                                     
                                     if(time==1)
                                     {show[1]=tem;time++;}
                                     
                                     if(time==0)
                                     {show[0]=tem;time++;}
                                   
                                }
                               
                            }
                }
       }
     
                                     for( int a=0;a<10;a++)
                                   {
                                    Print("PEAK ",a," :",  show[a]);
                                     
                                   
                                   }
     
     
 

   return(0);
  }
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: phanom on สิงหาคม 19, 2009, 11:36:44 am
ขอบคุณครับ

เดี๋ยวเอาไปลองดูก่อน มีปัญหาไร เดี๋ยวกลับมาถามใหม่  ;D
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: TvT on มิถุนายน 02, 2010, 01:21:50 am
ถามต่อหน่อยนะครับ
จากรูปในโพสแรกนี่ถ้าต้องการเข้าที่ตอนทะลุ2เลยไม่เอา 0 ได้มั๊ย
ประมาณ
0 => จุดที่จะเข้า
1 => 0
2 => 1
จะตั้งการอ่านค่ายังไง
int start()


{
double ticket, total, pc;

int direct=0;


pc=iClose(NULL,0,1);   
total=OrdersTotal();
       
//----

 
         int amount=0;
         int temp[3];
         double tem;
         

                        for(int i=5 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",13,0,i);
                               if(tem>0)
                               {
                                  temp[amount]=tem;
                                  amount++;
                                  if(amount>1)
                                  {
                                   i=5001;
                                  }
                               }                   
                                                     
                            }
                     
            if((temp[0]<temp[1])&&(total==0)&&(pc>temp[1]))
                      {
                         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,1,0,0,"buy",0,0,Green);
                         OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                         Print("buy");
                       }
 return(0);
ได้มั๊ยครับ ผิดตรงไหนบอกที ไม่ค่อยเข้าใจการอ่านค่า หรือรูปที่เข้าจากที่เขียนเป็นแบบไหนรบกวนอธิบายทีครับ
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: admin on มิถุนายน 02, 2010, 02:34:30 am
ต้องการแค่ราคามากกว่า 2 ขี้นไปแล้วเปิด buy เลยใช่ไหม
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: TvT on มิถุนายน 02, 2010, 10:28:28 pm
ความหมานเหมือนในรูปครับ ไม่แน่ใจว่าเขียนถูกมั๊ย
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: admin on มิถุนายน 02, 2010, 11:55:16 pm
ลองเอาไปดูครับเป็นตัวที่คุณเขียนไวอีกกระทู้หนึ่งผมเอาไปแก้ต้อ ลอง test ดูน่าจะทำงานได้ตามภาพแล้วนะครับ
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: TvT on มิถุนายน 03, 2010, 08:33:18 am
ถามเพิ่มหน่อย มีวิธีให้โปรแกรมจำค่าที่ได้ตอนเปิดลองไว้จนกว่าจะขายมั๊ยครับ
แล้วพอขายก็ลบค่าทั้งหมดทิ้งเพื่อรับค่าใหม่ทั้งหมดไม่เอาค่าเดิมมาคิดเลย
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: gunlanutt on มิถุนายน 20, 2012, 03:22:48 pm
ท่าน Adminและท่านผู้รู้ ครับ
กรณีที่เราต้องการตั้งค่าใน indicator เป็นค่าอื่น (ExtDepth=20)
แต่ค่าที่เราดึงมาโดยใช้คำสั่ง icustom ยังเป็นค่าเดิมคือ ExtDepth=12

พอมีวิธีที่จะเอาโค๊ดของ zigzag มาเป็นส่วนหนึ่งของอีเอได้ไหมครับ จะได้ตั้งค่าตัวแปรได้เองเลย ไม่ต้องการ compile indicator เพื่อปรับเปลี่ยนค่าตัวแปร
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: admin on มิถุนายน 20, 2012, 06:01:01 pm
ใน icustom ตำแหน่งหลังชื่อ อินดี้เคเตอร์ มันให้เราส่งค่าผ่านไปได้ ลองเปลี่ยนตรงนี้ดูก่อนถ้าไม่ได้ ก็ต้องแก้ที่ตัวอินดี้ครับ ส่วน วิธีเอา code อินดี้มาใส่ ใน EA ตรงๆเลยน่าจะลำบากครับเพราะ บางฟังก์ชั่น ที่อินดี้ใช้ไม่สามารถเรียกใช้งานตอนเป้น EA ได้ครับ
Title: Re: อ่านค่าจาก ZigZag ยังไงครับ
Post by: gunlanutt on มิถุนายน 20, 2012, 06:35:39 pm
ใน icustom ตำแหน่งหลังชื่อ อินดี้เคเตอร์ มันให้เราส่งค่าผ่านไปได้ ลองเปลี่ยนตรงนี้ดูก่อนถ้าไม่ได้ ก็ต้องแก้ที่ตัวอินดี้ครับ ส่วน วิธีเอา code อินดี้มาใส่ ใน EA ตรงๆเลยน่าจะลำบากครับเพราะ บางฟังก์ชั่น ที่อินดี้ใช้ไม่สามารถเรียกใช้งานตอนเป้น EA ได้ครับ
ขอบคุณมากเลยครับ