Автор |
Сообщение |
Nergal
Зарегистрирован: 04.09.2012
Сообщения: 92
Откуда: ЕС
|
У меня есть N тикеров, которые нужно торговать каждый день, при этом может быть открыта только 1 лонговая и 1 шортовая позиции. Выход на следующем баре. Входы и выходы по ценам закрытия.
Пробовал так:
SetOption("MaxOpenPositions", 2);
SetOption("MaxOpenLong", GetOption("MaxOpenPositions") / 2);
SetOption("MaxOpenShort", GetOption("MaxOpenPositions") / 2);
Buy = Short = True;
Sell = Ref(Buy, -1);
Cover = Ref(Short, -1);
PositionScore = 50 - RSI(50);
не работает. Бэктестер выдает неправильные результаты. AllowSameBarExit тоже не помогает.
Пробовал с ApplyStop(stopTypeNBar, stopModeBars, 1), но та же фигня. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А конкретно что не так? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Nergal
Зарегистрирован: 04.09.2012
Сообщения: 92
Откуда: ЕС
|
Один день тестер лонгует, на следующий только шортит и так по кругу через день. А нужно чтобы каждый день и лонг был и шорт.
Вообще столкнулся впервые с таким геморроем. Вроде бы тривиальная задача. Всего-то надо каждый день на дневках лонговать одну позу и шортить одну позу и выходить на след. день. Как это реализовать без Custom Backtester Interface, пока не придумаль. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Интересно то, что у меня твой код только лонгует.
В общем 2 ошибки.
1. Ты не задал сайз и тестер все бабло тратит на первую сделку. Таким образом на вторую денег все равно не остается.
2. У тебя одновременно сигналы и лонг и шорт на каждый тикер.
Попробуй типа так
Код: |
SetOption("MaxOpenLong", 1);
SetOption("MaxOpenShort", 1);
Buy = mtRandomA() >= 0.5;
Short = mtRandomA() < 0.5;
Sell = 0;
Cover = 0;
ApplyStop(stopTypeNBar, stopModeBars, 1);
SetPositionSize(1, 4);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Nergal
Зарегистрирован: 04.09.2012
Сообщения: 92
Откуда: ЕС
|
Нет, сайз я задал, просто не написал тут.
Да, сигналы одновременно на лонг и шорт на каждом баре и Амиброкер должен ранжировать их через PositionScore и шортнуть тикер с низшим рейтингом и лонгануть в высшим. И так каждый день.
Твой вариант я уже пробовал, но дело в том, чтопри таком раскладе могут быть дни, когда не будут ни лонгов ни шортов. Т.е. нужно чтобы buy = short = true. Походу придется через CBI делать. Штатными методами не выходит, ибо амиброкеру не нравиться когда одновременно условия на лонг и шорт стоят в true. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А ты тогда сделай шорт если PositionScore < 0 и лонг если > |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Nergal
Зарегистрирован: 04.09.2012
Сообщения: 92
Откуда: ЕС
|
Я так и сделал.
А чем отличается ApplyStop от Ref(short, -1)?
Результаты получаются разные, но логика вроде одна и та-же. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вроде не должно быть разницы. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|