Не отображается индикатор..... ошибка в ДНК или "неправильные пчелы", помогите определиться ) - страница 3

 

Вопрос к Модератору.

Что означают серенькие и голубенькие кружочки перед названием темы.... и треугольники..... и где про это прочитать можно?

 
rider:

Вопрос к Модератору.

Что означают серенькие и голубенькие кружочки перед названием темы.... и треугольники..... и где про это прочитать можно?

Серенький кружок - тема тобой прочитана, голубой кружок - еще не прочитана.

 

спасибо ..... только я много тем прочитал, а сереньких все так же мало :) ..... а и не важно

Про глюк в индикаторе что-нить скажешь?

 
rider:

спасибо ..... только я много тем прочитал, а сереньких все так же мало :) ..... а и не важно

Про глюк в индикаторе что-нить скажешь?

Консультант у тебя был, поэтому в индикатор и не заглядывал. Хотя можно и посмотреть. Но только тогда нужен последний вариант, что бы не повторяться.

 

Из тупика мы так и не вышли пока.... любой свежей мысли только рад буду.

В аттаче код с последними изменениями

Файлы:
 
rider:

Из тупика мы так и не вышли пока.... любой свежей мысли только рад буду.

В аттаче код с последними изменениями

Честно говоря, мне проще написать с нуля, чем разбираться в коде. Извини.

 

if (y==1) ArrayInitialize(Large,0.0); if (y==2) ArrayInitialize(Midle,0.0); if (y==3) ArrayInitialize(Small,0.0);


эта строка - рабочая

 
сам такой :)
 
rider:
сам такой :)

В аську стукни

 

Кажется можно подвести итоги.

Индикатор отлично отработал на реальном графике и доказал свою работоспособность на любых рабочих и заданных таймфреймах (скрины в аттаче - вертикальные линии, это последние экстремумы, которые были на графике в момент начала работы индикатора. Выправленный код индикатора там же - в коментах подробно написано почему и из-за чего это дело не работало на визуале в тестере.

Теперь самое приятное БЛАГОДАРНОСТИ

Во-первых, громадное Благодарю Korey,  если бы не он, то так бы и продолжал поиски глюка в коде, а не в терминале.... как выяснилось в тестере  некорректно работает функция TimeCurrent()   :((

Во-вторых и последних, конечно же  Разработчикам, если бы не они, то очень большое количество мелких ошибок, существенно на работу не влияющих, так и остались бы неисправленными. Нет худа без добра :) А если серьезно, то с этим что-то нужно делать.


PS  Здесь же выкладываю исправленную полностью рабочую версию.... может кому интересно, а скачивать лениво :), а может и разработчики пару ласковых по этому поводу скажут.... ;)

Part One

//--------------------------------------------------------------------
// i_M_Fractal_ZZ_3in1.mq4
// Мультифреймовый Фрактальный ZigZag
// Работает со всеми, в т.ч. и нестандартными таймфреймами,
// Ограничения:
// - старшие ТФ должны быть кратны рабочему, если нет, то значения
//   устанавливаются принудительно. 
// - рабочий ТФ <= самому мелкому из старших
// - TFSmall < TFMidle && TFMidle < TFLarge
// - TFLarge <=43200 (месяц) 
//--------------------------------------------------------------------
#property copyright "Copyright © 2008, BiViSi Corp."
#property link      "riderfin@bk.ru"
#property link      "ICQ 499949112"
 
#property indicator_chart_window    
#property indicator_buffers 3       
//---- стиль  индикаторной линии
#property indicator_color1 Blue 
#property indicator_color2 Red
#property indicator_color3 Yellow        
#property indicator_style1 0
#property indicator_style2 0
#property indicator_style3 0
#property indicator_width1 3
#property indicator_width2 2
#property indicator_width3 1
//---- ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА 
extern int TFLarge=1440;
extern int TFMidle=240;
extern int TFSmall=60;
//---- Variables 
double Large[],Midle[],Small[]; // Объявление массивов (под буферы индикатора)
datetime PrevTimePer[4]; // Массив под времена последнего расчета по каждому ТФ
static datetime PrevTimeCalc=0; 
static int CurPeriod, ErrorTF=0;
//--------------------------------------------------------------------
int init() 
{
   // инициализация 
   IndicatorBuffers(3); // строка "на перспективу" :)
   SetIndexBuffer(0,Large); SetIndexStyle(0,DRAW_SECTION); SetIndexEmptyValue(0,0.0);
   SetIndexBuffer(1,Midle); SetIndexStyle(1,DRAW_SECTION); SetIndexEmptyValue(1,0.0); 
   SetIndexBuffer(2,Small); SetIndexStyle(2,DRAW_SECTION); SetIndexEmptyValue(2,0.0);
   ArrayInitialize(PrevTimePer,0);
   CurPeriod=Period();
   // контроль ТФ и введенных параметров
   if (MathCeil(TFSmall/CurPeriod) != TFSmall/CurPeriod) TFSmall=MathCeil(TFSmall/CurPeriod)*CurPeriod;
   if (MathCeil(TFMidle/CurPeriod) != TFMidle/CurPeriod) TFMidle=MathCeil(TFMidle/CurPeriod)*CurPeriod;
   if (MathCeil(TFLarge/CurPeriod) != TFLarge/CurPeriod) TFLarge=MathCeil(TFLarge/CurPeriod)*CurPeriod;
   if (CurPeriod > TFSmall) {Alert ("Период графика должен быть меньше или равен ", TFSmall, " мин."); ErrorTF=1;return;}
   if (TFSmall >= TFMidle || TFMidle >= TFLarge || TFLarge>43200) {Alert ("Некорректный выбор таймфреймов для расчета!!!"); ErrorTF=1;return;}
 
   return;              
}
//--------------------------------------------------------------------
int start()
{
   if ( ErrorTF==1 ) return; // некорректный таймфрейм   
   FractalCalc(); // вычисление 5-ти барных фракталов на старших таймфреймах по барам текущего
   ClearFractal(); // очистка (удаление) лишних экстремумов, для формирования правильного зигзага
                   // если эту функцию закомментить, то код совсем коротенький будет,
   return;
}


Файлы:
real.rar  129 kb
Причина обращения: