EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: ruddy01 on พฤษภาคม 22, 2013, 03:23:48 pm

Title: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 22, 2013, 03:23:48 pm
มันเป็นอินดิเคเตอร์ที่ชื่อว่า Forex Freedom Bars

(http://www.bloggang.com/data/m/mikicool/picture/1369210415.jpg)

คืออยากให้เมื่อทั้ง4เส้นเป็นสีแดงทั้งหมดให้เข้า sell   และเมื่อเส้นทั้ง 4 เป็นสีน้ำเงินทั้งหมด ให้เข้า buy คือจะเริ่มต้นเขียนจากตรงไหนดีครับ เริ่มต้นไม่ถูก

นี้คือโค๊ดของ  Forex Freedom Bars ครับ ช่วยตอบหน่อยนะได้โปรด

..................
//+------------------------------------------------------------------+
//|                                           #The Forex Freedom Bars
//|                                           
//+------------------------------------------------------------------+
#property copyright "Programmed by Eli hayun"
#property indicator_separate_window
#property indicator_minimum -0.5
//#property indicator_maximum 5
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 DodgerBlue
#property indicator_color3 Red
#property indicator_color4 DodgerBlue
#property indicator_color5 Red
#property indicator_color6 DodgerBlue
#property indicator_color7 Red
#property indicator_color8 DodgerBlue
//---- buffers
double buf4_up[];
double buf4_down[];
double buf3_up[];
double buf3_down[];
double buf2_up[];
double buf2_down[];
double buf1_up[];
double buf1_down[];

extern double Gap = 1; // Gap between the lines of bars

extern int Period_1 = PERIOD_M5;//M15
extern int Period_2 = PERIOD_M15;//M30
extern int Period_3 = PERIOD_M30;//H1
extern int Period_4 = PERIOD_H1;//H4

extern int cci_1    = 34;//50
extern int cci_2    = 34;//14
extern int cci_3    = 14;
extern int cci_4    = 14;

extern bool AutoDisplay      = false;

string shortname = "";
bool firstTime = true;

int UniqueNum = 228;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
 
 
   SetAutoDisplay();
   
 
   shortname = "# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")";
   firstTime = true;
   
   IndicatorShortName(shortname);
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,110);
   SetIndexBuffer(0,buf4_up);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,110);
   SetIndexBuffer(1,buf4_down);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,110);
   SetIndexBuffer(2,buf3_up);
   SetIndexEmptyValue(2,0.0);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,110);
   SetIndexBuffer(3,buf3_down);
   SetIndexEmptyValue(3,0.0);
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexArrow(4,110);
   SetIndexBuffer(4,buf2_up);
   SetIndexEmptyValue(4,0.0);
   SetIndexStyle(5,DRAW_ARROW);
   SetIndexArrow(5,110);
   SetIndexBuffer(5,buf2_down);
   SetIndexEmptyValue(5,0.0);
   SetIndexStyle(6,DRAW_ARROW);
   SetIndexArrow(6,110);
   SetIndexBuffer(6,buf1_up);
   SetIndexEmptyValue(6,0.0);
   SetIndexStyle(7,DRAW_ARROW);
   SetIndexArrow(7,110);
   SetIndexBuffer(7,buf1_down);
   SetIndexEmptyValue(7,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   SetAutoDisplay();
   
   shortname = "# Forex Freedom("+Period_1+","+Period_2+","+Period_3+","+Period_4+")";
   firstTime = true;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int i=0, y5m=0, y1h=0, y30m=0, y15m=0, yy;
   int limit=Bars-counted_bars;

   datetime TimeArray_1H[], TimeArray_30M[], TimeArray_15M[], TimeArray_5M[];
//----

   
   
   if (firstTime || NewBar())
   {
      firstTime = false;
      int win = UniqueNum; // WindowFind(shortname);
      double dif = Time[0] - Time[1];
      for (int ii=ObjectsTotal()-1; ii>-1; ii--)
      {
         if (StringFind(ObjectName(ii),"FF_"+win+"_") >= 0)
            ObjectDelete(ObjectName(ii));
         else
            ii=-1;
      }
     
      double shift = 0.2;
      for (ii=0; ii<4; ii++)
      { 
         string txt = "??";
         double gp;
         switch (ii)
         {
            case 0: txt = tf2txt(Period_1);  gp = 1 + shift;         break;
            case 1: txt = tf2txt(Period_2);  gp = 1 + Gap + shift;   break;
            case 2: txt = tf2txt(Period_3);  gp = 1 + Gap*2 + shift; break;
            case 3: txt = tf2txt(Period_4);  gp = 1 + Gap*3 + shift; break;
         }
         string name = "FF_"+win+"_"+ii+"_"+txt;
         ObjectCreate(name, OBJ_TEXT, WindowFind(shortname), iTime(NULL,0,0)+dif*3, gp);
         ObjectSetText(name, txt,8,"Arial", Silver);
      }
   }
   
   ArrayCopySeries(TimeArray_1H,MODE_TIME,Symbol(),Period_4);
   ArrayCopySeries(TimeArray_30M,MODE_TIME,Symbol(),Period_3);
   ArrayCopySeries(TimeArray_15M,MODE_TIME,Symbol(),Period_2);
   ArrayCopySeries(TimeArray_5M,MODE_TIME,Symbol(),Period_1);
     
   for(i=0, y5m=0,  y1h=0,  y30m=0,  y15m=0;i<limit;i++)
   {
      if (Time<TimeArray_5M[y5m]) y5m++;
      if (Time<TimeArray_1H[y1h])   y1h++;
      if (Time<TimeArray_30M[y30m])   y30m++;
      if (Time<TimeArray_15M[y15m]) y15m++;
     
      int cci_n = cci_1;
      for (int tf = 0; tf < 4; tf++)
      {
         int prd;
         switch (tf)
         {
            case 0: prd = Period_1; cci_n = cci_1; yy = y5m;   break;
            case 1: prd = Period_2; cci_n = cci_2; yy = y15m;   break;
            case 2: prd = Period_3; cci_n = cci_3;  yy = y30m;   break;
            case 3: prd = Period_4; cci_n = cci_4;  yy = y1h;   break;
         }
         
         double cci = iCCI(NULL, prd, cci_n,PRICE_TYPICAL, yy);
         double dUp = EMPTY_VALUE; //   iCustom(NULL, prd, "SuperTrend", false, 1, yy);
         double dDn = EMPTY_VALUE; //iCustom(NULL, prd, "SuperTrend", false, 0, yy);
         
         if (cci < 0) dUp = 1; else dDn = 1;
         
         switch (tf)
         {
            case 0: if (dUp == EMPTY_VALUE)  buf1_down = 1;           else buf1_up = 1; break;
            case 1: if (dUp == EMPTY_VALUE)  buf2_down = 1 + Gap * 1; else buf2_up = 1 + Gap * 1; break;
            case 2: if (dUp == EMPTY_VALUE)  buf3_down  = 1 + Gap * 2; else buf3_up  = 1 + Gap * 2; break;
            case 3: if (dUp == EMPTY_VALUE)  buf4_down  = 1  + Gap * 3; else buf4_up  = 1 + Gap * 3; break;
         }
         if (NewBar())
         {
            string sDir = "";
            if (buf1_up[0] + buf2_up[0] + buf3_up[0] + buf4_up[0] == 4)
               sDir = "Up";
            if (buf1_down[0] + buf2_down[0] + buf3_down[0] + buf4_down[0] == 4)
               sDir = "Down";
            if (sDir != "")
            {
               PlaySound("alert1.wav");
               Print("Forex freeway - Direction ",sDir);
            }
         }         
         
      }


   }

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

string tf2txt(int tf)
{
   if (tf == PERIOD_M1)    return("M1");
   if (tf == PERIOD_M5)    return("M5");
   if (tf == PERIOD_M15)    return("M15");
   if (tf == PERIOD_M30)    return("M30");
   if (tf == PERIOD_H1)    return("H1");
   if (tf == PERIOD_H4)    return("H4");
   if (tf == PERIOD_D1)    return("D1");
   if (tf == PERIOD_W1)    return("W1");
   if (tf == PERIOD_MN1)    return("MN1");
   
   return("??");
}

void SetValues(int p1, int p2, int p3, int p4)
{
   Period_1 = p1;   Period_2 = p2; Period_3 = p3; Period_4 = p4;
}


void SetAutoDisplay()
{
   if (AutoDisplay)
   {
      switch (Period())
      {
         case PERIOD_M1  :  SetValues(PERIOD_M1,  PERIOD_M5, PERIOD_M15,PERIOD_M30); break;
         case PERIOD_M5  :  SetValues(PERIOD_M5,  PERIOD_M15,PERIOD_M30,PERIOD_H1); break;
         case PERIOD_M15 :  SetValues(PERIOD_M5,  PERIOD_M15,PERIOD_M30,PERIOD_H1); break;
         case PERIOD_M30 :  SetValues(PERIOD_M5, PERIOD_M15,PERIOD_M30, PERIOD_H1); break;
         case PERIOD_H1  :  SetValues(PERIOD_M15, PERIOD_M30,PERIOD_H1, PERIOD_H4);  break;
         case PERIOD_H4  :  SetValues(PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1);  break;
         case PERIOD_D1  :  SetValues(PERIOD_H1,  PERIOD_H4, PERIOD_D1, PERIOD_W1); break;
         case PERIOD_W1  :  SetValues(PERIOD_H4,  PERIOD_D1, PERIOD_W1,PERIOD_MN1); break;
         case PERIOD_MN1 :  SetValues(PERIOD_H4,  PERIOD_D1, PERIOD_W1,PERIOD_MN1);  break;
      }
   }
   
}

bool NewBar()
{
   static datetime dt = 0;
   
   if (Time[0] != dt)
   {
      dt = Time[0];
      return(true);
   }
   return(false);
}


Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on พฤษภาคม 22, 2013, 03:56:57 pm
1. ใช้ icustom หาค่า indy ทั้ง 4 เส้นก่อนครับว่า หากเป็น 4 แดงคือค่าอย่างไร หากเป็นสีน้ำเงินเป็นค่าอย่างไร
2.นำค่าที่ได้มาสร้างเงื่อนไขเพื่อเปิดทำการชื้อขาย

หลักๆก็มีแค่นี้ครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 23, 2013, 12:31:17 pm
1. ใช้ icustom หาค่า indy ทั้ง 4 เส้นก่อนครับว่า หากเป็น 4 แดงคือค่าอย่างไร หากเป็นสีน้ำเงินเป็นค่าอย่างไร
2.นำค่าที่ได้มาสร้างเงื่อนไขเพื่อเปิดทำการชื้อขาย

หลักๆก็มีแค่นี้ครับ

ขอบคุณครับ ผมลองทำตามที่ท่าน admin บอกแล้วครับ โดยใช้โปรแกรม icustom ทดสอบค่า แล้วก็ได้ผลดังนั้นครับ จากนี้แล้วทำไงต่อครับ


...........................

int start()
  {   double b0;
 b0=iCustom(NULL,0,"ForexFreedomBars",0,0);
Print("Buffer 0 : ",b0);
 double b1;
 b1=iCustom(NULL,0,"ForexFreedomBars",1,0);
Print("Buffer 1 : ",b1);
 double b2;
 b2=iCustom(NULL,0,"ForexFreedomBars",2,0);
Print("Buffer 2 : ",b2);
 double b3;
 b3=iCustom(NULL,0,"ForexFreedomBars",3,0);
Print("Buffer 3 : ",b3);
 double b4;
 b4=iCustom(NULL,0,"ForexFreedomBars",4,0);
Print("Buffer 4 : ",b4);
 double b5;
 b5=iCustom(NULL,0,"ForexFreedomBars",5,0);
Print("Buffer 5 : ",b5);
 double b6;
 b6=iCustom(NULL,0,"ForexFreedomBars",6,0);
Print("Buffer 6 : ",b6);
 double b7;
 b7=iCustom(NULL,0,"ForexFreedomBars",7,0);
Print("Buffer 7 : ",b7);
return(0);
 }
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on พฤษภาคม 23, 2013, 01:13:11 pm
ที่ได้มาคือ EA ที่อ่านค่า buffer ทั้ง 8 ของอินดี้ ต่อไปก็ต้องทดสอบครับว่าถ้า อิดดี้เป็นสีแดงหรือสีน้ำเงิน Buffer แต่ละตัวเก็บค่าอะไรมั้งครับ เมื่อเรารู้ค่า buffer ที่สอดคล้องกับอินดี้ของเราแล้ว เราจะได้ค่าที่จะนำไปสร้าเงื่อนไขใช้ตรวจสอบได้ครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 27, 2013, 10:13:26 am
ผมลองเอาไปทดสอบแล้วครับ  มันได้ค่าตามนี้  แล้วจะทำอย่างไรต่อไปครับ

(http://www.bloggang.com/data/mikicool/picture/1369291805.gif)
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 27, 2013, 10:37:34 am
คือจากรูปข้างบนมันจะมีชุดตัวเลขอยู่ 6 ตัว คือ  1.28340   1.28330  1.28550  1.28560  1.28580  1.28570  ตัวเลข 6 ชุดนี้คือค่าบัฟเฟอร์หรือป่าวครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on พฤษภาคม 27, 2013, 11:29:31 am
คือจากรูปข้างบนมันจะมีชุดตัวเลขอยู่ 6 ตัว คือ  1.28340   1.28330  1.28550  1.28560  1.28580  1.28570  ตัวเลข 6 ชุดนี้คือค่าบัฟเฟอร์หรือป่าวครับ
ไม่ใช้ครับมันคือ error เท่าที่ผมสังเกตเห็นเป็น โบรเกอร์ 5 จุดหากจะเริ่มต้นเขียน EA แนะนำให้เริ่มตินที่โบรเกอร์ 4 จุดครับที่เป้นมาตราฐานก่อนครับเพื่อจะได้ไม่ งง ที่หลังครับ พอเขียนเป้นแล้วค่อยทำให้ EA ใช้งานที่ 5 จุดได้ครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 27, 2013, 12:54:43 pm
คือจากรูปข้างบนมันจะมีชุดตัวเลขอยู่ 6 ตัว คือ  1.28340   1.28330  1.28550  1.28560  1.28580  1.28570  ตัวเลข 6 ชุดนี้คือค่าบัฟเฟอร์หรือป่าวครับ
ไม่ใช้ครับมันคือ error เท่าที่ผมสังเกตเห็นเป็น โบรเกอร์ 5 จุดหากจะเริ่มต้นเขียน EA แนะนำให้เริ่มตินที่โบรเกอร์ 4 จุดครับที่เป้นมาตราฐานก่อนครับเพื่อจะได้ไม่ งง ที่หลังครับ พอเขียนเป้นแล้วค่อยทำให้ EA ใช้งานที่ 5 จุดได้ครับ

ช่วยแนะนำโบรกเกอร์ 4 จุด มาตรฐานหน่อยครับ  ยังไม่ค่อยรู้ครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on พฤษภาคม 27, 2013, 01:55:24 pm
Forex4you หรือ instaforex ก็ได้ครับที่จะให้หัดเขียนจากโบรเกอร์ 4 จุดเพราะ MQL4 จริงๆแล้วสร้างขึ้นมาใช้กับโบรเกอร์ 4 จุดครับแต่ยุกหลังมาโบรเกอร์เริ่มแตกจาก 4 จุดเป็น 5จุดครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: D_Diamond on พฤษภาคม 27, 2013, 02:40:24 pm
ค่า buffer เปิดดูได้ใน data window ครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 28, 2013, 02:17:47 pm
Forex4you หรือ instaforex ก็ได้ครับที่จะให้หัดเขียนจากโบรเกอร์ 4 จุดเพราะ MQL4 จริงๆแล้วสร้างขึ้นมาใช้กับโบรเกอร์ 4 จุดครับแต่ยุกหลังมาโบรเกอร์เริ่มแตกจาก 4 จุดเป็น 5จุดครับ

ผมลองเอา ea ไปรันที่ Forex4you ตามที่ท่าน admin แนะนำแล้วครับ ผลที่ได้ก็ตามรูปนี้ครับ   ไม่ทราบว่านี้คือค่าบัฟเฟอร์หรือป่าว

(http://www.bloggang.com/data/mikicool/picture/1369724896.gif)


คุณ D_Diamond

data window  มันอยู่ตรงไหนหรือครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on พฤษภาคม 28, 2013, 02:27:41 pm
Buffer เป็น 0 หมดแถมยังมี error ที่เปิดใช้งาน indicator ไม่ได้ไม่ทราบว่า indicator ได้มาจากไหนครับแล้วมีการการ lock การใช้งานไวหรือเปล่าครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: D_Diamond on พฤษภาคม 28, 2013, 05:57:45 pm
อยู่ที่เมนู view ครับ  อยากดูตรงไหนเอาเม้าส์ไปชี้ได้เลย
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on พฤษภาคม 29, 2013, 01:24:19 pm
Buffer เป็น 0 หมดแถมยังมี error ที่เปิดใช้งาน indicator ไม่ได้ไม่ทราบว่า indicator ได้มาจากไหนครับแล้วมีการการ lock การใช้งานไวหรือเปล่าครับ

ชื่อของมันคือ ForexFreedomBars อะครับ

http://forex-indicators.net/mt4-indicators/forex_freedom

นี้คือลิงค์ดาวโหลดของมัน

http://forex-indicators.net/files/indicators/mt4/MTF_Forex_Freedom_Bar.mq4


.................
@ D_Diamond  ขอบคุณครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on พฤษภาคม 29, 2013, 02:13:50 pm
นับจากด้านบนลงล่าง

ตัวที่ 1 สีแดงคือ  buf0 > 0 และ buf1==0
ตัวที่ 1 สีน้ำเงินคือ  buf0 == 0 และ buf1 > 0

ตัวที่ 2 สีแดงคือ  buf2 > 0 และ buf3==0
ตัวที่ 2 สีน้ำเงินคือ  buf2 == 0 และ buf3 > 0


ตัวที่ 3 สีแดงคือ  buf4 > 0 และ buf5==0
ตัวที่ 3 สีน้ำเงินคือ  buf4 == 0 และ buf5 > 0



ตัวที่ 4 สีแดงคือ  buf6 > 0 และ buf7==0
ตัวที่ 4 สีน้ำเงินคือ  buf6 == 0 และ buf7 > 0
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on มิถุนายน 03, 2013, 02:39:48 pm
นับจากด้านบนลงล่าง

ตัวที่ 1 สีแดงคือ  buf0 > 0 และ buf1==0
ตัวที่ 1 สีน้ำเงินคือ  buf0 == 0 และ buf1 > 0

ตัวที่ 2 สีแดงคือ  buf2 > 0 และ buf3==0
ตัวที่ 2 สีน้ำเงินคือ  buf2 == 0 และ buf3 > 0


ตัวที่ 3 สีแดงคือ  buf4 > 0 และ buf5==0
ตัวที่ 3 สีน้ำเงินคือ  buf4 == 0 และ buf5 > 0



ตัวที่ 4 สีแดงคือ  buf6 > 0 และ buf7==0
ตัวที่ 4 สีน้ำเงินคือ  buf6 == 0 และ buf7 > 0

ขอบคุณท่าน admin มากครับ เดียวจะลองเขียน ea ดูครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on สิงหาคม 14, 2013, 02:53:58 pm
วันนี้ผมลองเขียน ea ดู

โดยใช้ข้อมูลในหน้าที่ 257 ของหนังสือ คู่มือการเขียนโปรแกรม MQL4 เป็นฐาน ได้ดังนี้

..................

extern double Lot=0.1;
int start()
{ double up=iCustom(NULL,0,"Forex Freedom Bars",0,0);
double down=iCustom(NULL,0,"Forex Freedom Bars",1,0);
if(OrdersTotal()==0)
{
if(up>0)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"EX3",0,0,Green);
}
if(down>0)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"EX3",0,0,Red);
}
}
if(OrdersTotal()==1)
{
if(up>0)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots()MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
}
}
if(down>0)
{OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY)
{OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
}}
return(0);
}


....................

แต่ปรากฎว่ามันขึ้น เออเร่อ  ตามรูป

ไม่ทราบว่า  เลข 31,1 มันคืออะไรหรือครับ

(http://www.bloggang.com/data/m/mikicool/picture/1376466026.gif)
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on สิงหาคม 14, 2013, 05:16:03 pm
ผิดที่เครื่องหมาย }

extern double Lot=0.1;
int start()
{ double up=iCustom(NULL,0,"Forex Freedom Bars",0,0);
double down=iCustom(NULL,0,"Forex Freedom Bars",1,0);
if(OrdersTotal()==0)
{
if(up>0)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"EX3",0,0,Green);
}
if(down>0)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"EX3",0,0,Red);
}
}
if(OrdersTotal()==1)
{
if(up>0)
{
   OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    if(OrderType()==OP_SELL)
      {
        OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
      }
}
if(down>0)
{
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

    if(OrderType()==OP_BUY)
    {
       OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
    }
   
 }
}
return(0);
}
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on สิงหาคม 17, 2013, 11:28:08 am
ผิดที่เครื่องหมาย }

extern double Lot=0.1;
int start()
{ double up=iCustom(NULL,0,"Forex Freedom Bars",0,0);
double down=iCustom(NULL,0,"Forex Freedom Bars",1,0);
if(OrdersTotal()==0)
{
if(up>0)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"EX3",0,0,Green);
}
if(down>0)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"EX3",0,0,Red);
}
}
if(OrdersTotal()==1)
{
if(up>0)
{
   OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    if(OrderType()==OP_SELL)
      {
        OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,Pink);
      }
}
if(down>0)
{
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

    if(OrderType()==OP_BUY)
    {
       OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,Pink);
    }
   
 }
}
return(0);
}



ขอบคุณมากครับ 
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on สิงหาคม 20, 2013, 10:56:08 pm
มาวันนี้  ผมลองเอา โค๊ด ea ที่ท่าน admin ช่วยแก้ไขให้ ในริปที่ 17 มาลองรันดู ก็ได้ตามรูปข้างล่างครับ  มันเป็นอินดิเคเตอร์ ที่ชื่อ Forex Freedom Bar เป็นพวก icustom indicator

โค๊ดที่ท่าน admin ช่วยแก้ไขให้นี้ เป็นโค๊ดที่ดัดแปลงมาจากหนังสือหน้าที่ 257  เป็นการเข้าออร์เดอร์ โดยใช้การเปลี่ยนสีของอินดี้

แต่ Forex Freedom Bar  มันมีการเปลี่ยนสี 4 แถบ นั้นคือ แถบ 5  15  30  60 นาที  จึงงงๆว่า จะต้องทำอย่างไรต่อ เมื่อเงื่อนไขคือ  ถ้าForex Freedom Bar  เปลี่ยนเป็นเป็นสีน้ำเงินทั้ง 4 เส้น ให้เปิดออร์เดอร์ buy  และในทางตรงกันข้าม ถ้าทั้ง 4 เส้น เป็นสีแดงทั้งหมดให้เปิดออร์เดอร์ sell

รูปข้างล่างนี้คือรูป error ที่ลองรันดู  ไม่ทราบว่าจะต้องทำอย่างไรต่อไปครับท่าน admin


(http://www.bloggang.com/data/m/mikicool/picture/1377013203.gif)
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on สิงหาคม 20, 2013, 11:15:46 pm
History Error ครับไม่เกี่ยวกับ Code แล้วครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: ruddy01 on สิงหาคม 21, 2013, 01:38:04 am
History Error ครับไม่เกี่ยวกับ Code แล้วครับ

แล้ว History Error  มันคืออะไรหรือครับ
Title: Re: จะเริ่มเขียน ea ตัวนี้อย่างไรดีครับ
Post by: admin on สิงหาคม 21, 2013, 12:11:11 pm
ก็ข้อมูลกราฟไม่สมบูรณ์ไงครับ