Проблема в коде помогите непойму почему данные улетают

 
//+------------------------------------------------------------------+
//|                                                         safe.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red
//---- input parameters
extern int       Median=10;
extern int       Max=15;
extern int       MASAFE=3;
//---- buffers
double BuffUP[];
double BuffDown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,BuffUP);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,BuffDown);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
int limit;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;//----
double massup[],massdown[];
   ArrayResize(massup,limit);
   ArrayResize(massdown,limit);
   ArraySetAsSeries(massup,true);
   ArraySetAsSeries(massdown,true);
double ExtMapBuffer1[];
   ArrayResize(ExtMapBuffer1,limit);
   ArraySetAsSeries(ExtMapBuffer1,true);

double ExtMapBuffer2[];
   ArrayResize(ExtMapBuffer2,limit);
   ArraySetAsSeries(ExtMapBuffer2,true);

double ExtMapBuffer3[];
   ArrayResize(ExtMapBuffer3,limit);
   ArraySetAsSeries(ExtMapBuffer3,true);

double diff;
   for (int i=limit; i>=0;i--)
   ExtMapBuffer1[i]=High[i]-Low[i];
   for (i=limit; i>=0;i--)
   ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1,limit,Median,0,MODE_SMA,i);
   
   
    for ( i=limit; i>=0;i--)
   {
   ExtMapBuffer3[i]=ExtMapBuffer2[i];
      for (int R=0; R<Max;R++)  if (ExtMapBuffer3[i]<ExtMapBuffer2[i+R]) ExtMapBuffer3[i]=ExtMapBuffer2[i+R];

   }
   

    for ( i=limit; i>=0;i--)
   {
   massup[i]=High[i]+ExtMapBuffer3[i];
   massdown[i]=Low[i]-ExtMapBuffer3[i];
   }
   for (i=limit; i>=0;i--)
        {
    BuffUP[i]=iMAOnArray(massup,limit,MASAFE,0,MODE_EMA,i);
    BuffDown[i]=iMAOnArray(massdown,limit,MASAFE,0,MODE_EMA,i);
        }
//----
   return(0);





вроде все нормально считает

а после тика данные уходят кудато непойму.....

 
CoreWinTT писал(а) >>

вроде все нормально считает

а после тика данные уходят кудато непойму.....

Может так подойдет

Файлы:
safe.mq4  3 kb
 

неа неподошло

после тика улетают

 

Убирайте такое:

   ArrayResize(massup,limit);
   ArrayResize(massdown,limit);
   ArraySetAsSeries(massup,true);
   ArraySetAsSeries(massdown,true);

Оъявлено 5 массив, и 2 буфера. Всего буферов может быть 8. Используйте буферы.

Данные исчезают от масшатабирования массивов в размер limit, а limit равно 0 или 1.

 
CoreWinTT писал(а) >>

неа неподошло

после тика улетают

Малость поправил

Файлы:
safe_1.mq4  3 kb
 
Vinin писал(а) >>

У меня работают нормально

У меня нет

 
Integer писал(а) >>

У меня нет

Я исправился :), только выше

 
limit=Bars-counted_bars;//----
int Bars

Количество баров на текущем графике.


Функция IndicatorCounted() Функция возвращает количество баров, не измененных после последнего вызова индикатора.

получаеться неправильно

только барс надо оставить

 

При вызове iMAOnArray() вместо limit надо поставить 0.

 

взял из старого индюка как странно что там все работае нормально

всем спасибо =)

Причина обращения: