iCustom - как избежать перегрузки уже загруженного индикатора?

 

Добрый день, коллеги,

Может кто сталкивался с такой проблемой, при обращении к какому либо индикатору через вызов iCustom, вызываемый индикатор полностью перегружается, даже если был загружен до вызова. Это можно как-нибудь обойти?

Пример:

  1. загружен и работает индикатор MyOwn
  2. загружаем другой индикатор и из него запрашиваем значения первого: iCustom(NULL, 0, "MyOwn",0,idx);
  3. индикатор MyOwn полностью перегружается (deinit, init и т.д.)
 
Вы вызываете индикатор с неправильными параметрами (скорей всего не тот тип параметра), поэтому происходит перезагрузка при каждом вызове. Проверьте все внимательно.
 

Спасибо за ответ. Но Вы меня смутили... Я не знаю как тут можно ошибиться. Цитата из кода (стандартный вызов без доп. параметров):

Buff1[idx] = iCustom(NULL, 0, "Mt HLOC", 0,idx);

...

Buff8[idx] = iCustom(NULL, 0, "Mt HLOC", 7,idx);

Может ему не нравится имя с пробелом? Правда я нигде не нашел упоминания об правилах именования...

К тому же это работает, хоть и перегружается...

 
Проверил... Имя не виновато.
 
Henry_White >>:

Спасибо за ответ. Но Вы меня смутили... Я не знаю как тут можно ошибиться. Цитата из кода (стандартный вызов без доп. параметров):

Buff1[idx] = iCustom(NULL, 0, "Mt HLOC", 0,idx);

...

Buff8[idx] = iCustom(NULL, 0, "Mt HLOC", 7,idx);

Может ему не нравится имя с пробелом? Правда я нигде не нашел упоминания об правилах именования...

К тому же это работает, хоть и перегружается...

Нет ли в логах сообщений о невозможности загрузить второй индикатор?

 
Абсолютно ничего, за что можно было бы зацепиться ((
 

Скажите Henry_White,а в такой конструкции у Вас работать будет?

НЕ! загружен НО работает индикатор MyOwn№1 (как библиотека вроде)

загружаем другой индикатор MyOwm№2и из него запрашиваем значения первого: iCustom(NULL, 0, "MyOwn№1",0,idx);

У меня кажется схожая система(но с доп папраметром,тот что через extern int в MyOwn№1 прописан.Но на график я накидываю только MyOwn№2.

И все равно.Вот сколько итерраций в цикле с фунциией for(int i=0; i <100; i++) iCustom(NULL, 0, "MyOwn№1", i,idx);

столько жэ (100)раз и инициализируется MyOwn№1.

.....И вроде на скорость не влияет,но чую шото не корректно спрограммировал.

P/s Если я не про то и не в тему,-то пардон.А так хотелосьбы знать.Почему в журнале 100 раз пишет " initialized "и "loaded successfully"

Мт?.

 

2 znoy :

Коллега, если честно, то я не очень понял точно суть первого вопроса ((

Попробую ответить как понял... Система работы почти такая-же, как Вы описали. Есть базовый индикатор, где рассчитываются базисные данные, на основе которых индикаторы-спутники через iCustom эти данные считывают, а обработанные данные уже выводятся в индикаторные буфера. У меня как раз проблема в том, что при первом вызове iCustom в каждом из 5-ти индикаторов-спутников базовый индикатор перегружается. Соотв-но это происходит 5 раз.

Что касается второго вопроса, то у меня кол-во обращений к iCustom обычно не меньше 300 в каждом из 5-ти индикаторов-спутников (а вернее каждая итерация цикла обращается к блоку из 8 вызовов iCustom). При этом базовый индикатор перегружается (инициализируется) только один раз, во время первого обращения из каждого спутника. Такого как у Вас у меня не наблюдается.

 

Чего я только не перепробывал...

  1. Явное задание всех параметров в вызове iCustom
  2. Явное задание символьного имени инструмента и таймфрейма
  3. Удаление extern переменных, как в базовом, так и slave-индикаторе
  4. И еще самые немыслимые вещи, вроде кол-ва вызовов, их расположение, замена типа переменой ( куда возвращается значение iCustom) и еще черт знает что.

Бесполезно! Может кто подкинет свежих идей?

И вот еще что, может кто подскажет, почему при компиляции slave-индикатора ('Bt_HLOC-4') автоматически выгружается и мастер-индикатор ('Bt_HLOC')?

2009.09.22 01:30:35 Bt_HLOC EURJPY,M1: removed
2009.09.22 01:30:35 Bt_HLOC EURJPY,M1: uninit reason 1
2009.09.22 01:30:35 Bt_HLOC EURJPY,M1: deinitialized
2009.09.22 01:30:35 Bt_HLOC-4 EURJPY,M1: uninit reason 2
2009.09.22 01:30:35 Bt_HLOC-4 EURJPY,M1: deinitialized
2009.09.22 01:30:35 Compiling 'Bt_HLOC-4'

Или почему при выгрузке slave-индикатора ('Bt_HLOC-4') выгружается и мастер?

2009.09.22 01:41:31 Bt_HLOC-4 EURJPY,M1: removed
2009.09.22 01:41:31 Bt_HLOC EURJPY,M1: removed
2009.09.22 01:41:31 Bt_HLOC EURJPY,M1: uninit reason 1
2009.09.22 01:41:31 Bt_HLOC EURJPY,M1: deinitialized
2009.09.22 01:41:31 Bt_HLOC-4 EURJPY,M1: uninit reason 1
2009.09.22 01:41:31 Bt_HLOC-4 EURJPY,M1: deinitialized

И как расшифровываются цифры после "uninit reason"?

 

Henry_White писал(а) >>

И как расшифровываются цифры после "uninit reason"?


https://www.mql4.com/ru/search/uninit%20reason

 

В поиске много мусора... Им я уже пользовался, но ничего на глаза не попалось толкового (но то ли от лени, то ли от невезения). Зато сегодня нашел в справке (Справочник MQL4 - Стандартные константы - Причины деинициализации), хотя легче от этого не стало  )))



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