Ошибки, баги, вопросы - страница 1234
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Еще вопрос. Функция BarsCalculated() ведет себя одинаково при вызове из советника и индикатора?
А что не так?
Просто экспериментально я получил другие сведения. Как я понимаю, должны работать они одинаково. Но это не так. Так как сегодня воскресенье, проверить в текущем времени не получится. Но в тестере тоже работают по разному. Привожу два примера кода. Суть в следующему. Пытаемся получить данные с семи ТФ. Запускаем (и советник, и индикатор) не с самого старшего ТФ. Например, с М15. Если на текущем тике произошла синхронизация образования новой свечи и получения данных по этой свече через BarsCalculated() - производим запись количества рассчитанных баров по BarsCalculated() и время образования текущей свечи. Подробности в коде.
Индикатор.
Первый тик.
По каждому ТФ образуется новая свеча. Однако, на ТФ М1, М5, М15 - BarsCalculated() возвращает 0. Но, на ТФ М30, Н1, Н4, D1 - возвращает -1. Тут сразу возникает вопрос почему функция работает по-разному? Соответственно, если мы запускаем на ТФ М30 - для ТФ М1, М5, М15, М30 - BarsCalculated() возвращаем 0. И, соответственно, для ТФ Н1, Н4, D1 - возвращает -1. Из этого можно сделать вывод, что для старших ТФ данные изначально недоступны.
Второй тик.
По логике кода - происходит синхронизация, т.е. запись параметров (все по логам примеров);
Третий и последующий тики.
Мы получаем новый бар по индикатору для ТФ М30, Н1, Н4, D1. Хотя, данные уже, вроде, были получены. А получается, что количество по ТФ, большим текущего больше на 1. Очень странное поведение. В дальнейшем (с использованием текущего примера) синхронизацию мы получить не сможем.
Советник.
Первый тик.
Синхронизация происходит сразу же. Получение нового значения по BarsCalculated() происходит синхронно с образованием новой свечи.
Второй и последующие тики.
Логичное поведение функции. Все синхронизируется.
Запустите оба примера по тикам в тестере, сами все поймете. Текущее поведение функции разнится для советников и индикаторов. Также получение данных из индикаторов для старших ТФ запаздывает. Таким образом, я думаю что при запросе данных для М15 и М30 они не будут доступны в один и тот же момент. Актуальные данные - точно нет!
Если я все же ошибаюсь, подскажите как правильно получать данные индикатора со старшего ТФ? Спасибо.
Зачем два раза вызывать Compare ??? Это может быть дорогая операция (если надо проверить равенство больших объектов, а не эквивалентность по некоторым полям).
Можно ведь просто сохранить результат после первого вызова Compare.
Откуда берутся эти значки снизу на графике?
Никакого индикатора на графике нет, а значки появляются каждый раз. Я уже замучался их удалять. Как отключить эту хрень? В настройках терминала не нашёл ничего связанного с этим.
Откуда берутся эти значки снизу на графике?
Никакого индикатора на графике нет, а значки появляются каждый раз. Я уже замучался их удалять. Как отключить эту хрень? В настройках терминала не нашёл ничего связанного с этим.
Это события из вкладки "Календарь". Для удаления: правой кнопкой мышки внутри вкладки "Календарь" -> "Показать на графиках" -> "Удалить все события.
P. S. И снимите галочку с пункта "Автообновление". Теперь новые события Календаря не будут отображаться на графике.
Возьмите любой эксперт (из примеров от MetaQuotes),запустите под билдом 975 на определённом периоде и с параметрами,
получите результаты работы, т.е. график кривой доходности и таблицу сделок.
Теперь запустите этот же эксперт под билдом 1010 на этом же периоде и с этими же параметрами, получите совершенно другие результаты...
P.S. Метатестер 32-разрядный
Всем здрасте) Помогите пожалуйста запустить таймер:
int OnInit()
{
bool setTimer=EventSetTimer(60);
Print("Установка таймера");
}
void OnTimer()
{
Print("Прохождение времени");
}
Вопрос: почему не работает? Весь мозг себе вынес...(((
В какой программе запускаете? может вы в скрипте пробуете? Измените на индикатор или эксперт.
И добавьте
Print("Установка таймера");
return INIT_SUCCEEDED;
Вопрос: почему не работает? Весь мозг себе вынес...(((
Возможно у вас не хватило терпения подождать 60 секунд? %)
> ALXIMIKS
В скрипте таймер не работает.