[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 235

 
FinBuda писал(а) >>

День добрый! Прошу помощи у знающих, у меня индюк не хочет рисовать по текучке, мне приходится постояно переключать фреймы чтоб он обновился до последнего бара.Как можно исправить этот недостаток? Зарание благодарен!!!

Без второго индикатора проверить все равно не удастся.

 
Vinin >>:

Без второго индикатора проверить все равно не удастся.

Сори! Исправляюсь :)

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

Сори! Исправляюсь :)

Работает оно конечно, но тормоза жуткие. Надо расчеты вспмогательного индикатора переносить в основной. Да и вообще лучше бы расчеты оптимизировать

Файлы:
norms2.1.mq4  4 kb
 
Vinin >>:

Работает оно конечно, но тормоза жуткие. Надо расчеты вспмогательного индикатора переносить в основной. Да и вообще лучше бы расчеты оптимизировать

Огромное Спасибо за помощь!!! И еще вопрос по ходу событий, как можно оптимизировать расчеты, и как лучше нормализовать МАКД чтоб он ходил в опредиленых рамках? Просто я далековат от матчасти и от програмирования по этому все что мне удалось найти более мение подходящее это нормализатор виложаный выше :)

 
FinBuda писал(а) >>

Огромное Спасибо за помощь!!! И еще вопрос по ходу событий, как можно оптимизировать расчеты, и как лучше нормализовать МАКД чтоб он ходил в опредиленых рамках? Просто я далековат от матчасти и от програмирования по этому все что мне удалось найти более мение подходящее это нормализатор виложаный выше :)

Вариантов оптимизации может быть много. Я не стал в код особо вдаваться

 
FinBuda >>:

Огромное Спасибо за помощь!!! И еще вопрос по ходу событий, как можно оптимизировать расчеты, и как лучше нормализовать МАКД чтоб он ходил в опредиленых рамках? Просто я далековат от матчасти и от програмирования по этому все что мне удалось найти более мение подходящее это нормализатор виложаный выше :)

Вы используете вариант, который выкладывался на кодбазе, он представляет собой просто концепцию и не оптимизирован по быстродействию. Для практического использования предлагаю вам переменную characteristic_period задавать руками из внешних переменных, подбирая так, чтобы за данное количество периодов происходило 3-4 полных цикла основного индикатора

//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|                                                  al_su31@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, al_su"
#property link      "al_su31@mail.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_level4 -0.25
#property indicator_level5 -0.5
#property indicator_level6 -0.75
#property indicator_color1 RoyalBlue
//---- input parameters
#define PERIODS_CHARACTERISTIC 3

extern string  Indicator="ind-2";
extern int     mode=0;
extern int     param1=8;//Ну или 9, не важно...
extern int     param2=34;
//extern int param3;Скока надо параметров, стока и задаем
extern double  characteristic_period; //как видите, переменную вынесли вовне

//---- buffers 
double Normalizer[];
double sigma;

//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0,Indicator,param1,param2,/*param3, и т.д.:)*/mode,shift));
}

double MathTanh(double x)
{ 
   double exp;
   if(x>0)  {exp=MathExp(-2*x);return ((1-exp)/(1+exp));}
   else {exp=MathExp(2*x);return ((exp-1)/(1+exp));}
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("Normalized "+Indicator);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Normalizer);
   SetIndexDrawBegin(0,characteristic_period);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i,j,limit, counted_bars=IndicatorCounted();
   double S;
   if(counted_bars>0) counted_bars--;
   limit=MathMax(Bars-counted_bars-1,0);
//----
   for(i=limit;i>=0;i--)
   {
      S=0;
      for(j=0;j<characteristic_period;j++) S+=MathPow(Indyuk(i+j),2);
      S/=characteristic_period;
      S=MathSqrt(S);
      if(S>0) Normalizer[i]=Indyuk(i)/S;
      Normalizer[i]=MathTanh(Normalizer[i]);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alsu >>:

Еще вариант - который я лично использую чаще - задавать извне количество суток для прогона и уже в теле индикатора пересчитывать их в characteristic_period

...

extern double days_for_normalization=3;   // например, смотрим за три дня

...

int init()
{

...


characteristic_period=1440./Period()*days_for_normalization;   // 1440 - это количество минут в сутках
}
 
А вообще говоря, Vinin прав, расчет производится действительно быстрее, если код второго индикатора вставлен в первый. Неудобство здесь в том, что приходится больше кодить (а то,что вы взяли на кодобазе, как раз и имело одной из целей показать, как можно упростить данную работу), плюс второй индюк занимает буфера первого, что не всегда приемлемо.
 
Всем спасибо за помощь!!! Будем пробовать :)
 

Чёт ничего не получается..почитаешь тут у всех такие советники, а у меня лишь ММ, мне бы только чуть мат ожидание в +....эх...


А без оптимизации на большом промежудке времени мат ожидание -0,12 это нормальная ситуация? Всмысле у всех так без оптимизации а потмо лишь подгоном поднимается ожидание, или это не вариант и надо менять советника полностью?

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