Блог им. Ho_Chu

как быть с отсутствующими свечами в TS Lab

    • 03 июля 2023, 15:29
    • |
    • Ho_Chu
  • Еще

Ситуация: тестирование на М5 и на М1 дает разное количество входов за 1 и тот же период времени. В результате анализа входов выясняется ситуация, что некоторые минутные свечи отсутствуют в данных. Например, отсутствует свеча в 09:49. И все бы ничего, если Вам не надо было войти точно в 9:50.

TS Lab видит, что свечи в 9:49 нет, и не входит на открытии свечи в 9:50. «Не запостил — не было». Вы, задавая вход, как бы задаете свечу закрытия и входите на открытии (надеюсь, правильно объясняю) следующей свечи.
Но если заданной свечи не было, то на следующей Вы не сможете зайти. Вход пропущен. Или выход.

Как решить такую проблему? Ведь она может случиться и в реальности. Ну не будет сделок в течении минуты и что? Куда крестьянину податься?
А если надо будет использовать ещё более мелкий ТФ? что делать там?
Мне представляется, что надо бы формировать виртуальную свечу в заданный момент времени из нескольких периодов времени назад так, чтобы среди этих периодов времени гарантированно была хотя бы одна реальная свеча. Например, на минутках каждую минуту формировать свечу из 17-28 свечей назад (цифры условные) или даже из 100 свечей назад. Тогда, с некоторой ненулевой вероятностью можно предположить, что среди этих 17-100 периодов назад попадется хотя бы одна сделка, которая сформирует свечу, закрытию которой мы могли бы присвоить текущее время и использовать дальше. Но как это сделать?

Может кто-нибудь подскажет решение подобной проблемы? Лучше сразу с кубиками, если можно )))

ЗЫ напрашивается простое решение: нет свечи — жди следующую и тогда на следующей+1 войдешь… для тестов то да, такой метод может быть допустим, т.к. до тех пор пока не будет реальной свечи сделка не откроется. Но в реальности то стакан не пуст и тебе нужно просто открыться по времени. А для этого нужно, чтобы была «прошлая свеча»… или хотя бы прошлая «виртуальная свеча»… Поэтому для данного предложения справедлива мудрость: Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения.

Итак, повторю вопрос: как сделать виртуальную свечу в заданное время из множества свечей назад? И самое главное, можно ли это дальше использовать в TS Lab-е?

  • обсудить на форуме:
  • TSLab
16 комментариев
использовать ректально ;)
avatar
делается элементарно...
добавляешь неторгуемый источник у которого есть все бары
например для россии это самый ликвидный сбер газпром индекс ртс
а для америки spy

при этом в неликвиде тслаб заполняет паузы пустыми свечами

потом делаешь запрет на торговлю при high==low==close==open т.е не торгуешь в пустая свеча
avatar

ves2010, бигзур рахмат!

я добавил 2-ой инструмент, взяв индекс РТС и время просто стал брать с него...
казалось бы, ситуация улучшилась, но..!

если раньше число сделок на М5 было, например, 121, а на М1 — 113, то изменив источник времени, я поднял число сделок со 113 до 120...

1 сделка где-то до сих пор болтается, пойду искать

avatar

ves2010, все, я нашел баг, количество сошлось, спасибо! решение простое и прикольное, на первое время пойдет!!!

но как быть, если нужно уйти ещё ниже, на ТФ меньше 1 минуты? там ведь и на индексе РТС и даже на Си может не быть сделок на уровне 5-10 секунд...

соответственно и баров таких не будет

и как быть, если нам нужна цена закрытия периода, в котором нет последнего бара по тем же причинам?

поэтому и возникала то первоначальная мысль, — делать склейку из множества баров в виртуальную свечу

тогда у этого множества баров (в том числе возможно отсутствующих) найдется последний, клоуз которого мы и сможем использовать

avatar

ves2010, 

если просто ставить запрет подобный этому high==low==close==open, то мы легко пропускаем периоды, в которых была 1 сделка… в эти моменты тоже будет high==low==close==open

может быть надо делать сложнее? типа что текущий high==low==close==open и он же равен прошлому high==low==close==open… если это так, то тогда да — этот новый бар -  пустой период, заполненный прошлым клоузом

avatar

ves2010, 

и, кстати, нельзя сравнивать опен==клоуз
пишет ошибку

03.07.2023 22:06:18 128 CS0029: Не удается неявно преобразовать тип «double» в «bool».

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

Synthetic, Вы были бы правы, если бы не одно но!

Скачать котировки без пропуска периодов можно с того же финама, достаточно поставить галку в «заполнять периоды без сделок» и тогда финам заполняет пустые периоды сам, но БУДУЩЕЙ ценой...
А это не по фэн-шую

Надо бы где-то взять обычный счетчик времени с задаваемым шагом, который будет создавать пустые бары, но который будет побуждать ТС Лаб тоже создавать бары в «пустые периоды», но заполнять их при этом он будет ПРОШЛЫМ известным клоузом, что намного более правильно.

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

Осталось найти такой счетчик. Или же, говоря Вашими словами, — эталонный фиктивный инструмент с произвольным шагом между барами, вплоть до 1 сек или меньше.

у Вас есть такой инструмент? можете поделиться?

avatar

Ho_Chu, имхо вам надо матчать подтянуть, а не про фэншуй рассуждать. Я не знаю что там за проблемы могут быть в тслабе, но хочу вам коротенько заметить:
1. Запоминать клоуз можно не только глядя на предыдущую свечку, говорят в программировании придумали переменные.
2. Знаете что такое таймфрейм свечка? Это результат хотя бы одного трейда за заданный период времени. Нет трейда = нет свечки. Нет ни одного трейда за три часа = нет ни одной свечки за три часа, ни минутной ни секундной, вообще никакой до трех часовой. Попробуйте как-то по другому ориентироваться в пространстве. Это сильно упростит вам в дальнейшем жизнь, учитывая что вы планируете входить/выходить не по времени свечки, а по событиям в стакане. И «В любой момент времени с любым шагом» как вы пишете вы получите ровно то же, что и сейчас: нет трейдов = нет свечек.
4. Стакан — это отдельный поток маркет данных. Отдельный от трейдов из которых или вы сами или ваш брокер рисует вам свечки. Типа маркет данных «Свечка» в природе не существует (вам уже выше писали). Иными словами, если вы будете смотреть в стакан только в момент клоуза допустим минутной свечки, то наверное лучше вообще не смотреть.

avatar
Sprite, 

Так с целью подтягивания матчасти и создан пост
Я же не настоящий «сварщик»
Но входить и выходить можно и только по времени, пофиг на стакан ))
Я в курсе того, что ориентироваться надо на поток данных ))
Но пост был создан исключительно из-за «странности» тслаба в тестировании, которая МОЖЕТ проявиться в реальности.
Она может и не проявиться, но лучше перестраховаться.
avatar
Ho_Chu, отсутствие свечек — это не «странность», а норма, просто вам надо тестировать как-то по другому. Да так чтобы потом не влияло на «реальность». Представьте себе: вы взяли мало-ликвидный или медленный инструмент, с начала сессии прошло 30 минут, за которые не было ни одного трейда, а ваш тестер, с вашим подходом, уже нарисовал вам 180 десятисекундных пустых свечек со вчерашним клоузом. Практический толк в этом я вижу только если вы тестируете производительности самого тестера, когда же у него память закончится.
avatar

Sprite, 

я согласен с Вами почти полностью
опять же с одним но!
по тому, как я теперь это понимаю, тестер действительно работает так, как умеет, т.е. по свечам и если у него их нет, то и нет… ему нечего делать и упрекать его нельзя

а вывод прост, но не очень уж радостен: тестовая модель будет отличаться от модели для торгов

точнее наоборот: делай модель для реальных торгов, а что там будет в тестере — да и пофиг, если тестер хочет открыть сделку на пустой/нулевой свече, то пусть открывает… для нас важно, чтобы в реальности он своё время не пропустил

поэтому, до уровня ТФ=М1 проблему можно признать решенной, а вот меньше М1 — пока не очень понятно, как быть?

avatar
Ho_Chu, а вот меньше М1 — пока не очень понятно, как быть?


Вы невнимательно читаете, нет никакого M1. И меньше M1 нет и больше.
В мире есть такие события:
1. Новый трейд
2. Обновление стакана
3. Новая секунда (мили/микро/нано) на ваших наручных часах
Всё.

avatar
Sprite, 

да-да, я помню ))) ложки не существует ))
avatar
Sprite, 

и спасибо за мнение и советы!
avatar
Игнорировать. А лучше выбирать настолько ликвидные инструменты, чтобы минутные свечи были на каждом интервале
avatar

теги блога Ho_Chu

....все тэги



UPDONW
Новый дизайн