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



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

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

Нашел на форуме такую формулу выхода в 2 этапа, но как же её прикрутить к системе? Може кто поможе? Как сделать чтобы контрактами торговал?
Код:

Buy =условие;
Sell = 0;
Short=условие;
Cover=0;

// система выходит
// 50% размера позиции на первой цели
// 50% размера позиции на второй цели
// 100% размера позиции по скользящей остановке

FirstProfitTarget = 10; // прибыль в процентах
SecondProfitTarget = 20; // прибыль в процентах
TrailingStop = 10; // стоп в процентах

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 )
       {
         // достигнута первая цель - сокращение позиции
         exit = 1;
         Buy[ i ] = sigScaleOut;
       }

      if( exit == 1 AND
          High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) * priceatbuy )
       {
         // достигнута вторая цель - выход
         exit = 2;
         SellPrice[ i ] = Max( Open[ i ], ( 1 + SecondProfitTarget * 0.01 ) * priceatbuy );
       }

      if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * highsincebuy )
       {
         // сработала скользящая остановка - выход
         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 );


Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);

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


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

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

Это обычный для Ами метод добавления/сокращения позиции. Годится только для теста.
А собственно что непонятно?

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



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

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

Мне бы хотелось на базе этого скрипта сделать тс сокращения поз. для реального рынка по фьючерсам, это возможно или нужен другой подход?

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


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

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

А готовая система уже есть?

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



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

СообщениеДобавлено: Вс Окт 17, 2010 7:06 pm Ответить с цитатой Вернуться к началу

Да есть ТС, такая например:
EMA1=EMA(Close,5);
D=Ref(abs(O-C),-1);
D1=O+D;
D2=O-D;

Buy=H>D1 AND H>EMA1;
BuyPrice=D1;
Sell = H>=D1+(D1-Ref(L,-1)); // первое условие
= L<Ref(L,-1);//второе условие

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


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

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

Это надо сделать немного модифицированного робота. Во вторник сделаю.
А Первое и второе условие обязательно идут в таком порядке?. Т.е сперва ждем только второе и сокращаем половину позы, а потом второе? Или в любой последовательности?

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



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

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

Sell = H>=D1+(D1-Ref(L,-1)); // первое условие
= L<Ref(L,-1);//второе условие

Да это очередность обязательна, т.к. второе условие трейлит позицию, а первое переводит в безубыток. Олег если можно объясни как можно много раз наращивать или сокращать позицию, доступно, или где можно почитать кроме справки, ок?

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


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

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

Кроме справки не знаю где.
Для робота и для теста это совершенно разные способы.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen