Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Вопрос по ММ Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
_ok



Зарегистрирован: 12.04.2010
Сообщения: 29

СообщениеДобавлено: Сб Июн 19, 2010 9:34 pm Ответить с цитатой Вернуться к началу

Я хочу протестировать систему на портфеле бумаг. И использую такой ММ. В каждой сделке я рискую не более 0,5% от депозита, т.е. столько я потеряю при срабатывании стопа. Стоп пусть будет равен 2 АТР.
Для одной бумаги я использовал такой код:
CapitalPart = Equity(1) * 0.005; // доля капитала
Size = CapitalPart / (2 * ATR(15)); //количество контрактов
PositionSize = C * Size; // объем открытой позиции исходя из возможного риска

Если протестить такой код в портфельном бэктестере, на портфеле, то, при открытии каждой сделки будет использовать индивидуальная эквити каждого инструмента, а не эквити всего портфеля.
Подскажите, как можно решить этот вопрос и рассчитывать риск от эквити всего портфеля. Попытался взять Foreign("~~~EQUITY", "C"), вообще лажа какая то получилась
Может это можно решить совсем другим способ, не тем, каким я пытаюсь сгондобить.
Embarassed Question

_________________
Олег. Будем знакомы.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Июн 19, 2010 9:51 pm Ответить с цитатой Вернуться к началу

Тут надо использовать Advanced Porfolio Backtester Interface см. хелпер.
Это не слишком просто....

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Nero Wolfe



Зарегистрирован: 17.03.2010
Сообщения: 174

СообщениеДобавлено: Пн Ноя 01, 2010 4:54 pm Ответить с цитатой Вернуться к началу

Подскажите, вот такая конструкция имеет право на жизнь?

Код:
Buy = ...;
Sell = ...;
e = Equity(1);
PositionSize = IIF(e < HIGHEST(e), 3, 6);
Buy = Buy;
Sell = Sell;


т.е. если система в ДД, то торгуем уменьшенным сайзом и так пока не выйдет из ДД.

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Ноя 01, 2010 5:33 pm Ответить с цитатой Вернуться к началу

Конечно.
Можешь даже после PositionSize = IIF(e < HIGHEST(e), 3, 6);
не переписывать
Buy = Buy;
Sell = Sell;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Nero Wolfe



Зарегистрирован: 17.03.2010
Сообщения: 174

СообщениеДобавлено: Вт Ноя 02, 2010 4:24 pm Ответить с цитатой Вернуться к началу

У меня почему то не работает просто PositionSize, работает вот так

Код:
e = Equity(1);
PosSize = IIf(e < Highest(e), 3, 6);
SetPositionSize( PosSize, spsShares );

но больше 3 контрактов поза не открывается...

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Ноя 02, 2010 6:43 pm Ответить с цитатой Вернуться к началу

Угу. Правильно будет так
Код:

PosSize = IIf(e < Ref(Highest(e), -1), 3, 6);


или

Код:

PosSize = IIf(e <= Highest(e), 3, 6);


И лучше использовать SetPositionSize()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Nero Wolfe



Зарегистрирован: 17.03.2010
Сообщения: 174

СообщениеДобавлено: Ср Ноя 03, 2010 1:13 pm Ответить с цитатой Вернуться к началу

И так тоже делал
Код:
e = Equity(1);
PosSize = IIf(e < Ref(Highest(e), -1), 3, 6);
SetPositionSize( PosSize, spsShares );

все равно система начинает торговать с 1 контракта (больше денег не хватает), а потом постепенно доходит до 3 и все, выше уже не поднимает кол-во контрактов, хотя денег вполне достаточно.

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Ноя 04, 2010 12:18 am Ответить с цитатой Вернуться к началу

Ааа. Ясн. Знаешь почему так получается? Во время сделки почти всегда эквити поднимается выше того значения которое будет у эквити в момент закрытия сделки. А когда сделка закрыта эквити не меняется. Таким макаром получается, что вход в сделку в тот момент когда эквити не меняется, а максимального значения она достигает в тот момент когда сделка уже открыта. Попробуй сделать вместо Ref(, -1) Ref(, -100)

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen