Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пожалуйста, опишите условия тестирования.
Попробую погонять на разных билдах
Пожалуйста, опишите условия тестирования.
Попробую погонять на разных билдах
Выслал.
Условия тестирования такие :
Если одна линия индикатора пересекла другую - входим.
Выходим, если одна линия индикатора пересекла вторую.
Индикатор простой - строится и подключается к графику быстро, сделан по аналогии с индикатором Ишимоку.
Линии беруться с одного и того же индикатора, но с разных таймфреймов (вернее только с двух : H4 & D1)
Тормоза зафиксированы при получении данных индикаторов, когда первая линия берется с 4-часового таймфрейма, а вторая с Дневки.
Тестировать на H4 по ценам открытия.
Если нужна одна копия одного индикатора для теста - тест проходит мгновенно.
Если нужно 2 копии одного индикатора - тест проходит мгновенно.
Если нужно больше копий одного индикатора - то грузяться только 2 и тест тормозит СТРАШНО !
Одним словом, если копий больше 2 - тормоза страшные. С одной и двумя копиями Метатрейдер работает на ура. При большем количестве - он тормозит страшно. Код у мен простой.
Вот мое заключение. И просьба побыстрее устранить проблему.
Не могу я ждать по 53 часа на тестировании.
Быстрее наверное будет, тестить в Омеге - а потом переписывать конкретный вариант для реала на МТ4.
В соседней ветке Вы сами предложили его прислать, я так и не дождался.
То что Вы пишете про 2 или 4 копии индикатора - это беллетристика, не подкреплённая фактами. Давайте коды с Вашими комментариями (типа "если эту строчку закомментировать, то всё летает"). А иначе, это всё пустой звук. К сожалению.
int start()
{
datetime Begin,Finish;
Begin = SystemTime();
//if( TimeCurrent() - LastTradeTime < 10 ) return (0); //задержка на 30 секунд если была перация
if ( Enter() == 1 ) return(0); //только открытия позиций
//if ( Edit() == 1 ) return(0); //только сопровождение позиций
if ( Exit()== 1 ) return(0); //только закрытия и удаления ордеров
Finish = SystemTime();
if (Finish - Begin > 5) Лог(НомерСоветника,"Задержка ; "+(Finish - Begin)+" ; Дата ; "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES),1);
return(0);
}
Так вот задержек советника практически нет - там 5 строк с временем выполнения больше 5 сек.
Тоесть получается, что сама функция start() вызывается долго - и чем больше история - тем больше время торможения.
А исходник индикатора я вам выслал еще вчера.
Я погонял Вашего эксперта в отладочной версии клиентского терминала и вот что обнаружил. Ваш индикатор часто пересчитывается с нуля. По той самой причине, что бывают такие бары, на котором он не вызывается. То есть, два-три бара пропустили без расчёта (а фактически экономного пересчёта последнего бара), получите полный пересчёт.
Поэтому совет. Вызывайте индикатор каждый бар, независимо от условий. Лучше всего поставить вызов индикатора в начале функции start. По примеру MACD Sample:
А уже дальше, по ходу дела, оперируйте уже заполненными переменными
Мой индикатор фрагментарный - для некоторых баров значения индикатора равны Empty_Value.
Кроме того индикатор я не вызываю на 0 баре - НИКОГДА. Я беру на текущем баре значения индикатора на 1 и 2 барах.
Объясните подробнее, что значит "два-три бара пропустили без расчёта, получите полный пересчёт".
В советнике часто бывает ситуация, когда если есть ордера, то индикатор не вызывается и бар пропускается дальше.
Сейчас у меня заканчивается тестирование, где я засекаю все время потраченное внутри функции "start".
Мне кажеться, что мы ищем не там.
Что непонятного про пропуск 2-3 баров? Вы сами же и пишете: "В советнике часто бывает ситуация, когда если есть ордера, то индикатор не вызывается и бар пропускается дальше".
Вот я Вам и советую сделать так же, как и в MACD Sample - заранее заполните переменные рассчитанными значениями индикатора. А уже потом проверяйте условия. Вы удивитесь, насколько быстрее пройдёт тестирование.