Что не так в этом коде?

 
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1  Green
#property indicator_width1  2
#property indicator_color2  Red
#property indicator_width2  2

//----- Input Parameters
//+------------------------------------------------------------------+
extern int ATRPeriod = 21;
extern int MAPeriod  = 21;
extern int MAMethod  = 3; // 0=SMA,1=EMA,2=SSMA,3=LWMA
extern int MAPrice   = 5; // 0=Close,1=Open,2=High,3=Low,4=Median(HL/2),5=Typical(HLC/3),6=Weighted(HLCC/4)
extern int PriceMode = 8; // 0=Close,1=Open,2=High,3=Low,4=Median(HL/2),5=Typical(HLC/3),6=Weighted(HLCC/4),7=Simple(OC/2),8=Quarted(HLOC/4),9=Bookkeeper((C*5+O*2+H+L)/9)
//+------------------------------------------------------------------+
//----- Buffers
double MAATR[];
double ATR[];
double MA[];
//-----
int Trend;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//----- Drawing Settings
  IndicatorDigits(Digits);
//-----
  IndicatorBuffers(3);
//-----
  SetIndexBuffer(0,MA);
  SetIndexStyle(0,DRAW_LINE);
  SetIndexLabel(0,"MA");
  SetIndexDrawBegin(0,MAPeriod);
//-----
  SetIndexBuffer(1,MAATR);
  SetIndexStyle(1,DRAW_LINE);
  SetIndexLabel(1,"MAATR");
  SetIndexDrawBegin(1,MAPeriod);
//-----
  SetIndexBuffer(2,ATR);
//-----
  return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
  return(0);
}
//+------------------------------------------------------------------+
//| Price                                                            |
//+------------------------------------------------------------------+
double Price(int i)
{
  switch(PriceMode)
  {
    case 0  : return(Close[i]);
    case 1  : return(Open[i]);
    case 2  : return(High[i]);
    case 3  : return(Low[i]);
    case 4  : return((High[i]+Low[i])/2.0);
    case 5  : return((Close[i]+High[i]+Low[i])/3.0);
    case 6  : return((2*Close[i]+High[i]+Low[i])/4.0);
    case 7  : return((Open[i]+Close[i])/2.0);
    case 8  : return((Open[i]+Close[i]+High[i]+Low[i])/4.0);
    case 9  : return((Close[i]*5+Open[i]*2+High[i]+Low[i])/9);
    default : return(Close[i]);
  }
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
//-----
  int i,limit;
  int counted_bars=IndicatorCounted();
  if (counted_bars>0) counted_bars--; 
  limit=Bars-counted_bars;
//-----
  for(i=limit; i>=0; i--)
  {
    ATR[i]=iATR(NULL,0,ATRPeriod,i);
    MA[i]=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,i);
    if(Price(i) < MA[i] - ATR[i]) {Trend = +1;}
    if(Price(i) > MA[i] + ATR[i]) {Trend = -1;}
    MAATR[i] = MA[i] + Trend*ATR[i];
  }
//-----
  return(0);
}
//+------------------------------------------------------------------+
 
не шарю в програмировании,помогите установить этот код
 

1. Этот код без "шапки".

2. Start()

Событие Start() – это специальное событие для активизации скрипта после его загрузки. Это событие обрабатывается функцией OnStart. Событие Start экспертам и пользовательским индикаторам не посылается. 

 
barabashkakvn:

1. Этот код без "шапки".

2. Start()

Событие Start() – это специальное событие для активизации скрипта после его загрузки. Это событие обрабатывается функцией OnStart. Событие Start экспертам и пользовательским индикаторам не посылается. 

а что нужно сделать чтобы им можно было пользоваться?
 
Код без "шапки" наводит на мысль о том, что он (этот код) был взят (намеренно или не намеренно) не совсем законно у своего законного автора.
 
barabashkakvn:
Код без "шапки" наводит на мысль о том, что он (этот код) был взят (намеренно или не намеренно) не совсем законно у своего законного автора.
код взят с этого же сайта
 
mrDoktor:
код взят с этого же сайта

Если код с этого сайта - дайте пожалуйста ссылку.

 
barabashkakvn:

