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

 

http://clip2net.com/s/2LkQp

Поможите хто чем может... Приветствую усех! Надо вынести настройки к Фракталам в окно настроек, а они в функции....  

 
Allis:

http://clip2net.com/s/2LkQp


Поможите хто чем может... Приветствую усех! Надо вынести настройки к Фракталам в окно настроек, а они в функции....  


Добавьте ;


extern int Bars.left =5;

и в следующем тоже

и ниже закомментируйте строчки чтоб не повторялись

// int Bars.left =5;

// int Bars.righ =5;

 
BeerGod:

Добавьте ;


extern int Bars.left =5;

и в следующем тоже

и ниже закомментируйте строчки чтоб не повторялись

// int Bars.left =5;

// int Bars.righ =5;


А я что сделала разве не так как Вы написали? Вытащила в Экстерны и закомментировала внизу....

http://clip2net.com/s/2LlEi     ну с этого я собственно начала 

//+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 1999-2008, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#property copyright "© 2007 Takbir"
#property link      "www.stigal.com"
//----
#define major   1
#define minor   1
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DarkGreen
#property indicator_color2 Maroon
#property indicator_width1  1
#property indicator_width2  1
extern int Bars.left =5     // надо что бы было здесь и соответственно в окошке настроек
extern int Bars.right =5    // надо что бы было здесь и соответственно в окошке настроек
//----
double UpperFr[];
double LowerFr[];
//----
int Bars.left=5;       //а оно здесь, да ещё участвует в формуле
int Bars.right=5;      //а оно здесь, да ещё участвует в формуле

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void init()
  {
   SetIndexBuffer(0, UpperFr);
   SetIndexBuffer(1, LowerFr);
   //
   SetIndexEmptyValue(0, 0);
   SetIndexEmptyValue(1, 0);
   //
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 159);
   //
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 159);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
   int counted=IndicatorCounted();
   if (counted < 0) return(-1);
   if (counted > 0) counted--;
   int limit=Bars-counted;
//-----
   double dy=0;
     for(int i=1; i<=20; i++) 
     {
      dy+=0.3*(High[i]-Low[i])/20;
     }
   for(i=1+Bars.right; i<=limit+Bars.left; i++)
     {
      UpperFr[i]=0;
      LowerFr[i]=0;
//----
      if (IsUpperFr(i)) UpperFr[i]=High[i] + dy;
      if (IsLowerFr(i)) LowerFr[i]=Low[i] - dy;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsUpperFr(int bar)
  {
   for(int i=1; i<=Bars.left; i++)
     {
      if (bar+i>=Bars) return(false);

      if (High[bar] < High[bar+i]) return(false);
     }
   for(i=1; i<=Bars.right; i++)
     {
      if (bar-i < 0) return(false);
      if (High[bar] < High[bar-i]) return(false);
     }
//----
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsLowerFr(int bar)
  {
   for(int i=1; i<=Bars.left; i++)
     {
      if (bar+i>=Bars) return(false);
      if (Low[bar] > Low[bar+i]) return(false);
     }
   for(i=1; i<=Bars.right; i++)
     {
      if (bar-i < 0) return(false);
      if (Low[bar] > Low[bar-i]) return(false);
     }
//----
   return(true);
  }
//+------------------------------------------------------------------+
 

Попробуйте так

//+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 1999-2008, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#property copyright "© 2007 Takbir"
#property link      "www.stigal.com"
//----
#define major   1
#define minor   1
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DarkGreen
#property indicator_color2 Maroon
#property indicator_width1  1
#property indicator_width2  1
extern int Bars.left =5;     // надо что бы было здесь и соответственно в окошке настроек
extern int Bars.right =5;    // надо что бы было здесь и соответственно в окошке настроек
//----
double UpperFr[];
double LowerFr[];
//----
//int Bars.left=5;       //а оно здесь, да ещё участвует в формуле
//int Bars.right=5;      //а оно здесь, да ещё участвует в формуле

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void init()
  {
   SetIndexBuffer(0, UpperFr);
   SetIndexBuffer(1, LowerFr);
   //
   SetIndexEmptyValue(0, 0);
   SetIndexEmptyValue(1, 0);
   //
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 159);
   //
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 159);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
   int counted=IndicatorCounted();
   if (counted < 0) return(-1);
   if (counted > 0) counted--;
   int limit=Bars-counted;
//-----
   double dy=0;
     for(int i=1; i<=20; i++) 
     {
      dy+=0.3*(High[i]-Low[i])/20;
     }
   for(i=1+Bars.right; i<=limit+Bars.left; i++)
     {
      UpperFr[i]=0;
      LowerFr[i]=0;
//----
      if (IsUpperFr(i)) UpperFr[i]=High[i] + dy;
      if (IsLowerFr(i)) LowerFr[i]=Low[i] - dy;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsUpperFr(int bar)
  {
   for(int i=1; i<=Bars.left; i++)
     {
      if (bar+i>=Bars) return(false);

      if (High[bar] < High[bar+i]) return(false);
     }
   for(i=1; i<=Bars.right; i++)
     {
      if (bar-i < 0) return(false);
      if (High[bar] < High[bar-i]) return(false);
     }
//----
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsLowerFr(int bar)
  {
   for(int i=1; i<=Bars.left; i++)
     {
      if (bar+i>=Bars) return(false);
      if (Low[bar] > Low[bar+i]) return(false);
     }
   for(i=1; i<=Bars.right; i++)
     {
      if (bar-i < 0) return(false);
      if (Low[bar] > Low[bar-i]) return(false);
     }
//----
   return(true);
  }
//+------------------------------------------------------------------+


 
BeerGod:

Попробуйте так, компилируется без ошибок, работоспособность не проверял)


Жесть.... Я с этого начала.... Вот ровно с этого... Ссылку выкладывала.... И почему то не получилось... Благодарю!
 
hoz:

 Артём, лучше выпей как ты сока. Пиво не советую... чисто от души не советую.. :)

Эх... Я уже восемь лет как не желаю спиртного принимать - не интересно оно... :)

Спасибо за заботу о здоровье ;)

 
hoz:

Нет. Просто думаю лишние условия и проверки это ж лишние затраты ресурсов.
Да... затраты ресурсов на несколько необходимых проверок куда легче пропустить, чем потом перед дядей Колей отчёт вести...
 
Allis:

Жесть.... Я с этого начала.... Вот ровно с этого... Ссылку выкладывала.... И почему то не получилось... Благодарю!
Не получилось просто потому, что после объявления переменной точку с запятой нужно было ставить, а у вас их не было.
 

Для разглядывания стандартных свечей под другим ракурсом собрался двигать  временную шкалу влево вправо.Часовые свечи  чтобы начинались и заканчивались не в 00 минут, а например в  10 или 20.

Это дает  немного дополнительной информации. То же и на дневках- сдвиг на часы (напр. откр. сесссии). Начал редактировать в экселе   csv архивы но как то трудоемко получается. Может кто видит какое нибудь еще решение сдвинуть минутки и пересчитать остальные ТФ.

 
Operr:

Для разглядывания стандартных свечей под другим ракурсом собрался двигать  временную шкалу влево вправо.Часовые свечи  чтобы начинались и заканчивались не в 00 минут, а например в  10 или 20.

Это дает  немного дополнительной информации. То же и на дневках- сдвиг на часы (напр. откр. сесссии). Начал редактировать в экселе   csv архивы но как то трудоемко получается. Может кто видит какое нибудь еще решение сдвинуть минутки и пересчитать остальные ТФ.


возьмите скрипт period_converter и допилите условие обрезки свечи по собственному желанию, будет вам щастье. Например, навскидку, для получения свечек на x часов 10 минут:

      if(time0>=i_time+periodseconds || i==0)

заменить на

      if(TimeMinute(time0)==10 || i==0)

Ну или как-то так)))

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