Раздельное тестирование качества входов и выходов

 

Коллеги, как-то недавно после тестирования очередной программы посетила меня идея. А не попробовать ли разработать методику раздельного тестирования качества входов и выходов. Уж очень они друг на друга влияют в общей программе. Например, проанализировать, на сколько цена прошла в нужном направлении, сколько потребовалось времени на это и т.п. То же попробовать сделать с выходами. Без открытия позиций. Анализировать только условия. Иначе постоянно решаем уравнение с двумя неизвестными.


Вопрос вот в чём: может кто-то уже этим занимался, и есть наработки и опыт?


Поделитесь, если можно.

 
Думаю, начать стоит отсюда: Математика в трейдинге. Читать можно начать с конца :)
 
magiXpert:
Думаю, начать стоит отсюда: Математика в трейдинге. Читать можно начать с конца :)

Статья хорошая, но первоначальная идея всё же несколько иная. Т.е. не читать с конца, а сделать наоборот. Как по результатам найти оптимальные условия входов или выходов. Вроде этого. Сейчас же в тестере может наложиться хороший вход на плохой выход и общий результат будет плохой. В этом случае высока вероятность того, что хороший вход просто будет отсеян в мусор. То же самое с выходами. Подход чисто практический, цели тоже.

 
rebus:

Коллеги, как-то недавно после тестирования очередной программы посетила меня идея. А не попробовать ли разработать методику раздельного тестирования качества входов и выходов. Уж очень они друг на друга влияют в общей программе. Например, проанализировать, на сколько цена прошла в нужном направлении, сколько потребовалось времени на это и т.п. То же попробовать сделать с выходами. Без открытия позиций. Анализировать только условия. Иначе постоянно решаем уравнение с двумя неизвестными.


Вопрос вот в чём: может кто-то уже этим занимался, и есть наработки и опыт?


Поделитесь, если можно.

Написать индюк, заглядывающий вперед на n-е количество баров (естественно речь идет об анализе истории!!!!!!) и логировавть его и твои входы, а потом анализировать "это" "как-то". Сам индюк, например, максимальный High и/или минимальный Low минус "Цена входа" (можно еще "виртуальную просадку" оценивать/выводить и т.п.). Но тут появятся дополнительные неизвестные - число баров вперед.

Да и с анализом вопрос - кто в чем сведущ и насколько "это" будет работать в будущем.

В идеале получилось БЫ отсеять "всегда не оптимальные входы" и "не замахиваться на несбыточные TP"


С тестирование качества выходов - для меня сложнее - не могу уложить в своей голове алгоритм оценки. Что-то типа аналог предыдущего, но на n-баров вперед "флэт".


Скажу сразу - у меня пока не получилось получить "промышленную систему" на этом принципе.


ЗЫ. Если сделки в тестере не совпадают со сделками на реале (мало ли), то можно независимо выводить "сигналы на вход" с реальной торговли и "индикатор" в разные файлы, а потом join'ить их во внешнем SQL-сервере.
 

Для тестирования входов я применял такой подход. Выход делался заведомо запаздывающим. Например по времени. При закрытии ордера максимальный профит и максимальная просадка до максимального профита записывались в файл. Заодно записывалась и масса других данных (от времени профита/просадки до показаний индикаторов в момент открытия позиции и в те же моменты максимального профита/просадки, одним словом на что фантазии хватит). После чего пытался проанализировать эту прорву данных, без особых впрочем итоговых чудес :).

Для тестирования выходов в литературе предлагается использовать случайные входы.

 
rebus:

Коллеги, как-то недавно после тестирования очередной программы посетила меня идея. А не попробовать ли разработать методику раздельного тестирования качества входов и выходов. Уж очень они друг на друга влияют в общей программе. Например, проанализировать, на сколько цена прошла в нужном направлении, сколько потребовалось времени на это и т.п. То же попробовать сделать с выходами. Без открытия позиций. Анализировать только условия. Иначе постоянно решаем уравнение с двумя неизвестными.


Вопрос вот в чём: может кто-то уже этим занимался, и есть наработки и опыт?


Поделитесь, если можно.

Качество входа зависит от того насколько точно система анализирует историю, а вот выход - это совсем другой вопрос.

В идеале позиция должна сопровождаться в каждый момент ее развития и соответственно регулироваться - доливаться, усредняться или сокращаться и закрываться. Сопровождение и выход из позиции - это и есть главная работа.

 
такой подход. в эсперте допускается неограниченное количество ордеров, выполняются открытия на всех точках входа.
 
Integer:
такой подход. в эсперте допускается неограниченное количество ордеров, выполняются открытия на всех точках входа.

Не совсем так. Не нужно вообще ордера открывать. Нужно просто фиксировать время и цену открытия, а потом анализировать до какого уровня добрался профит. Далее обработка, небольшое изменение условия и опять прогон. Просто, в принципе. Но сразу будет видна потенциальная прибыль.

С выходами действительно сложнее. Их можно оптимизировать только после оптимизации входов. Но то, что сейчас многие тестируют не входы-выходы, а ордера, я считаю в принципе неверным. Хотя, конечно, если открывать неограниченное количество ордеров и их отслеживать, то получается нормально. Только сложно и управлять ордерами и оценить правильно качество входов и выходов отдельно друг от друга. Всё же мне кажется, что лучше просто сначала прогнать условия входа. Сразу должно быть видно. Полученную статистику по профиту и другим параметрам уже можно обработать любыми статистическими методами. Тут только фантазия ограничивает.

Я, собственно, и интересовался теми параметрами, которые народ, возможно, и анализировал. Не одному же мне такая идея пришла в голову. Мне видится, что нужно анализировать максимальный профит за заданный интервал времени (не больше) до ухода в убыток. Остальное как-то не видится. Может, кто ещё что думает? Программу-то наваять несложно. Нужно придумать сначала.

 

цель оптимизации системы подающей сиганлы к открытию - максимум прибыли, минимум убытков. отрабатываем все точки входа, оптимизируем стоплосс и тейкпрофит и видим что из себя представляют сигналы - какую прибыль они могут взять не уходя в определенный стоплоссом убыток.

 
Integer:

цель оптимизации системы подающей сиганлы к открытию - максимум прибыли, минимум убытков. отрабатываем все точки входа, оптимизируем стоплосс и тейкпрофит и видим что из себя представляют сигналы - какую прибыль они могут взять не уходя в определенный стоплоссом убыток.

Кто бы возражал :) Но я предлагаю отделить котлеты от мух. А именно, сначала отработать входы, а потом только выходы.

Например, делаем программу, в которой описываем условие входа. Задаём количество баров после срабатывания условия, в течение которых производится подсчёт прибыли. Далее фиксируем максимальную прибыль до окончания этих баров или ухода цены в убыток в файл для дальнейшей обработки. Прогоняем по истории. Определяемся, по какому критерию будем оптимизировать качество входов - по максимальной прибыли, минимуму убытков и т.д. Изменяем условие - проверяем результат. И так до получения приемлемых потенциальных результатов. Я подчёркиваю - потенциальных! И только после этого начинаем заниматься выходами. Для этого можно на основании полученных условий уже открывать ордера - это проще. Оптимизацию возможно вести по сравнению получаемых результатов с потенциальными.

В общем-то, всё. Вся идея.

Сейчас же все пытаются сразу оттестировать всё. И входы и выходы. При этом, мне кажется, далеко не просто выявить причину убытков или недостаточной эффективности программы, особенно, если есть ограничения на количество открываемых ордеров. Да, впрочем, ограничения всё равно будут - не от ДЦ, так от депозита. Поэтому программу с неограниченным количеством ордеров просто несерьёзно рассматирвать в качестве тестового образца.

Повторяю - сделать это очень просто. У меня, собственно, только один был вопрос к общественности: не занимался ли уже кто-то этим? Не люблю я делать то, что кто-то уже делал.

 

Может это поможет. Нужно иметь 5 разных алгоритмов (логик работы).

  1. Вход в бай.
  2. Выход из бай.
  3. Вход в селл.
  4. Выход из селл.
  5. Управляющий, при неоднозначной ситуации, выставление SL по фракталу (или еще как).