Что делают индикаторы внутри бара :)

 
Сейчас появилось несколько тем, где идут попытки сформулировать новые идеи. Может кому-нибудь пригодится (если опять не изобретаю велосипед), а может и мне кто поможет.

Идея простая - чем больше ТФ, тем лучше для индикатора. А если посмотреть, а что внутри бара на больших ТФ?

1. Навесил на три ТФ - М5, М15, Н1 - индикаторы (почти что АС). На каждом тике присваиваю значение индикатора глобальной переменной.
2. Написал "глобалиста", который навешивается на М1 и читает в три ind_buf[0] значения глобальных.

//+------------+-----------------------------------------------------+
//| v.23.10.06 |                                       Globalist.mq4 |
//+------------+                                                     |
//|                           Bookkeeper, 2006, yuzefovich@gmail.com |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
 
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1  Magenta
#property indicator_color2  MediumOrchid
#property indicator_color3  Blue
#property indicator_color4  Magenta
#property indicator_color5  MediumOrchid
#property indicator_color6  Blue
 
double Buf_M5[];
double Buf_M15[];
double Buf_H1[];
double MA_Buf_M5[];
double MA_Buf_M15[];
double MA_Buf_H1[];
 
 
int init()
{
   IndicatorBuffers  (6);
   SetIndexBuffer(0,Buf_M5);
   SetIndexBuffer(1,Buf_M15);
   SetIndexBuffer(2,Buf_H1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(3,MA_Buf_M5);
   SetIndexBuffer(4,MA_Buf_M15);
   SetIndexBuffer(5,MA_Buf_H1);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexStyle(5,DRAW_LINE);
   IndicatorShortName("Globalist_AC(M5, M15, H1)");
}
 
int deinit(){}
 
int start()
{
int i,w1,w2,w3;
double m1,m2,m3;
      if(GlobalVariableCheck(Symbol()+"_M5_AC")==true)
         Buf_M5[0]=GlobalVariableGet(Symbol()+"_M5_AC");
      if(GlobalVariableCheck(Symbol()+"_M15_AC")==true)
         Buf_M15[0]=GlobalVariableGet(Symbol()+"_M15_AC");
      if(GlobalVariableCheck(Symbol()+"_M60_AC")==true)
         Buf_H1[0]=GlobalVariableGet(Symbol()+"_M60_AC");
 
         m1=0;m2=0;m3=0;w1=0;w2=0;w3=0;
         for(i=1;i>=5;i++)
         {
            m1=m1+i*Buf_M5[5-i];
            w1=w1+i;
            m2=m2+i*Buf_M15[5-i];
            w2=w2+i;
            m3=m3+i*Buf_H1[5-i];
            w3=w3+i;
         }
         MA_Buf_M5[0]=m1/w1;
         MA_Buf_M15[0]=m2/w2;
         MA_Buf_H1[0]=m3/w3;
}
3. Красиво рисует. Но не все :(
Buf_M5 Buf_M15 Buf_H1 - без проблем, но захотелось красивости, добавил блок сглаживания мувингом - не рисует!

Чего я опять не так делаю?
 
А зачем вообще глобальные переменные?
Можно брать значения с 0-го бара любого ТФ ;)

Или я чего-то не догнал? ;)
 
komposter писал (а):
А зачем вообще глобальные переменные?
Можно брать значения с 0-го бара любого ТФ ;)

Или я чего-то не догнал? ;)

Обычно это я чего не догоняю. А как? Вот работает у меня индюк на Н1. И каждую минуту в окне М1 на баре 0 я хочу иметь показания индикатора в окне Н1 на данный момент. Как без глобальных (учитывая, что индикатор не стандартный. и iCustom не умею :)?
 
Bookkeeper:

Обычно это я чего не догоняю. А как? Вот работает у меня индюк на Н1. И каждую минуту в окне М1 на баре 0 я хочу иметь показания индикатора в окне Н1 на данный момент. Как без глобальных (учитывая, что индикатор не стандартный. и iCustom не умею :)?
MA_Buf_H1[0]=iAC( Symbol(), PERIOD_H1, ..., 0 );
 
komposter писал (а):
Bookkeeper писал (а):

Обычно это я чего не догоняю. А как? Вот работает у меня индюк на Н1. И каждую минуту в окне М1 на баре 0 я хочу иметь показания индикатора в окне Н1 на данный момент. Как без глобальных (учитывая, что индикатор не стандартный. и iCustom не умею :)?
MA_Buf_H1[0]=iAC( Symbol(), PERIOD_H1, ..., 0 );

Так это ежели индюк не родной, а общественный :) И не MA_Buf_H1 а Buf_H1[0]=iAC( Symbol(), PERIOD_H1, ..., 0 );
МА_ это я хотел уже прочитанный буфер Buf_H1 сгладить, и ничего не рисуется (код выше). А Buf_H1 у меня читается и рисуется чудесненько.
 
Bookkeeper:

Так это ежели индюк не родной, а общественный :)
А с родным - тоже самое только iCustom ;)

И не MA_Buf_H1 а Buf_H1[0]=iAC( Symbol(), PERIOD_H1, ..., 0 );

Описка )

МА_ это я хотел уже прочитанный буфер Buf_H1 сгладить, и ничего не рисуется (код выше). А Buf_H1 у меня читается и рисуется чудесненько.

Как может выполниться такой цикл? ;)
for(i=1;i>=5;i++)
 
komposter писал (а):
Как может выполниться такой цикл? ;)
for(i=1;i>=5;i++)


Ну, Вы , батенька, и зануда! Человек спешил, не ту клавишу нажал. ...Нужно нажать соседнюю "<". :)))
 
komposter писал (а):
Как может выполниться такой цикл? ;)

:) Надеюсь, теперь понятно, кто, кого и куда догоняет? :) Я пол дня с этой заразой ...

И Мишелю спасибо, мне так и надо, не умничая, а пальцем показывать, куда жать :).

Всем - удачи.

Добавлено: Уряаааа - мувинги заработали. "И будет тебе кусачек счастя".
 
Вмешиваюсь в беседу, потому что она пересекается с моей темой 'Аппроксимация индикатора старшего периода Close[0] на младшем периоде'.
Я пробовал вызывать и через:
dIndicator = iCustom(NULL, PERIOD_D1, "Indicator", CountBars, 0, ShiftOffset0Bars + 0);
но индикатор рисует несколько разных таймфреймов на одном графике одним способом, а в эксперте возникают таким же способом другие значения.
Почему?
 
chv писал (а):
Вмешиваюсь в беседу, потому что она пересекается с моей темой 'Аппроксимация индикатора старшего периода Close[0] на младшем периоде'.
Я пробовал вызывать и через:
dIndicator = iCustom(NULL, PERIOD_D1, "Indicator", CountBars, 0, ShiftOffset0Bars + 0);
но индикатор рисует несколько разных таймфреймов на одном графике одним способом, а в эксперте возникают таким же способом другие значения.
Почему?

Это уже не ко мне - иКустом никогда, и советников еще ни разу :). Может что-нибудь в способе читания по разному? с разных тиков?
Причина обращения: