Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хочу уточнить термин "последняя сделка".
Искать нужно последнюю сделку внутри текущего дня? Или на последние N-дней?
посл. сделку за 24 часа - дальше не надо перебирать историю.
посл. сделку за 24 часа - дальше не надо перебирать историю.
Значит так:
Индикатор использует код создания, перемещения и удаления вертикальной линии из справки OBJ_VLINE. (пока в индикаторе работает только создание линии). Имя линии задаётся во входном параметре "Vertical line name"
Вертикальная линия создаётся в OnOnit():
Для минимизации нагрузки опрашиваем истории раз в минуту. Для этих целей в области глобальных переменных нашей программы (в данном случае индикатора) объявим переменную ExtLastMove
- в этой переменной будет хранится время последнего обращения к торговой истории.
Дальше в OnCalcalculate() от текущего времени (времени последней котировки по любому символу TimeCurrent) отнимаем сохранённое время ExtLastMove и если разница менее 60 секунд - выходим
если разница окажется больше - значит записываем в ExtLastMove новое время.
Обращение к торговой истории происходит в LastProfitForPeriod().
Здесь используются две даты: от и до. "До" выставляем в будущее (текущее время плюс одни сутки), а "от" получаем вычитанием суток из текущего времени
Пока всё, итак много букофф...
Не понял только, зачем нам to_date равное стуки в будущее? Может все-таки до текущего момента? В будущем результат сделки вроде не определить :) Или нам эти сутки в будущее необходимы, чтобы в будущем времени рисовать линию?
Еще по циклу вопрос.
Как я понял, мы подгружаем массив с данными по сделкам и перебираем массив с нулевой сделки к последней, сравнивая время с последним записанным и перезаписываем переменную last_time, если deal_time оказывается более поздней. А может быть можно наоборот массив перебирать с конца? Собственно самый последний элемент массива и будет последней закрытой сделкой, по которой нам нужны данные?
Возможно, я допускаю какие-то логические ошибки - прошу строго не судить :)
Так нужно. Чтобы гарантированно получить "от" и до текущего времени.
А может быть можно наоборот массив перебирать с конца?
Если стоит задача найти последнюю сделку, то Массив необходимо перебирать и искать именно время - мало ли как чего случится или внутренняя логика ядра поменяется и сделки будут скинуты вразнобой.
Так нужно. Чтобы гарантированно получить "от" и до текущего времени.
Если стоит задача найти последнюю сделку, то Массив необходимо перебирать и искать именно время - мало ли как чего случится или внутренняя логика ядра поменяется и сделки будут скинуты вразнобой.
Ок, понял. В принципе с учетом ограничения истории в 24 часа сколь-либо существенной нагрузки явно не будет при переборе данных :)
Ок, понял. В принципе с учетом ограничения истории в 24 часа сколь-либо существенной нагрузки явно не будет при переборе данных :)
Итак, остаётся последний штрих - в зависимости от полученной прибыли перемещать линию.
НАпомните какие там правила перемещения?
Всё верно или что-то путаю?
Вот нашёл пояснение, почему параметр "до" нужно делать в будущее:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Renat Fatkhullin, 2016.11.04 12:43
Никогда не делайте TimeCurrent() как конечную дату, делайте TimeCurrent()+86400, чтобы гарантированно захватить все оконечные сделки.
TimeCurrent - это не точное последнее время, а "последнее известное при апдейтах время сервера", что не есть 100% точное время. Особенно на старте.