for (i=Bars;i>=0;i--) f_MM[Bars+1]=0.0; for (i=Bars;i>=0;i--) f_NN[Bars+1]=0.0;
Вероятно, в поле индекса надо написать i, а не Bars+1? К тому же, начало цикла неверное. Надо начинать от (Bars-1).
Посмотрите вот более правильный вариант:
#property indicator_minimum -1 // минимум индикатора
#property indicator_maximum 1 // максимум идикатора
#property indicator_separate_window // Индикатор рисуется в отдельном окне
#property indicator_buffers 2 // Количество индикаторных массивов или линий которые будут отрисованны
#property indicator_color1 Blue // Цвет линии или гистограммы индикатора
#property indicator_color2 Yellow // Цвет линии или гистограммы индикатора
double f_MM[]; // Обьявление массива для отрисовки
double f_NN[]; // Обьявление массива для отрисовки
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3); //Функция определяющая параметры отрисовки массива
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,3); //Функция определяющая параметры отрисовки массива
SetIndexBuffer(0,f_MM);
SetIndexBuffer(1,f_NN); //Функция определяющая массив который будет отрисован в отдельном окне
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i;
//----
if(Bars>0)
{
for(i=Bars-1;i>=0;i--) f_MM[i]=MathSin(i);
for(i=Bars-1;i>=0;i--) f_NN[i]=MathCos(i);
}
//----
return(0);
}
//-------------------------------
Кроме того, этот индикатор очень затратный - на каждом тике пересчитывает все данные. Посмотрите массу исходников ( /experts/samples/indicators и "MQL4: automated forex trading" ) с экономично написанными индикаторами.
Уважаемый Renat большое спасибо за то что Вы указали мне на мои ошибки!
Бывает так что накосячишь, а потом смотришь в книгу а видишь ...
Сам удивляюсь как у меня такое могло получиться?!.
Извиняюсь за лишнее беспокойство.
Заоодно поздравляю Вас и вашу команду разработчиков с Наступающим Новым годом!
С наилучшими пожеланиями.
Kikitra.
Бывает так что накосячишь, а потом смотришь в книгу а видишь ...
Сам удивляюсь как у меня такое могло получиться?!.
Извиняюсь за лишнее беспокойство.
Заоодно поздравляю Вас и вашу команду разработчиков с Наступающим Новым годом!
С наилучшими пожеланиями.
Kikitra.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Беру ниженаписанный элементарный код компилирую,
получается индикатор
потом индикатор мышью бросаю на график,
передвигаю мышью линию между графиком и индикатором
на которой выскакивает всплывающее окно "Взять и перетащить границу окна"
и наблюдаю чудный эффект внезапного попеременного появления и исчезновения гистограммы
как в отрицателном так и в положительном поле индикатора чего конечно
не должно быть так как все массивы в циклах заполненны нолями.
Пожалуйста подскажите как с этим быть .
Но если я сам накосячил с кодом то прошу меня извинить.
А может у меня терминал криво установлен?
#property indicator_minimum -1 // минимум индикатора #property indicator_maximum 1 // максимум идикатора #property indicator_separate_window // Индикатор рисуется в отдельном окне #property indicator_buffers 2 // Количество индикаторных массивов или линий которые будут отрисованны #property indicator_color1 Blue // Цвет линии или гистограммы индикатора #property indicator_color2 Yellow // Цвет линии или гистограммы индикатора double f_MM[]; // Обьявление массива для отрисовки double f_NN[]; // Обьявление массива для отрисовки //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() {//1 IndicatorBuffers(2); SetIndexStyle(0,DRAW_HISTOGRAM,0,3); //Функция определяющая параметры отрисовки массива SetIndexStyle(1,DRAW_HISTOGRAM,0,3); //Функция определяющая параметры отрисовки массива SetIndexBuffer(0,f_MM); SetIndexBuffer(1,f_NN); //Функция определяющая массив который будет отрисован в отдельном окне return(0); }//-1 //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i; for (i=Bars;i>=0;i--) f_MM[Bars+1]=0.0; for (i=Bars;i>=0;i--) f_NN[Bars+1]=0.0; //------------------------------------------------ return; } //------------------------------------------------