MetaTrader 4. Build 161. - страница 2

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

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

Если я меняю параметр индикатора, отрабатывает ли заново его процедура init() ?
 
Возможно, ты используешь мувинги по буферам. У меня такое было, лечится сглаживанием в отдельном цикле после заполнения буфера.
 
На основе индикатора "Kaufman2.mq4" сделал индикатор "KaufmanTrend.mq4" - все работало.
Вставил в индикатор "NeuroProba.mq4" вызов "KaufmanTrend.mq4". Решил проверить - не работает. Перенес блоки первичной обработки данных из init() в start() - все равно не работает. Оказалось, что вариант, когда индикатор_1 вызывает индикатор_2, который построен на вызовах индикатора_3 - не работает.
Выкладываю рабочий вариант, правда не смог добиться вывода в Журнал случайных последовательностей через MathRand(), хотя через Comment() выводит. Код вывода брал из словаря МЕ4. Билд 161/139.

http://forexsystems.ru/phpBB/viewtopic.php?p=5092#5092
 
Выкладываю рабочий вариант, правда не смог добиться вывода в Журнал случайных последовательностей через MathRand(), хотя через Comment() выводит. Код вывода брал из словаря МЕ4. Билд 161/139.


Мда... Нашел я вывод через Print()... Невнимательно смотрел. Оказывается, надо нажимать закладку "Эксперты" в Навигаторе. То есть, понимать буквально
void Print( ... )
Prints some message to the experts log. Parameters can be of any type.
 
MetaTrader 4. Build 161.
2. В MQL4 добавлены новые функции iTime(),iOpen(),iClose(),iHigh(),iLow(),iVolume();


Это чтобы мы не мучились и не добывали эти значения обходным путем? Вроде iClose[NULL,60,shift]=iMA(NULL,60,1,0,MODE_SMA,MODE_CLOSE,shift)?

именно так. чтобы ради одного-двух значений чужих таймсерий не заводить отдельный массив
 
Что значит unint()?
Returns unloading or restarting reason for the experts, custom indicators and scripts. For uninit() this function returns unloading reason. For init() and start() (for scripts) this function returns reason for restarting. Return values can be one of Uninitialize reason codes.


английский вариант хелпа не совсем адекватен. это исправим.
теперь в функции deinit есть возможность узнать, по какой причине гасится эксперт. кстати, при переинициализации эксперта значение причины остаётся доступным
 
Обращение к Lowest() (а, вероятно, и к другим функциям) из метода init() "убивает" терминал напрочь при перекомпиляции, присоединеного к графику эксперта.

мне казалось, что эту ошибку мы исправили (пункт 3 исходного топика). будем проверять. спасибо
 

У меня вопросы по эллипсам.
1. Думал, заметит кто-то раньше меня: на месяцах и неделях эллипс построить практически невозможно.
Получается прямая, которую не растянуть по вертикали.
2. Может быть, удобнее было бы строить эллипс по двум точкам? Одна - левая, другая верхняя. А уже потом (если нужно)
извращаться - крутить вверх-вниз, менять ось... А то сейчас перпендикулярно построить сразу практически не удается. Да и фактически тоже. :)

1. это будем проверять и исправлять - спасибо, что указали.
2. как только станет посвободнее мы будем строить эллипс по трём точкам (Вы забыли указать правую точку)
 
Обращение к Lowest() (а, вероятно, и к другим функциям) из метода init() "убивает" терминал напрочь при перекомпиляции, присоединеного к графику эксперта.

мне казалось, что эту ошибку мы исправили (пункт 3 исходного топика). будем проверять. спасибо


Еще раз проверил. Если история есть - терминал не убивается, а если нет - убивается. Например, по EURUSD у меня открыты все таймфреймы и эксперт нормально перекомпилируется, если присоединен к EURUSD M5; по JPYUSD открыт только M5 таймфрейм и если эксперт присоединен к JPYUSD, то при перекомпиляции терминал вылетает.
 
MetaTrader 4. Build 161.


5. Проведение торговых операций Open, Close, Modify не изменяет значения полей ордера, выбранного командой OrderSelect;

Значит ли это, что поля OrderOpenTime & OrderOpenPrice после операции Modify будут не будут изменены на новые, т.е. нужно ли для получения модифицированных OrderOpenTime & OrderOpenPrice повторно вызывать OrderSelect (после операции OrderModify)?