Индикатор в полную высоту! - страница 2

 
Всё равно не понятно, зачем выводить на экран результат работы ГСЧ?
 
evillive:
Всё равно не понятно, зачем выводить на экран результат работы ГСЧ?
это для примера чтоб забить чемто буфер. чтоб было с чем работать
 
bird:

Тоже самое:



Тогда Вам не помочь

 

А почему у вас так а у меня так?

А всё работает. ПЕРЕЗАГРУЗИЛ ТЕРМЕНАЛ

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

for(int i=Bars-counted_bars; i>=0; i--)
{
ExtMapBuffer2[i]=10*MathRand();
ExtMapBuffer1[i]=iCCIOnArray(ExtMapBuffer2,0,120,i);
}


спасибо

 

У меня возникла вторая проблемма

после того как я переключу с одного таймфрейма на другой и затем обратно ExtMapBuffer1[i] заполняется нулями, (к примеру с M1 на M5 а затем обратно с M5 на M1)

по какойто причине iCCIOnArray(ExtMapBuffer2,0,120,i) выдаёт 0

ExtMapBuffer1[i]=iCCIOnArray(ExtMapBuffer2,0,120,i);

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red

//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

//---- indicators
IndicatorBuffers(2);

SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);

SetIndexBuffer(1,ExtMapBuffer2);

//ArraySetAsSeries(ExtMapBuffer2,true);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
int i=13;
Print("BEFORE ExtMapBuffer2["+i+"]="+ExtMapBuffer2[i]+" ExtMapBuffer1["+i+"]="+ExtMapBuffer1[i]+" iCCIOnArray(ExtMapBuffer2,0,120,"+i+")="+iCCIOnArray(ExtMapBuffer2,0,120,i));

for(i=Bars-counted_bars; i>=0; i--)
{
ExtMapBuffer2[i]=10*MathRand();
ExtMapBuffer1[i]=iCCIOnArray(ExtMapBuffer2,0,120,i);
}

i=13;
//ExtMapBuffer1[i]=i;
Print("AFTER ExtMapBuffer2["+i+"]="+ExtMapBuffer2[i]+" ExtMapBuffer1["+i+"]="+ExtMapBuffer1[i]+" iCCIOnArray(ExtMapBuffer2,0,120,"+i+")="+iCCIOnArray(ExtMapBuffer2,0,120,i)+" counted_bars="+counted_bars);
//----
return(0);
}

//+------------------------------------------------------------------+



int i=13;
Print("BEFORE ExtMapBuffer2["+i+"]="+ExtMapBuffer2[i]+" ExtMapBuffer1["+i+"]="+ExtMapBuffer1[i]+" iCCIOnArray(ExtMapBuffer2,0,120,"+i+")="+iCCIOnArray(ExtMapBuffer2,0,120,i));
//...
i=13;
Print("AFTER ExtMapBuffer2["+i+"]="+ExtMapBuffer2[i]+" ExtMapBuffer1["+i+"]="+ExtMapBuffer1[i]+" iCCIOnArray(ExtMapBuffer2,0,120,"+i+")="+iCCIOnArray(ExtMapBuffer2,0,120,i)+" counted_bars="+counted_bars);


 
bird:

У меня возникла вторая проблемма

после того как я переключу с одного таймфрейма на другой и затем обратно ExtMapBuffer1[i] заполняется нулями, (к примеру с M1 на M5 а затем обратно с M5 на M1)

по какойто причине iCCIOnArray(ExtMapBuffer2,0,120,i) выдаёт 0


Сделайте два цикла

Только заголовки циклов так не совсем корректно делать, но это уже другой вопрос.

for(i=Bars-counted_bars; i>=0; i--)
  {
   ExtMapBuffer2[i]=10*MathRand();
  }
for(i=Bars-counted_bars; i>=0; i--)
  {
    ExtMapBuffer1[i]=iCCIOnArray(ExtMapBuffer2,0,120,i);
  }
 

Тоже самое

переключу с одного таймфрейма на другой и затем обратно (с M1 на M5 а затем обратно с M5 на M1)

Буфер заполнился

ExtMapBuffer2[i]=10*MathRand();

но потом iCCIOnArray занулило всё

ExtMapBuffer1[i]=iCCIOnArray(ExtMapBuffer2,0,120,i)==0

по моему чтото нето с буфером ExtMapBuffer2. Я читал что для OnArray функции нужен какойто специальный буфер.


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