下载MetaTrader 5
要添加评论,请登录注册
您想要入金账户吗?以任何方便的办法去做它!
Gerald Deer
199
Gerald Deer 2009.06.29 12:45 
#property  copyright "Copyright ?2005, Yura Prokofiev"
#property  link      "Yura.prokofiev@gmail.com"

#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_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   IndicatorDigits(Digits+1);

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

   IndicatorShortName("SOLAR WIND");
   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[i]+Low[i])/2;
      Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;     
      Value=MathMin(MathMax(Value,-0.999),0.999); 
      ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
      Value1=Value;
      Fish1=ExtBuffer0[i];
      
    }


   bool up=true;
   for(i=limit-2; i>=0; i--)
     {
      current=ExtBuffer0[i];
      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[i]=current;
         ExtBuffer1[i]=0.0;
        }
        
       else
         {
          ExtBuffer1[i]=current;
          ExtBuffer2[i]=0.0;
         }
     }

   return(0);
  }
新学MT4,还很菜,请大家帮忙做个例子,在EA中如何调用这个指标并取值比对?
wangguangli
127
wangguangli 2009.06.29 16:33  
goldensun 写道 >>
新学MT4,还很菜,请大家帮忙做个例子,在EA中如何调用这个指标并取值比对?

把你的这个指标加载在交易界面上,用鼠标点击 ,滑动鼠标,看到数据的变化参数的个数,用函数

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
就可以实现了,但是你的指标必须在terminal_directory\experts\indicators目录内编写客户指标(*.EX4文件)。 还不明白的话请QQ450459237

wangguangli
127
wangguangli 2009.06.29 16:33  
goldensun 写道 >>
新学MT4,还很菜,请大家帮忙做个例子,在EA中如何调用这个指标并取值比对?

把你的这个指标加载在交易界面上,用鼠标点击 ,滑动鼠标,看到数据的变化参数的个数,用函数

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
就可以实现了,但是你的指标必须在terminal_directory\experts\indicators目录内编写客户指标(*.EX4文件)。 还不明白的话请QQ450459237

Gerald Deer
199
Gerald Deer 2009.06.29 18:42  

非常感谢您的回答!

我用下面这两条语句调不出数据,请费心帮我看看。

double b1=iCustom(NULL, 0, "SolarWind",10,1,0);
double b2=iCustom(NULL, 0, "SolarWind ",10,1,1);

liuxiaodong
282
liuxiaodong 2009.07.01 13:08  

1、你首先要把指标运行一次 ,这样mq4文件才能编译成ex4文件,icustom调用的是ex文件。

2、你的指标文件名如果是SolarWind ,那为什么第二个要加上空格呢?不明白。

3、测试指标最好办法是用print 看看到底问题处在那个环节,贴问题上来 能把错误提示也贴上来就更快解决。

/
要添加评论,请登录注册