Автор |
Сообщение |
Alexander_tr
Зарегистрирован: 01.04.2010
Сообщения: 60
Откуда: Москва
|
Всем привет,
Что делаю:
тестирую портфель из акций, есть индикатор по которому определяю вес каждой акции.
Значения этого индикатора через addtocomposite передаю в custom backtester interface
И там на втором уровне где используется sig. пытаюсь при входном сигнале указать на сколько рублей надо брать акцию.
Код: |
for(sig = bo.GetFirstSignal(i);sig;sig = bo.GetNextSignal(i))
{
if(sig.IsEntry())
{
//определяем на какой акции пришел сигнал
for(j = 0;j<numoftickers;j++)
{
if(sig.Symbol == StrExtract( Tickers_arr, stock_indexes[j] ))
{
symb_ind = j;
break;
}
}
//////////////////расчет размера позиции/////////////////////////
CapitalW = bo.Equity * stock_size[symb_ind];
sig.PosSize = CapitalW;
_TRACE("size: " + NumToStr(sig.PosSize));
/////////////////////////////////////////////////////////////////
}
}
|
Делал трассировку, точно правильное кол-во в рублях передается в sig,PosSize, но тестер зараза не всегда покупает там акцию.
В коде самой стратегии ничего про УК не написано, ну т.е. setpositionsize() не пишу, пробовал писать по разному, не помогло.
Сигнал который приходит 100% должен быть взят, т.е. перед этим на акции нет открытой позиции. Портфель весь в деньгах. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Может ограничение по объему срабатывает?
Limit trade size as % of entry bar volume |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexander_tr
Зарегистрирован: 01.04.2010
Сообщения: 60
Откуда: Москва
|
000 писал(а): |
Может ограничение по объему срабатывает?
Limit trade size as % of entry bar volume |
стоит 0, т.е. отключен
Кстати интересный момент, если в сайз написать просто число, то все сделки берутся. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну тогда еще глянь
Disable trade size limit when bar volume is zero
и включи report - Detailed log и глянь что пишет в отчете. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexander_tr
Зарегистрирован: 01.04.2010
Сообщения: 60
Откуда: Москва
|
000 писал(а): |
Ну тогда еще глянь
Disable trade size limit when bar volume is zero
и включи report - Detailed log и глянь что пишет в отчете. |
Disable trade size limit when bar volume is zero - галка стоит
прикрепил что получилось.
Он на 1 баре мне создал сигналы сразу на 3-х акциях gazp, sber, tatn
лимиты я указал только для tatn. gazp и sber указал 0.
Выглядит так, что он посмотрел только на газпром, а на остальные сигналы забил. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Тогда я пас. Я custom backtester interface не пользуюсь... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alexander_tr
Зарегистрирован: 01.04.2010
Сообщения: 60
Откуда: Москва
|
000 писал(а): |
Тогда я пас. Я custom backtester interface не пользуюсь... |
жаль, 2-й день парюсь) Ну как рожу напишу решение |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Alexander_tr
Зарегистрирован: 01.04.2010
Сообщения: 60
Откуда: Москва
|
Ну что есть решение.
Что бы проигнорировать входной сигнал, в описании custom backtester interface в примере пишут
Проблема в том, что если в одно время пришло несколько сигналов от разных инструментов, то тестер увидев, что у вас на первом сигнале нет денег, проигнорирует все следующие, подумав автоматом что и на следующие денег быть не должно.
Что бы все работало как надо нужно писать
т.е. делать нереальную цену. Тогда все работает как надо.
Оказывается Томас (разраб ами) в своей презентации custom backtester interface именно этот вариант и использовал. А предыдущий актуален, если у вас не будет сразу несколько сигналов в одно время |
|
|
Посмотреть профиль Отправить личное сообщение |
|
rupiter
Зарегистрирован: 16.09.2013
Сообщения: 75
|
Обнаружились интересные глюки кастомного бэктестера:
1. При использовании low level custom backtesting, независимо от остального кода, в Detail Log отсутствуют даты сделок (просто пустая колонка!). При использовании high и mid уровня все отображается нормально.
2. При использовании low level custom backtesting, при добавлении своего условия (например, выхода на n-ом баре), после тестирования в списке Trade List сделки отображаются правильно. Но если (через правую кнопку мыши) вызвать команду Show arrows for actual trades, на графике отображаются сделки, как если бы они были завершены основными правилами системы. Например, вход и выход в нашей системе предусмотрен через пересечение скользящих. Мы добавили временной стоп внутри цикла кода кастомного бэктестера. По указанной команде на графике отобразятся входы и выходы по пересечению скользящих - кастомный выход будет проигнорирован. Хотя в списке сделок выходы отображены с учетом стопов.
Что интересно, если вызвать другую команду - Show current trade arrows, то текущая сделка на графике будет показана правильно.
UPD. 1. Нашел в сети письмо Томаша, что при low level вообще не подразумевается правильная работа Detail Log. То есть, его надо заполнять "ручками". На то, мол, и low level.
2. Со стрелками вообще какой-то кошмар. Они живут какой-то своей жизнью... Вот у нас список Trade List. Казалось бы, самое логичное это проставить стрелки в соответствии со списком. Ан нет. Стрелки можно отобразить только по условиям входов / выходов их основного кода либо сделки Raw. Правильно лишь отображаются индивидуальные сделки. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|