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



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

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

Приветсвую!

1 месяц назад начал разбираться с АМИ. Много понял, узнал и смог протестировать благодаря этой программе и с помощью этого форума.

Сейчас пытаюсь вникнуть в тестирование размера позиции. Из хелпа никак не могу вкурить как это сделать.

Хочу:
1. научиться закрывать позиции по достижении определенного уровня
2. Наращивать размер позиции после достижении определенного уровня
3. Наблюдать на графике где закрыл часть позиции и сколько.

Нашел в хелпе такое чудо:

Код:
Buy = Cross( MA( C, 10 ), MA( C, 50 ) );
Sell = 0;

// the system will exit
// 50% of position if FIRST PROFIT TARGET stop is hit
// 50% of position is SECOND PROFIT TARGET stop is hit
// 100% of position if TRAILING STOP is hit

FirstProfitTarget = 10; // profit
SecondProfitTarget = 20; // in percent
TrailingStop = 10; // also in percent

priceatbuy=0;
highsincebuy = 0;

exit = 0;

for( i = 0; i < BarCount; i++ )
{
   if( priceatbuy == 0 AND Buy[ i ] )
     {
       priceatbuy = BuyPrice[ i ];
     }

   if( priceatbuy > 0 )
     {
       highsincebuy = Max( High[ i ], highsincebuy );

      if( exit == 0 AND
          High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * priceatbuy )
       {
         // first profit target hit - scale-out
         exit = 1;
         Buy[ i ] = sigScaleOut;
       }

      if( exit == 1 AND
          High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) * priceatbuy )
       {
         // second profit target hit - exit
         exit = 2;
         SellPrice[ i ] = Max( Open[ i ], ( 1 + SecondProfitTarget * 0.01 ) * priceatbuy );
       }

      if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * highsincebuy )
       {
         // trailing stop hit - exit
         exit = 3;     
         SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop * 0.01 ) * highsincebuy );
       }

      if( exit >= 2 )
       {
         Buy[ i ] = 0;
         Sell[ i ] = exit + 1; // mark appropriate exit code
         exit = 0;
         priceatbuy = 0; // reset price
         highsincebuy = 0;
       }
     }
}

SetPositionSize( 50, spsPercentOfEquity );
SetPositionSize( 50, spsPercentOfPosition * ( Buy == sigScaleOut ) ); // scale out 50% of position


Вопросы:
1. Что значит i = 0;
2. Что значит i < BarCount ?
3. Что значит - i++ ?
4. FirstProfitTarget = 10 - откуда АМИ знает. что это в процентах, а не в деньгах. И почему его еще потом надо умножать на 0.01 [High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * priceatbuy ) ]
5. Что значит [==] ? Пример [Buy == sigScaleOut ]?
6. Можно ли это все счастье нарисовать на графике, чтобы увидеть, где сработал стоп-профит?


Заранее благодарю за ответ. Извините, если загрузил.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Тут написан цикл, который при работе поочередно просматривает все бары с лева на право.
Цитата:
Что значит i = 0;

i это порядковый номер бара. i = 0 это самый первый бар
Цитата:
Что значит i < BarCount ?

Выполнять цикл до последнего бара. Последний бар имеет номер BarCount-1
Цитата:
Что значит - i++ ?

i = i+1;
Цитата:
FirstProfitTarget = 10 - откуда АМИ знает. что это в процентах, а не в деньгах. И почему его еще потом надо умножать на 0.01 [High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * priceatbuy ) ]

Ами не знает что это проценты. Именно поэтому надо умножать на 0.01. 0.01 это один процент 10 * 0.01 это 10 процентов
Цитата:
Что значит [==] ? Пример [Buy == sigScaleOut ]?

Это сравнение. [=] это присвоение, а [==] это сравнение
Цитата:
Можно ли это все счастье нарисовать на графике, чтобы увидеть, где сработал стоп-профит?

Можно.
PlotShape((Sell == 4)*ShapeDownArrow, .....); // выход по трейлингу.

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



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

СообщениеДобавлено: Пт Ноя 16, 2012 1:29 am Ответить с цитатой Вернуться к началу

Сорри. Забыл сказать спасибо. Smile.

Но лучше поздно чем никогда.
Посмотреть профиль Отправить личное сообщение
pylyp



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

СообщениеДобавлено: Сб Янв 19, 2013 10:24 pm Ответить с цитатой Вернуться к началу

В продолжении темы о размере позиции.

Почитал в свое время Райана Джонса о управлении размером позиции и хотел спросить можно ли правила управления размера капиталом забить в ами?

По его словам есть два стиля управления размером позиции:
1. На каждых 10 000 $ в кармане предназначаешь один контракт.

Таким образом таблица увеличения кол. контрактов выглядила бы так:

Наш капитал - 10 000 $ - 1 контракт
20 000 $ - 2 контракта и т.д.


2. Другой метод (по его словам - более надежная): после того, когда 1 контракт заработал для нас 1000 дол, мы имеем право увеличивать.

пример:
наш капитал- 10 000 $ - 1 контракт
10 000 +1 000=11 000 - 2 контркта
11 000 + 2 000=13 000 - 3 контракта
13 000 + 3 000=16 000 - 4 контракта и т.д.

Вопрос можно ли каким то образом записать это в виде формулы в тестере АМИ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Янв 20, 2013 12:52 am Ответить с цитатой Вернуться к началу

Цитата:

Наш капитал - 10 000 $ - 1 контракт
20 000 $ - 2 контракта и т.д.

Это запросто. Установи цену контракта 10000.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
pylyp



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

СообщениеДобавлено: Вс Янв 20, 2013 2:30 pm Ответить с цитатой Вернуться к началу

это понятно Smile.

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


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

СообщениеДобавлено: Вс Янв 20, 2013 6:04 pm Ответить с цитатой Вернуться к началу

Вопрос. Торгуется одна бумага или портфель?

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



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

СообщениеДобавлено: Пн Янв 21, 2013 12:02 am Ответить с цитатой Вернуться к началу

Одна бумага, чтоб не усложнять..... пока Laughing
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 21, 2013 12:10 am Ответить с цитатой Вернуться к началу

Если одна, то совсем не сложно. Надо использовать функцию Equity() для определения размера текущего капитала.
Сейчас подробно расписывать мне недосуг. Посмотри сам. Там ничего особо сложного. Будут вопросы - пиши.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen