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



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

СообщениеДобавлено: Ср Окт 03, 2012 11:07 am Ответить с цитатой Вернуться к началу

В общем хочу определять position size на каждом трейде на основе equity.
Для этого использую Foreign("~~~EQUITY", "C").
Но когда использую ее в формуле position size, сделки не заключаются и лог выдает "Insufficient funds"..

Для примера протестил 2 варианта кода:
//1:
positionsSize = 200;
//Работает, сделки заключает

//2:
MyEquity = Foreign("~~~EQUITY", "C");
positionsSize = 200 * MyEquity / MyEquity;
//В логе пишет insufficient funds и сделки не заключает..

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Liker777



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

СообщениеДобавлено: Ср Окт 03, 2012 11:52 am Ответить с цитатой Вернуться к началу

Liker777 писал(а):
В общем хочу определять position size на каждом трейде на основе equity.
Для этого использую Foreign("~~~EQUITY", "C").
Но когда использую ее в формуле position size, сделки не заключаются и лог выдает "Insufficient funds"..

Для примера протестил 2 варианта кода:
//1:
positionsSize = 200;
//Работает, сделки заключает

//2:
MyEquity = Foreign("~~~EQUITY", "C");
positionsSize = 200 * MyEquity / MyEquity;
//В логе пишет insufficient funds и сделки не заключает..


Понял, дело не в Equity а в опреациях с массивами. То есть если ~~~Equity заменить на Close например, тоже не будет работать. Теперь осталось решить как переменной-немассиву присвоить значение массива ~~~ Equity

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

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

Используй функцию SetPositionSize()

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



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

СообщениеДобавлено: Ср Окт 03, 2012 2:33 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Используй функцию SetPositionSize()

И все-таки дело в ~~~Equity: сделал LastValue(C) - работает, а LastValue(~~~Equity) не работает если например
positionSize = LastValue(C)*ratio;
//или
positionSize = LastValue(Foreign("~~~Equity", C)*ratio;

Олег, так у меня стоит SetPositionSize(ProchayaHren * positionsSize, spsShares);
А positionSize определяется как выше..
Smile

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Liker777



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

СообщениеДобавлено: Ср Окт 03, 2012 4:46 pm Ответить с цитатой Вернуться к началу

Еще вопрос по теме - если вместо ~~~Equity использовать Equity(), как сделать чтобы Equity() показывала хоть что-то отличное от начального депозита ))

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Ср Окт 03, 2012 11:35 pm Ответить с цитатой Вернуться к началу

Вот смотри.
Берем систему с простейшими правилами размера позиции. Тестируем. В результате получаем в базе новый тикер ~~~Equity. Это эквити системы без управления сайзом.
Потом можно прогнать новую систему в которой прописать правила размера позиции в зависимости от знаения ~~~Equity.
Тут я точно не уверен в какой момент тестер переписывает тикер ~~~Equity, поэтому, для надежности лучше его предварительно скопировать в другой символ и брать значения оттуда.
Но все это ерунда по сравнению с главным вопросом. Нахрена?
Самое главное в системе это сколько она приносит прибыли в среднем в одной сделке на один лот. Все остальное от лукавого. Ну получишь ты охрененный процент в результате реинвестирования. Что это дает? Помечтаешь о яхте в средиземном море?
Давно, один умный человек написал. "Если результаты системы удается улучшить при помощи ММ - значит система не доделана."
Мы тогда всячески обмозговали этот тезис и ДА. Это совершенно верная точка зрения. Я так думаю...

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



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

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

000 писал(а):
Вот смотри.
Берем систему с простейшими правилами размера позиции. Тестируем. В результате получаем в базе новый тикер ~~~Equity. Это эквити системы без управления сайзом.
Потом можно прогнать новую систему в которой прописать правила размера позиции в зависимости от знаения ~~~Equity.
Тут я точно не уверен в какой момент тестер переписывает тикер ~~~Equity, поэтому, для надежности лучше его предварительно скопировать в другой символ и брать значения оттуда.
Но все это ерунда по сравнению с главным вопросом. Нахрена?
Самое главное в системе это сколько она приносит прибыли в среднем в одной сделке на один лот. Все остальное от лукавого. Ну получишь ты охрененный процент в результате реинвестирования. Что это дает? Помечтаешь о яхте в средиземном море?
Давно, один умный человек написал. "Если результаты системы удается улучшить при помощи ММ - значит система не доделана."
Мы тогда всячески обмозговали этот тезис и ДА. Это совершенно верная точка зрения. Я так думаю...


Согласен, что размер позиции саму систему и ее эффективность совершенно никак не изменит Smile И да, ты прав, что я хочу получить только примерные наглядные результаты, за 5 лет, что было бы, если бы размер позиции увеличивался в зависимости от equity )

А SetPositionSize по прежнему не работает, если в первый аргумент входит ~~~Equity ..

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Чт Окт 04, 2012 1:53 pm Ответить с цитатой Вернуться к началу

На досуге попробую сам. О результатах напишу.

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



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

СообщениеДобавлено: Чт Окт 04, 2012 2:33 pm Ответить с цитатой Вернуться к началу

000 писал(а):
На досуге попробую сам. О результатах напишу.

ok спасибо

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Liker777



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

СообщениеДобавлено: Чт Окт 04, 2012 3:50 pm Ответить с цитатой Вернуться к началу

А пока у меня статус такой: я явно чего-то не догоняю или не выставил какую нить настройку..

Пробую определить position size через ~~~Equity - он пишет not sufficient funds for trade. Причем SetPositionSize считывает любую переменную нормально кроме тех, которые завязаны на ~~~Equity.
Пробую через Equity() - эта функцию вообще у меня все время равно initial funds.
Через PositionSize не пробовал, но неохота заморачиваться, поскольку там в деньгах и надо синхронизировать между собой несколько тикеров для парного трейдинга и избежания дробной сделки.
Пробую Через SetPositionSize(myPercent, spsPercentOfEquity) - там сложно из дробного числа полученного от процента перевести в целое.

Для меня идеальным был бы случай когда SetPositionSize(myShare * ratioDependingOnEquity, spsPercentOfEquity) - там не надо заморачиваться ни с дробными значениями ни с синхронизацией размеров сделок между тикерами.

Щас единственный выход нашел в виде инвалидной коляски - буду записывать число ~~~Equity в текстовый файл.

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

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

Попробовал вот такой код
Код:

per1 = Optimize("MA1", 4, 2, 25, 1);
per2 = Optimize("MA2", 75, 20, 100, 5);

MA1 = MA(C, per1);
MA2 = MA(C, per2);

//SetPositionSize(1, 4);

Buy = Cross(MA1, MA2);
Sell = Cross(MA2, MA1);

MyEquity = Foreign("~~~EQUITY", "C");
SetPositionSize(1000*MyEquity/MyEquity, spsValue );

Прекрасно работает на сбере
Попробовал так
Код:
SetPositionSize(0.2*MyEquity, spsValue );

Тоже работает

А почему не использовать spsPercentOfEquity вместо всякого гемороя с "~~~EQUITY" ?????

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



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

СообщениеДобавлено: Вт Окт 09, 2012 9:20 am Ответить с цитатой Вернуться к началу

000 писал(а):
Попробовал вот такой код
Код:

per1 = Optimize("MA1", 4, 2, 25, 1);
per2 = Optimize("MA2", 75, 20, 100, 5);

MA1 = MA(C, per1);
MA2 = MA(C, per2);

//SetPositionSize(1, 4);

Buy = Cross(MA1, MA2);
Sell = Cross(MA2, MA1);

MyEquity = Foreign("~~~EQUITY", "C");
SetPositionSize(1000*MyEquity/MyEquity, spsValue );

Прекрасно работает на сбере
Попробовал так
Код:
SetPositionSize(0.2*MyEquity, spsValue );

Тоже работает

А почему не использовать spsPercentOfEquity вместо всякого гемороя с "~~~EQUITY" ?????


Ok щас попробую.
Так spsPercentOfEquity заключает дробные сделки )

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Liker777



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

СообщениеДобавлено: Вт Окт 09, 2012 9:46 am Ответить с цитатой Вернуться к началу

Liker777 писал(а):
000 писал(а):
Попробовал вот такой код
Код:

per1 = Optimize("MA1", 4, 2, 25, 1);
per2 = Optimize("MA2", 75, 20, 100, 5);

MA1 = MA(C, per1);
MA2 = MA(C, per2);

//SetPositionSize(1, 4);

Buy = Cross(MA1, MA2);
Sell = Cross(MA2, MA1);

MyEquity = Foreign("~~~EQUITY", "C");
SetPositionSize(1000*MyEquity/MyEquity, spsValue );

Прекрасно работает на сбере
Попробовал так
Код:
SetPositionSize(0.2*MyEquity, spsValue );

Тоже работает

А почему не использовать spsPercentOfEquity вместо всякого гемороя с "~~~EQUITY" ?????


Ok щас попробую.
Так spsPercentOfEquity заключает дробные сделки )

И у меня spsShares вместо spsValue опять же по дробной причине )

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Вт Окт 09, 2012 11:48 am Ответить с цитатой Вернуться к началу

Так в настройках тестера надо Min shares: поставить 1. Тогда дробных не будет и spsValue тут не при чем.

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



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

СообщениеДобавлено: Вт Окт 09, 2012 12:42 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Так в настройках тестера надо Min shares: поставить 1. Тогда дробных не будет и spsValue тут не при чем.

Ok, вот моя ситуация:
В коде
SetPositionSize(rate[i] * myPositionSize, spsPercentOfEquity);
В результатах дробные значения:
Image[/img]

_________________
www.oleg-churyumov.blogspot.com
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen