Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: รบกวนดูอีเอซื้อขายด้วย ZigZag  (Read 11322 times)

win_dream

  • Jr. Member
  • **
  • Posts: 64
รบกวนดูอีเอซื้อขายด้วย ZigZag
« on: พฤศจิกายน 19, 2011, 02:11:11 am »
extern double high ;
extern double low ;
extern int MaxOrder =1;
double      sl=20, tp=10;
extern double lots = 0.1;
double cci1,Rsi,cci,macd,pc;
static int direct=0;
int start()
  {   
       int amount=0;
       int temp[3];
       double tem;
       cci1    =  iCCI(NULL,0,34,PRICE_CLOSE,0);
       cci     =  iCCI(NULL,0,46,PRICE_CLOSE,0);
       macd    =  iMACD(NULL,0,21,89,1,PRICE_CLOSE,MODE_MAIN,0);
         
       if(OrdersTotal()<MaxOrder) {     
                        for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",28,0,i);
                               if(tem>0)
                               {
                                  temp[amount]=tem;
                                  amount++;
                                  if(amount>1)
                                  {
                                   i=5001;
                                  }
                               }                   
                                                     
                            }
                     
                      if(temp[0]>temp[1])
                      {
                        high=temp[0];
                        low=temp[1];
                        direct=1;
                                       
                            }         
                                           
                      if(temp[0]<temp[1])
                      {
                        high=temp[1];
                        low=temp[0];
                        direct=2;
                      }
                          if(direct==1)
                          {
                     
                         if(( cci1>0 )&& (cci<100)&& (macd>0) &&(cci1>0)&& (cci1<100 ))
   
                         {     
                         OrderSend(Symbol(),OP_BUY,lots,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);
 
                          }                               
     
                         if(direct==2)
                        {
                     
                         if(( cci1<0 )&& (cci>-100)&& (macd<0) &&(cci1<0)&& (cci1>-100 ))
                        {
                          OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);

                         }}}}

return(0) ;


 
}
 
เวลาเขียนอีเอที่ใช้ zigzag เขียนแบบนี้หรือป่าวค่ะ *** แต่มันไม่เทรดนะคะ ผิดตรงไหน รบกวนช่วยแนะนำด้วยค่ะ*** ???


preeyada

  • Jr. Member
  • **
  • Posts: 67
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #1 on: พฤศจิกายน 19, 2011, 10:09:17 pm »
เหมือนจะมีกระทู้เก่าๆ
ไม่รู้ว่าอันนี้ใช้ได้หรือเปล่าครับ ;)
http://www.thaiforexea.com/index.php/topic,1149.0.html

win_dream

  • Jr. Member
  • **
  • Posts: 64
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #2 on: พฤศจิกายน 20, 2011, 01:06:27 am »
ก็ศึกษามาจากกระทู้เก่าค่ะ แต่ว่ามันไม่เทรดค่ะ เลยไม่รู้ว่ามันผิดตรงไหนค่ะ

รบกวนแอดมิน และเพื่อน ๆ ช่วยหน่อยนะคะ ระบบนี้เป็นระบบของฝรั่งเค้าว่าเทรดได้กำไรดี

เป็นแบบเทรดสั้น  ๆ ค่ะ รบกวนด้วยนะคะ  :( :(

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #3 on: พฤศจิกายน 20, 2011, 12:08:07 pm »
ผมลองโค้ดที่ให้มา มันหาค่าซิกแซกไม่ได้ เลยเขียนให้ใหม่ครับ

หลักการหาค่าซิกแซกี่ใช้คือ วนลูปด้วย for จากกราฟทางขวาไปซ้าย หาค่าซิกแซกอันที่ 1   แล้ววนต่อไปอีก จนเจอค่าซิกแซกอันที่ 2  ก็หยุดวนด้วย break
เพื่อเอา2ค่ามาเปรียบเทียบ หาว่ามันลากเส้นขึ้นบนหรือลงล่าง


extern int MaxOrder =1;
extern double sl=200;
extern double tp=100;
extern double lots = 0.1;
double cci1,Rsi,cci,macd,pc;
int direct=0; // ตรงนี้ไม่ทราบทำไมถึงใช้ static ผมลบทิ้งเพราะไม่รู้จัก


int start()
  {   
 
      double lastZigZag=0,preZigZag=0;
     
       int amount=0;
       int temp[3];
       double tem;
       cci1    =  iCCI(NULL,0,34,PRICE_CLOSE,0);
       cci     =  iCCI(NULL,0,46,PRICE_CLOSE,0);
       macd    =  iMACD(NULL,0,21,89,1,PRICE_CLOSE,MODE_MAIN,0);
       
       
                         for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",28,0,0,i);    // ค่าของซิกแซกในแท่งปัจจุบัน
                               
                               
                             
                               if ( lastZigZag !=0 && tem !=0 )    // หาค่าของซิกแซกอันที่ 2  ( lastZigZag ไม่เป็น 0 แสดงว่าเจออันแรกแล้ว )
                               {
                               preZigZag = tem;
                               
                               break;
                              }
                               
                               if ( lastZigZag == 0 && tem != 0 )  lastZigZag = tem ;   // ค่าของซิกแซกอันที่ 1 ( lastZigZag = 0 แสดงว่ายังไม่เจออันแรก )
                               
                               
                                                     
                            }     
         
         
         
       if(OrdersTotal()<MaxOrder)
       {     

                     
                      if( preZigZag < lastZigZag )  // เปรียบเทียบซิกแซก ได้เป็นเส้นขึ้น
                      {
                        direct=1;
                        Comment("preZigZag = " + preZigZag + "   lastZigZag = " + lastZigZag + "Zigzag UP" )        ;       
                       }         
                                           
                      if(preZigZag > lastZigZag)  // เปรียบเทียบซิกแซกได้เป็นเส้นลง
                      {
                        direct=2;
                        Comment("preZigZag = " + preZigZag + "   lastZigZag = " + lastZigZag + "Zigzag Down" )        ;
                           
                      }
                     
                          if(direct==1)
                          {
                     
                         if(( cci1>0 )&& (cci<100)&& (macd>0) &&(cci1>0)&& (cci1<100 ))
   
                     
                         OrderSend(Symbol(),OP_BUY,lots,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);
 
                          }                     
                           
                           
                         if(direct==2)
                           {
                 
                         if(( cci1<0 )&& (cci>-100)&& (macd<0) &&(cci1<0)&& (cci1>-100 ))
             
                          OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);

                        }
     }                   

return(0) ;


 
}

win_dream

  • Jr. Member
  • **
  • Posts: 64
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #4 on: พฤศจิกายน 21, 2011, 01:26:59 pm »
ขอบคุณมากเลยค่ะ  :)

win_dream

  • Jr. Member
  • **
  • Posts: 64
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #5 on: ธันวาคม 11, 2011, 12:32:42 pm »
ผมลองโค้ดที่ให้มา มันหาค่าซิกแซกไม่ได้ เลยเขียนให้ใหม่ครับ

หลักการหาค่าซิกแซกี่ใช้คือ วนลูปด้วย for จากกราฟทางขวาไปซ้าย หาค่าซิกแซกอันที่ 1   แล้ววนต่อไปอีก จนเจอค่าซิกแซกอันที่ 2  ก็หยุดวนด้วย break
เพื่อเอา2ค่ามาเปรียบเทียบ หาว่ามันลากเส้นขึ้นบนหรือลงล่าง


extern int MaxOrder =1;
extern double sl=200;
extern double tp=100;
extern double lots = 0.1;
double cci1,Rsi,cci,macd,pc;
int direct=0; // ตรงนี้ไม่ทราบทำไมถึงใช้ static ผมลบทิ้งเพราะไม่รู้จัก


int start()
  {   
 
      double lastZigZag=0,preZigZag=0;
     
       int amount=0;
       int temp[3];
       double tem;
       cci1    =  iCCI(NULL,0,34,PRICE_CLOSE,0);
       cci     =  iCCI(NULL,0,46,PRICE_CLOSE,0);
       macd    =  iMACD(NULL,0,21,89,1,PRICE_CLOSE,MODE_MAIN,0);
       
       
                         for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",28,0,0,i);    // ค่าของซิกแซกในแท่งปัจจุบัน
                               
                               
                             
                               if ( lastZigZag !=0 && tem !=0 )    // หาค่าของซิกแซกอันที่ 2  ( lastZigZag ไม่เป็น 0 แสดงว่าเจออันแรกแล้ว )
                               {
                               preZigZag = tem;
                               
                               break;
                              }
                               
                               if ( lastZigZag == 0 && tem != 0 )  lastZigZag = tem ;   // ค่าของซิกแซกอันที่ 1 ( lastZigZag = 0 แสดงว่ายังไม่เจออันแรก )
                               
                               
                                                     
                            }     
         
         
         
       if(OrdersTotal()<MaxOrder)
       {     

                     
                      if( preZigZag < lastZigZag )  // เปรียบเทียบซิกแซก ได้เป็นเส้นขึ้น
                      {
                        direct=1;
                        Comment("preZigZag = " + preZigZag + "   lastZigZag = " + lastZigZag + "Zigzag UP" )        ;       
                       }         
                                           
                      if(preZigZag > lastZigZag)  // เปรียบเทียบซิกแซกได้เป็นเส้นลง
                      {
                        direct=2;
                        Comment("preZigZag = " + preZigZag + "   lastZigZag = " + lastZigZag + "Zigzag Down" )        ;
                           
                      }
                     
                          if(direct==1)
                          {
                     
                         if(( cci1>0 )&& (cci<100)&& (macd>0) &&(cci1>0)&& (cci1<100 ))
   
                     
                         OrderSend(Symbol(),OP_BUY,lots,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);
 
                          }                     
                           
                           
                         if(direct==2)
                           {
                 
                         if(( cci1<0 )&& (cci>-100)&& (macd<0) &&(cci1<0)&& (cci1>-100 ))
             
                          OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);

                        }
     }                   

return(0) ;


 
}



อยากทราบว่าถ้าเราต้องการเปลี่ยนเทียบ zigzag 2 ค่า * เช่น 28-5-3 กับ 12-5-3 * 

เราต้องเก็บค่าอย่างไงค่ะ

สมมุติ ให้เปิดออร์เดอร์บาย เมื่อ lastZigZag ของ zigzag28 เท่ากับ lastZigZag ของ zigzag 12 ประมาณนี้อะคะ


รบกวนท่านผู้รู้ช่วยแนะนำด้วยค่ะ :)

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #6 on: ธันวาคม 11, 2011, 12:58:58 pm »
ก็ต้องสร้างซิกแซกมา2เส้นครับ แล้วเพิ่มตัวแปรเป็น2ชุดเก็บค่า zigzag28 กับ zigzag12

win_dream

  • Jr. Member
  • **
  • Posts: 64
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #7 on: ธันวาคม 11, 2011, 02:47:36 pm »
extern int MaxOrder =1;
extern double sl=30;
extern double tp=30;
extern double lots = 0.1;




int start()
  {
 
      double lastZigZag=0,preZigZag=0,lastZigZag1=0,preZigZag1=0;
     
       int amount=0;
       int temp[3];
       
       double tem,tem1;
     
                         for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",28,0,0,i);   
                                                           
                             
                               if ( lastZigZag !=0 && tem !=0 )   
                               { preZigZag = tem;
                               
                               break; }
                               
                               if ( lastZigZag == 0 && tem != 0 ) 
                               lastZigZag = tem ;    } 
                         
                               
                                           
                             
                               tem1=iCustom(NULL, 0, "ZigZag",12,0,0,i);
         
                               if ( lastZigZag1 !=0 && tem1 !=0 )   
                               { preZigZag1 = tem1;
                               
                               break;}
                               
                               if ( lastZigZag1 == 0 && tem1 != 0 )
                               lastZigZag1 = tem1 ;   }
                               
                               }
                                                     
                               
                           
           if(OrdersTotal()<MaxOrder)                     
     
        {
     
                     
                      if( preZigZag < lastZigZag )
                      {
                        direct=1;
                        Comment("preZigZag = " + preZigZag + "   lastZigZag = " + lastZigZag + "Zigzag UP" );       
                       }     
                                           
                      if(preZigZag > lastZigZag) 
                      {
                        direct=2;
                        Comment("preZigZag = " + preZigZag + "   lastZigZag = " + lastZigZag + "Zigzag Down" );
                           
                      }
                       
                      if ( preZigZag1 < lastZigZag1)
                      {
                        direct=3;
                        Comment("preZigZag1 = " + preZigZag1 + "   lastZigZag1 = " + lastZigZag1 + "Zigzag UP" );       
                       }       
                                           
                      if ( preZigZag1 > lastZigZag1) 
                      {
                        direct=4;
                        Comment("preZigZag1 = " + preZigZag1 + "   lastZigZag1 = " + lastZigZag1 + "Zigzag Down" );
                 }
                           }
                 
                 
                         if(direct==1)||(direct==3)
                       
                          {if ((  preZigZag ==preZigZag1) && (lastZigZag ==lastZigZag1))
                     
                       
                         OrderSend(Symbol(),OP_BUY,lots,Ask,3,Ask-Point*sl,Ask+Point*tp,"EA Creator",123,0,Green);
                                     
                          }
                           
                         if(direct==2)||(direct==4)
                           
                 
                       { if ((  preZigZag ==preZigZag1) && (lastZigZag ==lastZigZag1))
             
                        OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+Point*sl,Bid-Point*tp,"EA Creator",123,0,Red);
                      }
                     
}

return(0)
}


ประมาณนี้ป่าวค่ะ

ช่วยแนะนำด้วยค่ะ

แต่มัน error ค่ะ รบกวนช่วยดูว่าัมันผิดตรงไหนอะคะ

ขอบคุณมาก  ๆค่ะ  :(

D_Diamond

  • Hero Member
  • *****
  • Posts: 673
    • Expert Forex Trading
Re: รบกวนดูอีเอซื้อขายด้วย ZigZag
« Reply #8 on: ธันวาคม 11, 2011, 03:14:11 pm »
ตรงนี้ก็ต้องแยกกันด้วยครับ  เพราะมันมี break หลุดไปก่อน

         for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",28,0,0,i);   
                                                           
                             
                               if ( lastZigZag !=0 && tem !=0 )   
                               { preZigZag = tem;
                               
                               break; }
                               
                               if ( lastZigZag == 0 && tem != 0 )
                               lastZigZag = tem ;    }
                         
                               
                                           
                             
                               tem1=iCustom(NULL, 0, "ZigZag",12,0,0,i);
         
                               if ( lastZigZag1 !=0 && tem1 !=0 )   
                               { preZigZag1 = tem1;
                               
                               break;}
                               
                               if ( lastZigZag1 == 0 && tem1 != 0 )
                               lastZigZag1 = tem1 ;   }
                               
                               }