[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 20

 
Prix:
Добрый день. Если кто знает, подскажите где можно скачать индикатор ЗИГЗАГ, который отмечает точку появления нового луча ( например другим цветом). Если такой вообще есть...

Поищите DT_ZZ_Nen
 
Vinin:

Поищите DT_ZZ_Nen

Спасибо, сейчас попробую
 
Помогите разобраться с массивами передаваемыми в функцию iMAOnArray.
Эта функция у меня почему-то работает только с буферным массивом (в примере VMA)
и никак не хочет работать с "обычным" (в примере SMA).

Ниже набросок того как я делаю это в своих программах. Что не так?

double MA1[],MA2[],VMA[],SMA[];

int init()
{

   SetIndexBuffer(0,MA1);
   SetIndexBuffer(1,MA2);
   SetIndexBuffer(2,VMA);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexEmptyValue(2,0.0);  
   ArrayResize(SMA,1);  
   ArrayInitialize(SMA,0);

 return(0);
}

int start() 
{  
 
SMA[i]=...........;
VMA[i]=...........;

MA1[i]=iMAOnArray(SMA,0,8,0,0,0); //----этот вариант НЕ работает
MA2[i]=iMAOnArray(VMA,0,8,0,0,0); //----этот вариант всегда работает  
   
  return(0);
}

 

Я вам уже писал об этом, но вы предпочли пропустить это мимо ушей :

При объявлении массива, который не является индикаторным буфером, вы должны ОБЯЗАТЕЛЬНО УКАЗАТЬ ЕМУ РАЗМЕР и желательно побольше, для того что бы интерпретатор выделил место в памяти.

 
Vinin:

Поищите DT_ZZ_Nen

Если я правильно понял, точка показывает не момент появления нового луча, а максимум или минимум свечи, на которой он появился... Но тоже не плохо.. спасибо...
 
Fox_RM:
Помогите разобраться с массивами передаваемыми в функцию iMAOnArray.
Эта функция у меня почему-то работает только с буферным массивом (в примере VMA)
и никак не хочет работать с "обычным" (в примере SMA).

Ниже набросок того как я делаю это в своих программах. Что не так?

Из приведённого отрезка кода не понятна последовательность действий по подготовке массивов SMA[] и VMA[], при условии, что при Вы у "небуферного" массива объявили ему размер.

Эти массивы нужно сначала заполнить данными, а потом создавать массивы MA1[] и MA2[] с использованием iMAOnArray().

 
FAQ:

Я вам уже писал об этом, но вы предпочли пропустить это мимо ушей :

При объявлении массива, который не является индикаторным буфером, вы должны ОБЯЗАТЕЛЬНО УКАЗАТЬ ЕМУ РАЗМЕР и желательно побольше, для того что бы интерпретатор выделил место в памяти.

Я указывал ему размер от 1 до Bars. Как при объявлении так и ArrayResize, ничего не менялось;(
 
double SMA[];

int init()
{
   ArrayResize(SMA,1);     //--- Размер различный задавал от 1 до Bars 
   ArrayInitialize(SMA,0);

 return(0);
}

int start() 
{  
 
SMA[i]=...........; // --- Заполнение массива.

MA1[i]=iMAOnArray(SMA,0,8,0,0,0); //----MA1 буферный.
   
  return(0);
}

Обычно c небуферным так делаю.

 
double MA1[],MA2[],VMA[],SMA[3000];<= вписать размер!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
FAQ:

Я Вас понял) Я указывал ему размер от 1 до Bars. Как при ОБЪЯВЛЕНИИ так и ArrayResize. Может ошибка в чем-то другом?
Причина обращения: