EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: zerozaaa on มีนาคม 09, 2012, 11:43:37 am

Title: ถ้าเรา สามารถใช้ Code ใน Indicator มาใส่ใน Ea ได้ไหมครับ
Post by: zerozaaa on มีนาคม 09, 2012, 11:43:37 am

#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Black
#property  indicator_color2  Lime
#property  indicator_color3  Red
 
extern int period=10;

double         ExtBuffer0[];
double         ExtBuffer1[];
double         ExtBuffer2[];


int init()
  {
   
   
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Lime);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   IndicatorDigits(Digits+1);

   SetIndexBuffer(0,ExtBuffer0);
   SetIndexBuffer(1,ExtBuffer1);
   SetIndexBuffer(2,ExtBuffer2);

   IndicatorShortName("Fisher");
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);

   return(0);
  }


int start()
  {
   //int     period=10;
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev,current,old;
   double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
   double price;
   double MinL=0;
   double MaxH=0; 
   

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;


   for(int i=0; i<limit; i++)
    {  MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)];
       MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];
      price = (High+Low)/2;
      Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;     
      Value=MathMin(MathMax(Value,-0.999),0.999);
      ExtBuffer0=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      Value1=Value;
      Fish1=ExtBuffer0;
     
    }


   bool up=true;
   for(i=limit-2; i>=0; i--)
     {
      current=ExtBuffer0;
      prev=ExtBuffer0[i+1];
           
      if (((current<0)&&(prev>0))||(current<0))   up= false;   
      if (((current>0)&&(prev<0))||(current>0))   up= true;
     
      if(!up)
        {
         ExtBuffer2=current;
         ExtBuffer1=0.0;
        }
       
       else
         {
          ExtBuffer1=current;
          ExtBuffer2=0.0;
         }
     }

   return(0);
  }

ถ้าเป็นสัญญาสี เขียวจะให้ Return ค่าออกมา ครับ และ  IndicatorCounted() เมือเป็น EA จะเอาค่าอะไรมาแทน  ExtBuffer2[] จำเป็นต้องใส่ไหมครับ
Title: Re: ถ้าเรา สามารถใช้ Code ใน Indicator มาใส่ใน Ea ได้ไหมครับ
Post by: admin on มีนาคม 09, 2012, 12:41:09 pm
มันเอามาใช้ไม่ได้ทั้งหมดครับเพราะมีบางฟังก์ชั่นไม่ทำงานเมื่อเอามาเป็น EA นะครับ
Title: Re: ถ้าเรา สามารถใช้ Code ใน Indicator มาใส่ใน Ea ได้ไหมครับ
Post by: zerozaaa on มีนาคม 09, 2012, 12:50:11 pm
อ่อครับ ปม ขอบคุณครับ
Title: Re: ถ้าเรา สามารถใช้ Code ใน Indicator มาใส่ใน Ea ได้ไหมครับ
Post by: D_Diamond on มีนาคม 09, 2012, 01:08:10 pm
ถ้าต้องการใช้ค่าสีเขียว  ก็ใช้ iCustom เรียกอินดี้ แล้วดึง buffer1 มาใช้ครับ ง่ายกว่าเยอะ

อินดี้กับอีเอ เขาทำแยกกันไว้อยู่แล้ว  อย่าเอามารวมกันให้มั่วเลยครับ