Автор |
Сообщение |
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
В общем хочу определять 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
|
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
|
Используй функцию SetPositionSize() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
000 писал(а): |
Используй функцию SetPositionSize() |
И все-таки дело в ~~~Equity: сделал LastValue(C) - работает, а LastValue(~~~Equity) не работает если например
positionSize = LastValue(C)*ratio;
//или
positionSize = LastValue(Foreign("~~~Equity", C)*ratio;
Олег, так у меня стоит SetPositionSize(ProchayaHren * positionsSize, spsShares);
А positionSize определяется как выше..
|
_________________ www.oleg-churyumov.blogspot.com |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
Еще вопрос по теме - если вместо ~~~Equity использовать Equity(), как сделать чтобы Equity() показывала хоть что-то отличное от начального депозита )) |
_________________ www.oleg-churyumov.blogspot.com |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот смотри.
Берем систему с простейшими правилами размера позиции. Тестируем. В результате получаем в базе новый тикер ~~~Equity. Это эквити системы без управления сайзом.
Потом можно прогнать новую систему в которой прописать правила размера позиции в зависимости от знаения ~~~Equity.
Тут я точно не уверен в какой момент тестер переписывает тикер ~~~Equity, поэтому, для надежности лучше его предварительно скопировать в другой символ и брать значения оттуда.
Но все это ерунда по сравнению с главным вопросом. Нахрена?
Самое главное в системе это сколько она приносит прибыли в среднем в одной сделке на один лот. Все остальное от лукавого. Ну получишь ты охрененный процент в результате реинвестирования. Что это дает? Помечтаешь о яхте в средиземном море?
Давно, один умный человек написал. "Если результаты системы удается улучшить при помощи ММ - значит система не доделана."
Мы тогда всячески обмозговали этот тезис и ДА. Это совершенно верная точка зрения. Я так думаю... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
000 писал(а): |
Вот смотри.
Берем систему с простейшими правилами размера позиции. Тестируем. В результате получаем в базе новый тикер ~~~Equity. Это эквити системы без управления сайзом.
Потом можно прогнать новую систему в которой прописать правила размера позиции в зависимости от знаения ~~~Equity.
Тут я точно не уверен в какой момент тестер переписывает тикер ~~~Equity, поэтому, для надежности лучше его предварительно скопировать в другой символ и брать значения оттуда.
Но все это ерунда по сравнению с главным вопросом. Нахрена?
Самое главное в системе это сколько она приносит прибыли в среднем в одной сделке на один лот. Все остальное от лукавого. Ну получишь ты охрененный процент в результате реинвестирования. Что это дает? Помечтаешь о яхте в средиземном море?
Давно, один умный человек написал. "Если результаты системы удается улучшить при помощи ММ - значит система не доделана."
Мы тогда всячески обмозговали этот тезис и ДА. Это совершенно верная точка зрения. Я так думаю... |
Согласен, что размер позиции саму систему и ее эффективность совершенно никак не изменит И да, ты прав, что я хочу получить только примерные наглядные результаты, за 5 лет, что было бы, если бы размер позиции увеличивался в зависимости от equity )
А SetPositionSize по прежнему не работает, если в первый аргумент входит ~~~Equity .. |
_________________ www.oleg-churyumov.blogspot.com |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
На досуге попробую сам. О результатах напишу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
А пока у меня статус такой: я явно чего-то не догоняю или не выставил какую нить настройку..
Пробую определить 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
|
Попробовал вот такой код
Код: |
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
|
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
|
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
|
Так в настройках тестера надо Min shares: поставить 1. Тогда дробных не будет и spsValue тут не при чем. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Liker777
Зарегистрирован: 28.06.2012
Сообщения: 120
|
000 писал(а): |
Так в настройках тестера надо Min shares: поставить 1. Тогда дробных не будет и spsValue тут не при чем. |
Ok, вот моя ситуация:
В коде
SetPositionSize(rate[i] * myPositionSize, spsPercentOfEquity);
В результатах дробные значения:
[/img] |
_________________ www.oleg-churyumov.blogspot.com |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|