Отправлено: 14.04.14 09:56. Заголовок: Я в шоке! Подскажите.
Всем привет! Я в шоке! Выпал из рынка на 3,5 месяца, а тут такие перемены. Игорь подскажи, где можно ознакомиться с изменениями в MQL4? Хотел перенести все данные на новый комп, но некоторые индикаторы после компиляции перестают работать. Вот один из них. http://gfile.ru/a8cCP Хотя не перекомпилированные файлы работают. Компиляция ошибок в коде не выявляет. Но при отладке выдается ошибка формирования массива стр.67. Но в чем ошибка не пойму. Буду благодарен, если найдешь время исправить.
Отправлено: 18.05.15 11:23. Заголовок: Как прогнать индикат..
Как прогнать индикатор в тестере на истории? Теоретически нужно запустить советник в режиме визуализации не выставляющий ордера и к графику прикрепить тестируемый индикатор. Есть ли еще варианты? Просто не все индикаторы ставятся таким образом на график.
Отправлено: 18.05.15 14:42. Заголовок: Sergey пишет: Есть ..
Sergey пишет:
цитата:
Как прогнать индикатор в тестере на истории? Теоретически нужно запустить советник в режиме визуализации не выставляющий ордера и к графику прикрепить тестируемый индикатор. Есть ли еще варианты? Просто не все индикаторы ставятся таким образом на график.
В МТ5 давно существует возможность полноценного тестирования индикаторов. А вот в МТ4 только-только появилось подобное. 810-й билд. Но пока это только бета-версия. Думаю, через пару-тройку недель состоится релиз и можно будет использовать новшество полноценно.
Отправлено: 30.08.15 09:15. Заголовок: Для экономии ресурсо..
Для экономии ресурсов компьютера расчеты некоторых индикаторов делаю на открытии бара.
if (LastBar == Time[0]) return(0);
int limit; int counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if (limit>ShowBars) limit=ShowBars; if (LastBarDay!=iTime(NULL,PERIOD_D1,0)) { ObDeleteObjectsByPrefix(PREFIX); limit=ShowBars; } int i; for (i = limit-1; i >= 0; i--)
Однако столкнулся с такой проблемой: После включения компа на следующий день, индикатор отрисовывается не верно. Как запрограммировать, чтобы при включении компа индикатор пересчитывал всю глубину истории, как при первом запуске. Прием типа if (LastBarDay!=iTime(NULL,PERIOD_D1,0)) { ObDeleteObjectsByPrefix(PREFIX); limit=ShowBars; } Не помогает...
Однако столкнулся с такой проблемой: После включения компа на следующий день, индикатор отрисовывается не верно. Как запрограммировать, чтобы при включении компа индикатор пересчитывал всю глубину истории, как при первом запуске.
В этой ветке народ обсуждал вопросы подкачки истории при перезагрузке терминала: http://forum.mql4.com/ru/40689 и ее влияние на работу индикаторов.
Отправлено: 31.08.15 13:01. Заголовок: Sergey пишет: Для э..
Sergey пишет:
цитата:
Для экономии ресурсов компьютера расчеты некоторых индикаторов делаю на открытии бара.
В индикаторах нет такой необходимости - делать проверку на открытие нового бара. Для этого у него есть IndicatorCounted() или prev_total и rates_total в новой версии MQL4. На основании этих данных необходимо определить, с какого бара следует обновить значения индикатора. В моих индикаторах обычно присутствует специальная функция:
цитата:
int GetRecalcIndex(int &total, const int ratesTotal, const int prevCalculated) { total = ratesTotal - /*здесь период индикатора или то, что его заменяет*/ - 2;
if (i_indBarsCount > 0 && i_indBarsCount < total) total = MathMin(i_indBarsCount, total);
Отправлено: 31.08.15 14:41. Заголовок: Scriptong пишет: В ..
Scriptong пишет:
цитата:
В индикаторах нет такой необходимости - делать проверку на открытие нового бара.
Но мне нужно, чтобы расчет на нулевом баре был произведен только на его открытии. А в случае return (MathMin(ratesTotal - prevCalculated, total)); как я понял, делается постоянный (по тиковый) расчет значений нулевого бара, но сам код возьму на вооружение. Спасибо.
Отправлено: 03.09.15 18:41. Заголовок: Sergey пишет: Но мн..
Sergey пишет:
цитата:
Но мне нужно, чтобы расчет на нулевом баре был произведен только на его открытии. А в случае return (MathMin(ratesTotal - prevCalculated, total)); как я понял, делается постоянный (по тиковый) расчет значений нулевого бара, но сам код возьму на вооружение. Спасибо.
Нет проблем:
цитата:
for (int i = limit; i > 0; i--) buffer[i - 1] = расчет
Отправлено: 01.09.15 18:46. Заголовок: Кажется наконец наше..
Кажется наконец нашел в чем проблема. Индикатор установлен на 12 валютных парах. Имя объекта string name = PREFIX + IntegerToString(leftTime); Однако бывает совпадение по времени разных графиков. Предполагаю, что при загрузке терминала обновление данных различных пар идет не синхронно по барам. В результате объекты с одинаковыми именами перерисовываются. Решение - ввел PREFIX, как настраиваемый параметр. Но это не совсем удобно. Можно привязать к символу, но трейдер может открыть несколько одинаковых графиков. Есть ли варианты?
Можно привязать к символу, но трейдер может открыть несколько одинаковых графиков. Есть ли варианты?
У каждого графика, даже если они одинаковые, есть его уникальный идентификатор, его возвращает функция ChartID. //--- get handle of the current chart long handle=ChartID();
Все даты в формате GMT
2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет