Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Размести программу в Маркете - это 7 миллионов потенциальных клиентов
yu-sha
1036
yu-sha 2009.12.23 02:55 

Индикатор iSinDbl.mq5

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_type1   DRAW_LINE

input double K=100.0;  
double bSin[];

void OnInit() 
{
  SetIndexBuffer(0,bSin,INDICATOR_DATA);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i,limit;
   
   if (prev_calculated==0) 
     limit=0; 
   else 
     limit=prev_calculated-1;
     
   for(i=limit;i<rates_total;i++) 
      bSin[i]=K;
      
   return(rates_total);
  }

 Скрипт 

void OnStart() {
  double d[];
  int h,c=-1;

  h=iCustom(Symbol(),PERIOD_CURRENT,"iSinInt",18);
  if (h!=INVALID_HANDLE) {
    while(!IsStopped() && c<0)
      c=CopyBuffer(h,0,D'2009.12.22 18:00',1,d);
    Print("iSinInt: c=",c,"d[0]=",d[0]);
  }

  c=-1;
  double b=18.6;
  h=iCustom(Symbol(),PERIOD_CURRENT,"iSinDbl",b);
  if (h!=INVALID_HANDLE) {
    while(!IsStopped() && c<0)
      c=CopyBuffer(h,0,D'2009.12.22 18:00',1,d);
    Print("iSinDbl#1: c=",c,"d[0]=",d[0]);
  }

  c=-1;
  h=iCustom(Symbol(),PERIOD_CURRENT,"iSinDbl",18.6);
  if (h!=INVALID_HANDLE) {
    while(!IsStopped() && c<0)
      c=CopyBuffer(h,0,D'2009.12.22 18:00',1,d);
    Print("iSinDbl#2: c=",c,"d[0]=",d[0]);
  }

  c=-1;
  h=iCustom(Symbol(),PERIOD_CURRENT,"iSinDbl",double(18.6));
  if (h!=INVALID_HANDLE) {
    while(!IsStopped() && c<0)
      c=CopyBuffer(h,0,D'2009.12.22 18:00',1,d);
    Print("iSinDbl#3: c=",c,"d[0]=",d[0]);
  }
}

 В журнале Experts результат срабатывания скрипта

 

 

 

В терминале индикатор рисует правильно - при К=18.6 отрисовывает 18.6

Все хорошо и в случае с индикатором iSinInt (в коде меняю лишь тип входного параметра: input int K=100)

 

Почему iCustom не принимает 18.6 в качестве параметра индикатора?

Вот выдержка из хелпа iCustom:

"Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию." 

Rashid Umarov
Админ
11562
Rashid Umarov 2009.12.23 09:54  
Спасибо за сообщение, проверим и исправим.
Ilyas
1196
Ilyas 2010.01.12 15:32  

Ошибка исполняющей среды, исправлено. Ждите обновлений.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий