Глабальные переменные или (?)

 
Есть два индикатора, работающие в разных окнах, например EUR:
// IndEUR.mq4 
#property copyright ""
#property link      ""
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1  Silver
#property indicator_color2  Silver
//----
extern int …; 
//----
double indbuf_1[];
double indbuf_2[];
//---------------------------------------------------------------------
void deinit()
{return;
}
//---------------------------------------------------------------------
int init()
{return(0);
}
//---------------------------------------------------------------------
int start()
{
double v1,v2;
   ...
   if(prev Bars!=Bars) { VarEUR=………..; prevBars=Bars; }
   ...
   return(0);
}
//---------------------------------------------------------------------
и GBP:

// IndGBP.mq4 
#property copyright ""
#property link      ""
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1  Silver
//----
extern int    …; 
//----
double      indbuf_3[];
//---------------------------------------------------------------------
void deinit()
{
   ...
  return;
}
//----
int init()
{
   ...
   return(0);
}
//---------------------------------------------------------------------
int start()
{
double v1;
   ...
   v1=VarEUR;
   VarGBP=...
   ...
   return(0);
}
//---------------------------------------------------------------------
Как значение переменной VarEUR в одном индикаторе, передать в другой? как это правильно оформляется, где они должны объявляться, храниться и т.п. Статью Rosh'а смотрел, там немножко не та ситуация. Не хотелось бы через файлы или через значение индикатора - переменных может быть несколько и разное к-во в разных окнах. Или только в советник?
 
Достаточно из одного индикатора получать значения другого индикатора, при этом не имеет значения - висит второй индиктор на графике или нет.
 
Rosh:
Достаточно из одного индикатора получать значения другого индикатора, при этом не имеет значения - висит второй индиктор на графике или нет.

Вы имеете ввиду =iCustom() ? (Никогда не пользовался, могу и ошибаться). Если что-то вроде этого, то именно этого хотелось бы избежать. Индюки висят на разных ТФ и нужные переменные изменяются каждая в свое время, из каждого надо иметь несколько переменных, ...
Чтоб было понятно - затеял я возню с каналами, бросать жалко, а разростается уже до неприличия. Тут и отслеживания вверх/вниз, и ширины, и "правильный/не правильный", и изменения против часовой или по, да одновременно на разных ТФ и что там у союзников и наоборот и т.д. и т.п. Жучь.
Никак нельзя организовать небольшой такой складик переменных, откуда любой индюк может склевать в нужное время что ему нужно и наложить туда что у него есть и когда есть?
 
Тогда, наверно, глобальные переменные. В индикаторе прописываете их существование и зависимость от инструмента и тайм-фрейма, а потом любой другой программой (индикатор, советник, скрипт) значения этих глобальных переменных считываете.
 
Rosh:
Тогда, наверно, глобальные переменные. В индикаторе прописываете их существование и зависимость от инструмента и тайм-фрейма, а потом любой другой программой (индикатор, советник, скрипт) значения этих глобальных переменных считываете.

Нельзя ли чуть конкретней. Я не программист, и не понимаю механизма, мне для старта нужен пример.
Конкретно (как я себе это представляю, может и лажа):
Запускаем терминал. Где-то должны лежать эти самые глобальные (кто их объявляет?) со старыми значениями (?) или для начала с =0 (?). Пошли тики, индикаторы заработали и начали по мере появления давать переменным новые значения. И одновременно брать то, что им надо (и употреблять, если !=0).

Не могли бы Вы на примере тех двух "индикаторов" из первого моего поста показать, как это все объявляется и присваивается для переменных VarEUR и VarGBP ? Извините, но все что я делаю всегда состоит из кусков кода, взятых из других программ :).
 
Bookkeeper писал (а):

Запускаем терминал. Где-то должны лежать эти самые глобальные (кто их объявляет?) со старыми значениями (?) или для начала с =0 (?).
Залежи глобальных переменных находятся здесь:
Меню Сервис --> Глобальные переменные

Их можно вводить как вручную, так и посредством MQL из любого скрипта/советника, например:

GlobalVariableSet("VarEUR", 34.546);
GlobalVariableSet("VarGBP", 11.111);

В любое время из любого скрипта можно их прочитать:

double VarEUR=GlobalVariableGet("VarEUR");
double VarGBP=GlobalVariableGet("VarGBP");
 
Правильно ли я понял:
Мне нигде не надо писать типа double VarEUR ? Как только я где-то первый раз сделаю GlobalVariableSet("VarEUR", 34.546); переменная уже есть и достаточно в любой проге сделать проверку if(GlobalVariableCheck("VarEUR")==true) ... я получу "да" и смогу ее прочесть?:
double V1=GlobalVariableGet("VarEUR"); (?)
Я чего не въеду - мне нигде не надо объявляться, как с обычными переменными в заголовке никакой программы типа double VarEUR; Задавая в GlobalVariableSet строковую "VarEUR", я фактически и объявляю глобальную переменную? и сразу же ее значение? и каждый раз GlobalVariableSet("VarEUR", 31); когда угодно и откуда угодно я это значение меняю? Извините за постоянные вопросы, но это сильно отличается от всего остального. ..
 
Общий ответ - ДА.
 
Спасибо большое всем за терпение. И это уже не вопрос - тогда какого хрена, это ж гениальный инструмент! Почему этого практически нигде? Если б не статьи Rosh'а, мне б и в голову прийти не могло (и ни в какое другое место :). Ёжику ж понятно - нельзя собирать нормально анализы с одного графика! А тут без никаких проблем переброска сигналов с одного ТФ на другой и с одного символа куда угодно... Как без этого ТС строить? да еще и Эксперты ваять! Чё-то многого я еще не понимаю... Это ж как раз то, что бомбой отмечать надо.
Еще раз всем спасибо.
Удачи.
 
Один маленький нюанс только...

Осторожнее обращайтесь с Глобальными переменными, потому что они храняться на компьютере без их использования, кажется 14 дней...

Во-первых, вы однажды их можете не обнаружить (точнее, ваша прога их не обнаружит), а во-вторых, если вы будете свою прогу использовать на разных ТФ и на разных инструментах, да еще одновременно, то получиться перекрестное их использование. И как результат этого - каша в расчетах.
Когда я стал использовать Глобальные переменные, то их имена делал с привязкой к инструменту (например, к EUR или другой валюте).
Вот пример имени:
       D_T_4=StringConcatenate("D_T_4.",Symbol());



 
Michel_S писал (а):
Один маленький нюанс только...

Осторожнее обращайтесь с Глобальными переменными, потому что они храняться на компьютере без их использования, кажется 14 дней...

Во-первых, вы однажды их можете не обнаружить (точнее, ваша прога их не обнаружит), а во-вторых, если вы будете свою прогу использовать на разных ТФ и на разных инструментах, да еще одновременно, то получиться перекрестное их использование. И как результат этого - каша в расчетах.
Когда я стал использовать Глобальные переменные, то их имена делал с привязкой к инструменту (например, к EUR или другой валюте).
Вот пример имени:
       D_T_4=StringConcatenate("D_T_4.",Symbol());



Спасибо, это я понял сразу. Имя глобы = Символ+ТФ+ЧтоЭтоСобственно. В индикаторах-источниках сначала вопрос "ты уже есть? и только если да, то ты равна ...". А в индюке-"Лаборанте" при запуске 1) Объяви/проверь все имена и задай =0, а потом 2) принимай по мере поступления, собирай анализы и не вмешивайся, только рисуй результаты. А сами источники обмениваться не будут. Пока что... И так хорошо - в канализаторе, например, можно рисовать канал меньшего ТФ в канале большего и т.д. и т.п. Почему этого нигде нет? это же очень просто и удобно! Не надо ограничиваться одним значением, как при передаче значения =iИндикатор. А с групповухой чего только народ не мудрил. А тут ведь пока мощи компа хватит, суй все, чего не жалко.
ГЕНИАЛЬНЫЙ ИНСТРУМЕНТ для объединения системы разрозненных индикаторов в Торговую Систему. Написал бы кто-нибудь из мудрых статью по созданию ТС для примера хоть из набора стандартных индюков на разных ТФ и с разными параметрами...
Причина обращения: