Добрый день.
Столкнулся с проблемой, не знаю как решить:
Есть пара индикаторов в которых в настройках используются всплывающее окно с выбором вариантов https://c.mql4.com/i/docs/ru/enumasinput.png
Как прописать iCustom с выбранным элементом?
Пытался напрямую писать значение, допустим пятницы
iCustom(Symbol(),Period(),"test",5,0);
Индикатор применялся с дефолтными значениями
enum позволяет использовать любые цифровые значения, например:
enum intervals // перечисление именованных констант { month=1, // интервал в один месяц two_months, // два месяца quarter, // три месяца - квартал halfyear=6, // полугодие year=12, // год - 12 месяцев };
Возможно, например, автор применил значения 101, 102, 103, ...
Попробуйте написать скрипт, вызывающий индикатор в цикле с параметром в широком диапазоне
enum enTimeFrames { tf_cu = PERIOD_CURRENT, // Current time frame tf_m1 = PERIOD_M1, // 1 minute tf_m5 = PERIOD_M5, // 5 minutes tf_m15 = PERIOD_M15, // 15 minutes tf_m30 = PERIOD_M30, // 30 minutes tf_h1 = PERIOD_H1, // 1 hour tf_h4 = PERIOD_H4, // 4 hours tf_d1 = PERIOD_D1, // Daily tf_w1 = PERIOD_W1, // Weekly tf_mn1 = PERIOD_MN1, // Monthly tf_n1 = -1, // First higher time frame tf_n2 = -2, // Second higher time frame tf_n3 = -3 // Third higher time frame }; extern enTimeFrames TimeFrame = tf_cu; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping printf(TimeFrame); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+
В советнике:
double hhh = 0; for(int i = 0; i <= 500; i++){ hhh = iCustom(Symbol(),Period(),"test",i,0); }
выводит 0 (один раз)
Если вместо i ввести 1,5 или 15 - так же выводит 0
Это я пытаюсь для проверки создать пример.
В советнике:
выводит 0 (один раз)
Если вместо i ввести 1,5 или 15 - так же выводит 0
Это я пытаюсь для проверки создать пример.
Вам описание энума известно или нет? Если надо найти то перебором. посмотрите руками добавив индюк на чарт значение индикатора на 1-м баре при разных выборах энум-меню , и пропишите в коде вывод сравнения если близко
double ValueSavedFromChart[5]={сюда пишите что увидели }; double hhh = 0; for(int i = -1000 ; i <= 1000; i++){ hhh = iCustom(Symbol(),Period(),"test",i,1); if(hhh!=0.0) for(int j = 0; j < 5; j++) if(MathAbs(hhh-ValueSavedFromChart[j])<0.01) Print(j," case . enum value = ",i); ; }
iCustom(Symbol(),Period(),"test",5,0);
По описанию функции iCustom 5-индекс линии индикатора, 0-индекс бара
т.е. параметры индикатора нужно вставить перед двумя последними параметрами функции
p.s. Разработчикам MQL: в остальных языках программирования переменное кол-во параметров используется в конце списка обязательных параметров
double iCustom( string symbol, // имя символа int timeframe, // таймфрейм string name, // папка/имя_пользовательского индикатора ... // список входных параметров индикатора int mode, // источник данных int shift // сдвиг );
iCustom(Symbol(),Period(),"test",5,0);
По описанию функции iCustom 5-индекс линии индикатора, 0-индекс бара
т.е. параметры индикатора нужно вставить перед двумя последними параметрами функции
p.s. Разработчикам MQL: в остальных языках программирования переменное кол-во параметров используется в конце списка обязательных параметров
Вот она, моя глупая ошибка. Надо отдыха больше давать мозгу.
Огромное спасибо всем!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Столкнулся с проблемой, не знаю как решить:
Есть пара индикаторов в которых в настройках используются всплывающее окно с выбором вариантов https://c.mql4.com/i/docs/ru/enumasinput.png
Как прописать iCustom с выбранным элементом?
Пытался напрямую писать значение, допустим пятницы
iCustom(Symbol(),Period(),"test",5,0);
Индикатор применялся с дефолтными значениями