iCustom много переменных и цвет - страница 2

 
Artemij:

Так а всё-таки, как быть с цветами? Так и писать Red, White....?

Можно clrRed и clrWhite, а можно и C'255,0,0' и C'255,255,255'. Это уж как душа захочет.

Ну а по сути ветки. Если есть какие-то параметры, которые не требуется каждый раз указывать и имеется код индикатора, то разместите ненужные параметры ниже, а нужные - выше. В итоге при вызове iCustom достаточно будет перечислить первые "нужные" параметры. Все остальные будут приняты такими, какие указаны в индикаторе в значениях по умолчанию.

Пример:

// Индикатор
input int    i_n1 = 10;         
input int    i_n2 = 10;         
input int    i_n3 = 10;         
input int    i_n4 = 10;         
input color  i_clr5 = clrRed;           
input int    i_n6 = 10;         

input double i_f1 = 8.9;
input double i_f2 = 8.9;
input double i_f3 = 8.9;
input double i_f4 = 8.9;

Если нужно указать значения для параметров i_n1 - i_n6, а i_f1 - i_f4 оставить равными 8.9, то вызов будет такой:

iCustom(NULL, PERIOD_CURRENT, "<имя индикатора>", 4, 6, 7, 30, clrGreen, 3,  0, 1);

В итоге параметры индикатора примут такие значения:

i_n1 = 4

i_n2 = 6

i_n3 = 7

i_n4 = 30

i_clr5 = clrGreen

i_n6 = 3

i_f1 = 8.9

i_f2 = 8.9

i_f3 = 8.9

i_f4 = 8.9

Ну а полученное значение от iCustom будет для буфера с индексом 0 и бара с индексом 1.
 

Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию. INVALID_HANDLE. Для освобождения памяти компьютера от неиспользуемого больше индикатора служит функция IndicatorRelease(), которой...
 
Renat Akhtyamov:

мне тоже интересен этот вопрос, но у меня никогда не было 27 параметров ;)

предполагаю, что параметры должны указываться в порядке следования, но остановиться можно на любом, а дальше концовка из 2-х стандартных параметров функции iCustom?

Да

 
Ihor Herasko:

Можно clrRed и clrWhite, а можно и C'255,0,0' и C'255,255,255'. Это уж как душа захочет.

Ну а по сути ветки. Если есть какие-то параметры, которые не требуется каждый раз указывать и имеется код индикатора, то разместите ненужные параметры ниже, а нужные - выше. В итоге при вызове iCustom достаточно будет перечислить первые "нужные" параметры. Все остальные будут приняты такими, какие указаны в индикаторе в значениях по умолчанию.

Пример:

Если нужно указать значения для параметров i_n1 - i_n6, а i_f1 - i_f4 оставить равными 8.9, то вызов будет такой:

В итоге параметры индикатора примут такие значения:

i_n1 = 4

i_n2 = 6

i_n3 = 7

i_n4 = 30

i_clr5 = clrGreen

i_n6 = 3

i_f1 = 8.9

i_f2 = 8.9

i_f3 = 8.9

i_f4 = 8.9

Ну а полученное значение от iCustom будет для буфера с индексом 0 и бара с индексом 1.
 

В итоге параметры индикатора примут такие значения:

i_n1 = 4

i_n2 = 6

i_n3 = 7

i_n4 = 30

i_clr5 = clrGreen

i_n6 = 3

i_f1 = 0

i_f2 = 1

i_f3 = 8.9

i_f4 = 8.9

 
Сергей Таболин:

В итоге параметры индикатора примут такие значения:

i_n1 = 4

i_n2 = 6

i_n3 = 7

i_n4 = 30

i_clr5 = clrGreen

i_n6 = 3

i_f1 = 0

i_f2 = 1

i_f3 = 8.9

i_f4 = 8.9

С чего вдруг?

 
Сергей Таболин:

В итоге параметры индикатора примут такие значения:

i_n1 = 4

i_n2 = 6

i_n3 = 7

i_n4 = 30

i_clr5 = clrGreen

i_n6 = 3

i_f1 = 0

i_f2 = 1

i_f3 = 8.9

i_f4 = 8.9

Последние 0 и 1 - это не входные параметры индикатора. Это индекс буфера, с которого будут считаны значения, и индекс бара, для которого будет взято значение из буфера. В коде я специально поставил перед ними лишний пробел, чтобы визуально отделить от входных параметров.

Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Торговые советники и собственные индикаторы - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Среди программ для автоматического трейдинга можно выделить две большие категории: торговые роботы и индикаторы. Первые предназначены для совершения торговых операций на рынках, а вторые — для анализа котировок и выявления закономерностей в их изменении. При этом индикаторы могут использоваться непосредственно в роботах, образуя полноценную...
 
Ihor Herasko:

Последние 0 и 1 - это не входные параметры индикатора. Это индекс буфера, с которого будут считаны значения, и индекс бара, для которого будет взято значение из буфера. В коде я специально поставил перед ними лишний пробел, чтобы визуально отделить от входных параметров.

А откуда это известно? Если вы не передали ВСЕ параметры, то с какого перепугу лишний пробел будет их замещать?

 
Сергей Таболин:

А откуда это известно? Если вы не передали ВСЕ параметры, то с какого перепугу лишний пробел будет их замещать?

Пробел только для улучшения визуального восприятия приведен )))

Ну а параметры компилятор посчитать сможет. Два последних аргумента сразу будут отброшены из списка параметров индикатора, т. к. это обязательные аргументы: индекс буфера и индекс бара. Все, что осталось между именем и индексом буфера - это входные параметры индикатора.

 
Ihor Herasko:

Пробел только для улучшения визуального восприятия приведен )))

Ну а параметры компилятор посчитать сможет. Два последних аргумента сразу будут отброшены из списка параметров индикатора, т. к. это обязательные аргументы: индекс буфера и индекс бара. Все, что осталось между именем и индексом буфера - это входные параметры индикатора.

Я чего-то не понимаю.


iCustom

Возвращает хэндл указанного пользовательского индикатора.

int  iCustom(
   string           symbol,     // имя символа
   ENUM_TIMEFRAMES  period,     // период
   string           name        // папка/имя_пользовательского индикатора
   ...                          // список входных параметров индикатора
   );

Параметры

symbol

[in]  Символьное имя инструмента, на данных которого будет вычисляться индикатор.  NULL означает текущий символ.

period

[in]  Значение периода может быть одним из значений перечисления  ENUM_TIMEFRAMES, 0 означает текущий таймфрейм.

name

[in]  Имя пользовательского индикатора, содержащее путь относительно корневой  директории индикаторов (MQL5/Indicators/). Если индикатор находится в поддиректории, например, в MQL5/Indicators/Examples, то имя должно выглядеть соответственно, а именно – "Examples\\имя_индикатора" (обязательно указание двойного обратного слеша вместо одиночного в качестве разделителя).

...

[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы  значения по умолчанию.


Обязательные параметры - это первые три. Остальные - параметры индикатора. Откуда взялись индексы буфера и бара?

Документация по MQL5: Основы языка / Типы данных / Тип void и константа NULL
Документация по MQL5: Основы языка / Типы данных / Тип void и константа NULL
  • www.mql5.com
Основы языка / Типы данных / Тип void и константа NULL - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Никого не заинтересовало то обстоятельство, что раньше iCustom возвращал значение индикатора, а ныне - handle? 

Язык хотя-бы указали-бы. )

 
Сергей Таболин:

 Откуда взялись индексы буфера и бара?

обсуждается код для  MQL4, в первом сообщении есть ссылка на документацию

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