Автор |
Сообщение |
Sergеi
Зарегистрирован: 13.04.2011
Сообщения: 21
|
Имеется пробойная систем, для снижения просадок хотелось бы протестировать данную систему фильтруя сигналы индикатором Avg Win%/Los%.
Немного о системе:
-система работает и в лонг и в шорт, сигналами являются пробой mах(min) за определенное количество баров .
-сигналы на выход: стоп профит, стоп лосс, стоп через N баров, а также переворот по противоположному сигналу.
-стопы организованы через ApplyStop ( полагаю для расчета индикатора придется избавляться от ApplyStop).
Возможно ли вести просчет Avg Win%/Los% внутри кода системы?
Если возможно, помогите плз... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Вообще сложно. Работая с циклами, ты можешь запоминать эффективную цену входа и считать результат сделки по цене выхода. Далее вести счет переменным числа профитных сделок и убыточных -> индюк.
Вопрос за какой период ты будешь считать этот индюк и, учитывая что точно придется юзать SetBarsRequired(sbrall, sbrall), как будет считаться в коде этот индюк с периодом скажем месяц/полгода/год. Проблема в том что в конструкции For(i=0...) для номеров баров Ами возьмет то ли первый бар с даты теста, то ли первый бар с того места, когда она посчитает что все индюки рассчитаны, во втором случае у тебя тогда в массивы могут записаться лишние сделки. Как то пробовал решать эту задачу чисто afl-ными средствами, ничего нормального не получилось, форвардный тест точно не сделать.
Единственное решение на мой взгляд это сделать бектест, выгрузить в текстовый файл сделки в формате дата,результат. Потом сделать код с фильтром, который будет считывать этот файл, считать индюк и принимать решение о фильтрации, после чего это сделать бектест этого варианта. И сравнить. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Sergеi
Зарегистрирован: 13.04.2011
Сообщения: 21
|
Честно признаюсь, в АМИ далеко не специалист, и написание цикла для того чтобы
Цитата: |
запоминать эффективную цену входа и считать результат сделки по цене выхода. Далее вести счет переменным числа профитных сделок и убыточных -> индюк.
|
для меня большая проблема...
Хотя примерно такой расчет я и предполагал, только период для расчета индикатора считается не по барам, а по количеству сделок
Например: по предварительному тестированию выяснили что при снижении средней прибыли%/убыток% за 100 сделок ниже порогового значения сделки не совершаем.
С начала истории система работает без индикатора пока не совершит 100 сделок(назовем периодом), после того как совершилось 100 сделок включается в работу индикатор и входы приобретают фильтр AvgWin%/Loss%(за 100 предыдущих сделок) > порогового значения... с таким фильтром система прогоняется до конца тестового периода. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Разбери код системы, написанной в цикле, в этой статье:
http://robostroy.ru/community/article.aspx?id=429
В самом низу приложен архив.
В твоем случае тогда даже не надо считать результат сделки так как он уже будет в файле сделок, куда ты их экспортируешь после бектеста. Тебе надо написать функцию, которая смотрит на дату входа в рынок, и считывает из файла 100 сделок до этой даты, подсчитывая число прибылей и убыток, а дальше считает индюк, после чего обнуляет сигнал входа или не обнуляет. С функцией считывания из файла справишься? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Sergеi
Зарегистрирован: 13.04.2011
Сообщения: 21
|
может есть у когот еще варианты решения такой задачки? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Самый "простой" способ описан тут
Самый простой вариант вывести нужный параметр в таблицу отчета тестера.
См
Ex 1: High level - custom metrics - cont. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Sergеi писал(а): |
Возможно ли вести просчет Avg Win%/Los% внутри кода системы? |
Не совсем понятно зачем? Ведь АА считает этот параметр. Не проще ли в таком случае провести Walk-Forward Optimization?
Как мне кажется, если суть в том, чтобы останавливать систему и менять параметры это точно к Walk-Forward Optimization.
И осторожнее с ApplyStop, у ами с ними и командами Sell Cover разные приоритеты и он выходит по стопам и только потом смотрит сигналы на выход.
Там регаться надо, не выложишь тут?
000 писал(а): |
Самый "простой" способ описан тут |
Да там же про ООП уже разговоры! Короче кончится всё С++ у Томаша))) |
Последний раз редактировалось: kosbar (Сб Окт 06, 2012 1:13 am), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Sergеi
Зарегистрирован: 13.04.2011
Сообщения: 21
|
Цитата: |
Там регаться надо, не выложишь тут?
|
надеюсь spitfire не будет против... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|