Если код с этого сайта - дайте пожалуйста ссылку.

2 я страница общих вопросов"Кто знает что за Ма"
 
Зачем Вам моя шапка? :D

Вот Вам скомпилированный файл.
Файлы:
fewfwfew.mq4  4 kb
 

Возьмите код Параболика, но отрисовка идёт линией:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Кто знает что это за МА(черного цвета)?

abolk, 2014.11.09 17:56

на картинке -- параболик отрисованный линией:

 

-- во вложении -- сам параболик, что поставляется с терминалом 


собственно, что было изменено в коде:

//--- drawing settings
   IndicatorDigits(Digits);
   SetIndexStyle(0,DRAW_LINE);//DRAW_ARROW);
   //SetIndexArrow(0,159);
-- т.е. отрисовка стилем  DRAW_ARROW была заменена на стиль  DRAW_LINE.

 P.S. Просто перейдите по ссылке "Кто знает что это за МА(черного цвета)?" и в конце сообщения будет работающий видоизменённый пароболик. только обратите внимание, что индикатор для терминала MetaTrader 4.

 

А вот исправленный код из первого Вашего сообщения:

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                                Copyright 2014, Карпутов Владимир |
//|                                            http://wmua.ru/slesar |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Карпутов Владимир"
#property link      "http://wmua.ru/slesar"
#property version   "1.00"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1  Green
#property indicator_width1  2
#property indicator_color2  Red
#property indicator_width2  2

//----- Input Parameters
//+------------------------------------------------------------------+
extern int ATRPeriod = 21;
extern int MAPeriod  = 21;
extern int MAMethod  = 3; // 0=SMA,1=EMA,2=SSMA,3=LWMA
extern int MAPrice   = 5; // 0=Close,1=Open,2=High,3=Low,4=Median(HL/2),5=Typical(HLC/3),6=Weighted(HLCC/4)
extern int PriceMode = 8; // 0=Close,1=Open,2=High,3=Low,4=Median(HL/2),5=Typical(HLC/3),6=Weighted(HLCC/4),7=Simple(OC/2),8=Quarted(HLOC/4),9=Bookkeeper((C*5+O*2+H+L)/9)
//+------------------------------------------------------------------+
//----- Buffers
double MAATR[];
double ATR[];
double MA[];
//-----
int Trend;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----- Drawing Settings
   IndicatorDigits(Digits);
//-----
   IndicatorBuffers(3);
//-----
   SetIndexBuffer(0,MA);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexLabel(0,"MA");
   SetIndexDrawBegin(0,MAPeriod);
//-----
   SetIndexBuffer(1,MAATR);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexLabel(1,"MAATR");
   SetIndexDrawBegin(1,MAPeriod);
//-----
   SetIndexBuffer(2,ATR);
//-----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Price                                                            |
//+------------------------------------------------------------------+
double Price(int i)
  {
   switch(PriceMode)
     {
      case 0  : return(Close[i]);
      case 1  : return(Open[i]);
      case 2  : return(High[i]);
      case 3  : return(Low[i]);
      case 4  : return((High[i]+Low[i])/2.0);
      case 5  : return((Close[i]+High[i]+Low[i])/3.0);
      case 6  : return((2*Close[i]+High[i]+Low[i])/4.0);
      case 7  : return((Open[i]+Close[i])/2.0);
      case 8  : return((Open[i]+Close[i]+High[i]+Low[i])/4.0);
      case 9  : return((Close[i]*5+Open[i]*2+High[i]+Low[i])/9);
      default : return(Close[i]);
     }
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//-----
   int i,limit;
   int counted_bars=IndicatorCounted();
//---- последний посчитанный бар будет пересчитан
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- основной цикл
   for(i=0; i<limit; i++)
     {
      ATR[i]=iATR(NULL,0,ATRPeriod,i);
      MA[i]=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,i);
      if(Price(i) < MA[i] - ATR[i]) {Trend = +1;}
      if(Price(i) > MA[i] + ATR[i]) {Trend = -1;}
      MAATR[i]=MA[i]+Trend*ATR[i];
     }
//-----
   return(0);
  }
//+------------------------------------------------------------------+
Причина обращения: