Open Forex4you Account

Server รัน EA 1000 / ปี

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

Author Topic: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ  (Read 12830 times)

TvT

  • Full Member
  • ***
  • Posts: 133
ขอเรียนถาม admin หน่อยนะครับจาก code ที่ให้ไว้เดิมดังนี้

static double high ;
static double low ;
static double lasthigh;
static double lastlow;

int start()
  {   
       int amount=0;
       int temp[4];
       double tem;
                       for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",13,0,i);
                               if(tem>0)
                               {
                                  temp[amount]=tem;
                                  amount++;
                                  if(amount>3)
                                  {
                                   i=5001;
                                  }
                               }                                                                         
                            }
                     
                      if(temp[0]>temp[1])
                      {
                        lasthigh=temp[0];
                        lastlow=temp[1];
                      }
                     
                          if(temp[0]<temp[1])
                      {
                        lasthigh=temp[1];
                        lastlow=temp[0];
                      }
                     
                     
                         if(temp[2]>temp[3])
                      {
                        high=temp[2];
                        low=temp[3];
                      }
                     
                          if(temp[2]<temp[3])
                      {
                        high=temp[3];
                        low=temp[2];                           
                      }

   return(0);
  }
จะขอให้ admin ช่วยนำรูปมาชี้ตำแหน่งของ temp[0] , [1] , ....[3] แล้วโพสต์กลับทีครับขอทำความเข้าใจเพื่อไปใช้เพิ่มครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #1 on: กรกฎาคม 22, 2010, 10:36:46 pm »
ลองเอาไปดูครับ บังเอิญผมทำก่อนเห็นรูป ของคุณครับ จุดที่เราหาค่าออกมาได้คือ ยอด นะครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #2 on: กรกฎาคม 24, 2010, 08:27:15 am »
ลองเอา code ไปแก้แล้วไม่ซื้อ ไม่ขายครับทำตามที่แนะนำแต่ไม่ทำงานเลยครับช่วยแก้ทีครับ

static double high ;
static double low ;
static double lasthigh;
static double lastlow;
static int direct=0;
double ticket, total, pc;


int start()
  {   
       int amount=0;
       int temp[4];
       double tem;
                       for(int i=0 ;i<5000;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",8,0,i);
                               if(tem>0)
                               {
                                  temp[amount]=tem;
                                  amount++;
                                  if(amount>1)
                                  {
                                   i=5001;
                                  }
                               }                   
                                                     
                            }
///last=buttom///
///price>lasthigh=breakup///                     
                      if(temp[2]>temp[1])
                      {lasthigh=temp[2];
                       lastlow=temp[1];
                       direct=1;
                      }
///last=top///
///price<lastlow=breakdown///                     
                      if(temp[2]<temp[1])
                      {lasthigh=temp[1];
                       lastlow=temp[2];
                       direct=2;
                      }
                                                               
pc = iClose(NULL,0,1);   
total=OrdersTotal();
                 
//----

///short///
if(direct==2)
                           {if (pc<lastlow)
                              {     if((total>0)&&(OrderType() == OP_BUY))
                                    {OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
                                    Print("sale");
                                    return(0);
                                    }
                                    if(total<1)
                                    {ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0,"Short",0,0,Red);
                                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                                    Print("sale");
                                    }
                              }
///else///
                           else
                           {if((total>0)&&(OrderType() == OP_SELL))
                              {     
                                 OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
                                 Print("buy");
                                 return(0);
                              }
                            if((total>0)&&(OrderType() == OP_BUY))
                              {
                                 OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
                                 Print("sale");
                                 return(0);
                              }
                            }
                           }
                           
////////////////////////////////                     
                       
///long///
if(direct==1)
                           {if (pc>lasthigh)
                              {
                                if((total>0)&&(OrderType() == OP_SELL))
                                    {OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
                                       Print("buy");
                                    return(0);
                                    }
                                if(total<1)
                                    {ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,"Long",0,0,Green);
                                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                                    Print("buy");
                                    }
                              }
/////else/////
                           else
                              {
                              if((total>0)&&(OrderType() == OP_SELL))
                                 {     
                                 OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
                                 Print("buy");
                                 return(0);
                                 }
                              if((total>0)&&(OrderType() == OP_BUY))
                                 {
                                 OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
                                 Print("sale");
                                 return(0);
                                 }
                               }
                            }

//----
   return(0);
  }

ตั้งใจเขียนให้เปิดลองเมื่อเบรคขึ้นหรือชอร์ตเมื่อเบรกลงเท่านั้นครับ ถ้าอื่นๆจะปิดสัญญาทันที

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #3 on: กรกฎาคม 24, 2010, 03:12:22 pm »
คือที่เขียนตั้งใจให้เป็น (ตามรูป admin)

ตอนที่ราคาปิดลงมาต่ำกว่า temp[2] (ตามรูป host) จะเริ่มชอร์ตและจะถือไปจนกว่า zigzag จะกลับทาง (คือ temp[1] ย้ายตำแหน่งลงมาด้านล่างนั่นแหละ)

ตอนที่เป็นขาขึ้นก็กลับทางกัน

แต่ที่เขียนไม่ทำงานเลยไม่แน่ใจว่าผิดตรงไหนครับ

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #4 on: กรกฎาคม 24, 2010, 10:46:33 pm »
คุยกันหลังไมค์ดีกว่าครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #5 on: กรกฎาคม 25, 2010, 06:59:31 am »
ครับ ส่งข้อความไปแล้วครับ

ปล. ถามบ่อยไปป่าวเนี่ย

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #6 on: กรกฎาคม 25, 2010, 02:51:54 pm »
static double high ;
static double low ;
static double lasthigh;
static double lastlow;
static int direct;
double ticket, total, pc;


int start()
  {   
       int amount=0;
       double temp[4];
       double tem;
                       for(int i=0 ;i<500;i++)
                           {
                               tem=iCustom(NULL, 0, "ZigZag",8,0,i);
                               if(tem>0)
                               {Print("temp 1",tem);
                                  temp[amount]=tem;
                                  amount++;
                                  if(amount>4)
                                  {
                                   i=501;
                                  }
                               }                   
                                                     
                            }
///last=buttom///
///price>lasthigh=breakup///                     
                      if(temp[2]>temp[1])
                      {lasthigh=temp[2];
                       lastlow=temp[1];
                       direct=1;
                      }
///last=top///
///price<lastlow=breakdown///                     
                      if(temp[2]<temp[1])
                      {lasthigh=temp[1];
                       lastlow=temp[2];
                       direct=2;
                      }
                                                               
pc = iClose(NULL,0,1);   
total=OrdersTotal();
                 
//----
 //Print("temp 2",temp[2]);
// Print("temp 1",temp[1]);
///short///
if(direct==2)
                     
       {
            if (pc<lastlow)
                    {           
                             
                                 if((total>0)&&(OrderType() == OP_BUY))
                                    {OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
                                    Print("sale");
                                    return(0);
                                    }
                                    if(total<1)
                                    {ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0,"Short",0,0,Red);
                                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                                    Print("sale");
                                    }
                              }
///else///
                           else
                           {if((total>0)&&(OrderType() == OP_SELL))
                              {     
                                 OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
                                 Print("buy");
                                 return(0);
                              }
                            if((total>0)&&(OrderType() == OP_BUY))
                              {
                                 OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
                                 Print("sale");
                                 return(0);
                              }
                            }
                           }
                           
////////////////////////////////                     
                       
///long///
if(direct==1)
                           {Print("aaa");
                           if (pc>lasthigh)
                              {
                                if((total>0)&&(OrderType() == OP_SELL))
                                    {OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
                                       Print("buy");
                                    return(0);
                                    }
                                if(total<1)
                                    {ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,0,0,"Long",0,0,Green);
                                    OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
                                    Print("buy");
                                    }
                              }
/////else/////
                           else
                              {
                              if((total>0)&&(OrderType() == OP_SELL))
                                 {     
                                 OrderClose(OrderTicket(),OrderLots(),Ask,0,Blue);
                                 Print("buy");
                                 return(0);
                                 }
                              if((total>0)&&(OrderType() == OP_BUY))
                                 {
                                 OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
                                 Print("sale");
                                 return(0);
                                 }
                               }
                            }

//----
   return(0);
  }

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ถาม admin เรื่อง code ที่เคยให้ไว้ครับ
« Reply #7 on: กรกฎาคม 27, 2010, 04:12:42 pm »
ขอบคุณที่ช่วยแก้ code ให้ครับ ขออนุญาติถามเพิ่มนิดนึงครับ (ท่าทาง admin งานยุ่ง , ใครที่รู้ตอบมาแทนก็ดีนะครับ)

ลองเขียนโค๊ดเรื่อง ihighest / ilowest

อยากทราบว่าถ้าไม่ต้องการค่า high ของ 500 แท่งสุดท้าย แต่ต้องการ high ของแท่งที่ 101-500 พอจะเขียนแบบนีได้ไหมครับ

double lasthigh;
double lastlow;
                        for(int i=101 ;i<500;i++)
                           {
                           lasthigh = High[iHighest(NULL,0,2,i,0)];
                           lastlow = Low[iLowest(NULL,0,2,i,0)];
                           }


แค่นี้ไม่ส่งค่า lasthigh , lastlow มาครับ ใครพอจะรู็วิธีให้ส่งค่า highest ของแท่งที่ 101-500 บ้างครับ
« Last Edit: กรกฎาคม 27, 2010, 05:50:25 pm by TvT »