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



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

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

Есть в Ами хорошая функция - ApplyStop(stopTypeTrailing, ...

Включаем ее на 300 пунктов, входим в лонг и у нас появляется стоп в 300 пунктах ниже входа. А когда цена идет вверх - стоп постепенно подтягивается вверх за ней. До срабатывания, когда он командует "Sell" - закрыть лонг.

Но этой функцией, как я понял, можно подтягивать цену закрытия ( в данном случае - цену продажи) - только снизу входа. А мне надо еще и сверху. Скользящий тэйк-профит.

Как сделать такой же подтягивающийся Take Profit ? Причем подтягивающийся ближе к цене, если цена уходит от него. Ну и пусть, что такое подтягивание уменьшит профит при срабатывании - главное выйти.

Должно быть так. Вошли в лонг, и включен некий (несуществующий пока) Stop-TakeProfit-Trailing, стартующий в 300 пунктах выше цены входа. Если цена сразу идет вверх навстречу этому Тэйку и дотрагивается до него - он срабатывает, закрывая позицию с профитом в 300 пунктов. Хорошо.

А вот цена не идет вверх, а падает на новый Лоу, ниже входа в позицию (до стоп-лосса не достает). Скользящий тэйк-профит должен переместится вниз. Стать на меньшую цену. В 300 пунктах выше нового Лоу. Если цена развернется и поднимется к стопу - он сработает, закрыв Лонг с неким профитом (а может и с убытком). Но закроет. И вверх подниматься не будет.

Вобщем, нужен скользящий стоп-приказ на продажу -SellStop-Trailing. Как закодировать? Пока без наворотов типа Параболика, или АТР... Подскажите пожалуйста, или дайте ссылку где почитать.

Заранее спасибо.


P.S. В СмартТрейде такие стопы встроены и они включаются независимо - есть у тебя лонг или шорт. Ими даже можно входить в позицию, а не выходить.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Дек 03, 2009 9:52 pm Ответить с цитатой Вернуться к началу

По простому не получится. В принципе уровень профита в ApplyStop(stopTypeProfit, ..) можно менять если установить опцию Volatile = TRUE.
Соответственно можно сделать типа следящий. Но не просто...

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



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

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

[quote="000"]По простому не получится.
Соответственно можно сделать типа следящий. [/quote]

Беглый поиск в библиотеке AFL по словам TRAILING PROFIT STOP нашел некую формулу. Она большая, я подсократил все что касается шортов и статистики... прошу прокоментировать оставшийся код.

У меня он что-то рисует, но трейлинг рисует НИЖЕ входа... А мне надо выше... В целом, как оцениваете идею автора по способу расчета скользящего тэйка? (И как ее можно модифицировать что бы тэйк для лонга ставился сверху и потом опускался?)

------------------------------
укороченный вариант. целиком см на
http://www.amibroker.com/library/detail.php?id=660
---------

/// BASIC STRATEGY AND PLOTS ///////

Buy = Cross( Close, MA(Close, 35) );
Sel l= LinRegSlope( MA(Close,18), 2 )<0;

// I am sceptical to if the original applystop functions (trailing etc) reallyworks!?
//I have therefor coded my own stop functions below.

//////// STOP LOSS PARAMETERS /////////////
e = Equity(1,0); //* Highly Important!!. "Removes all extra signals, evaluates stops AND writes BACK signals to Sell/Cover arrays". As it should be!!*/

Lprofit = e - ValueWhen( Buy, e);

////// TRAILING PROFIT STOP/////////

x3=Param("DECLINE OF PROFIT IN POINTS ",300 ,0 ,500 ,1);


////////FOR LONG POSITION PERCENT////

XXL=HighestSince( Buy==1, Lprofit, 1 ); //returns the highest profit since last Buy Signal. the basis for the trailing calculation.
ZL= ExRem( Cross(XXL, Lprofit), Buy==1); // Just first signal counts. highly important!!!!!!!! Also calculates critical Sell levels
Sell= IIf(ZL==1 AND TL==True, 4, 0); // return a sell signal=4 if z1=1 and TL=True (yes)

PlotShapes( Buy* shapeUpArrow , colorGreen, 0);
PlotShapes( Sell* shapeDigit1 , colorRed, 0);

Plot(XXL, "L TRAILING LEVEL",colorGreen,styleLeftAxisScale, styleLine);
Plot(Lprofit,"L PROFIT",colorYellow,styleLeftAxisScale, styleLine) ;
Посмотреть профиль Отправить личное сообщение
VladimirN



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

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

Еще сильнее порезал найденный код, рисовать он кое-что начал, и даже дает команду на выход, но я обнаружил две странности.

Применяю код как индикатор (не в бэкстестере), и...

1 - не могу там добиться выполнения нормальных ApplyStops - они просто не срабатывают. Это нормально? Как их включить?

2 - Lprofit, который вычисляется через
e = Equity(1,0); Lprofit = e - ValueWhen( Buy, e);
Начинает вычислятся только со второго входа в Лонг. А после первого входа его просто нет... Как победить?


_SECTION_BEGIN("test");
//************/

SetPositionSize(1, spsShares );
x3=Param("DECLINE OF PROFIT IN POINTS ",200 ,0 ,500 ,1);
WriteVal(x3);

ApplyStop(stopTypeLoss, stopModePoint, 100, True )
//вот этот стоп (и другого типа) просто не срабатывает...

Buy = Cross( Close, MA(Close, 35) );
Sell = Cross( MA(Close, 35), Close );

e = Equity(1,0);
Lprofit = e - ValueWhen( Buy, e);

XXL=HighestSince( Buy==1, Lprofit, 1 )-x3; //returns the highest profit since last Buy Signal. the basis for the trailing calculation.

ZL= ExRem( Cross(XXL, Lprofit), Buy==1); // Just first signal counts. highly important!!!!!!!! Also calculates critical Sell levels
Sell= IIf(ZL==1, 4, 0); // return a sell signal=4 if z1=1

WriteVal(e);
WriteVal(XXL);
WriteVal(Lprofit);
Plot(XXL,"XXL",colorPink,styleLeftAxisScale, styleLine) ;
Plot(Lprofit,"L PROFIT",colorYellow,styleLeftAxisScale, styleLine) ;
PlotShapes( Buy* shapeUpArrow , colorGreen, 0);

sellshape = IIf( Sell == 1, shapeSquare + shapePositionAbove,
IIf( Sell == 2, shapeSquare + shapePositionAbove,
IIf( Sell == 3, shapeSquare + shapePositionAbove,
IIf( Sell == 4, shapeStar + shapePositionAbove,
IIf( Sell == 5, shapeSquare + shapePositionAbove,0 )))));
PlotShapes( SellShape, colorYellow, 0, C);

_SECTION_END();
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

VladimirN писал(а):

1 - не могу там добиться выполнения нормальных ApplyStops - они просто не срабатывают. Это нормально? Как их включить?

А какая бумага тестируется?
Дело в том, что иногда ошибочно понимают stopModePoint как стоп именно в пунктах. На самом деле это просто в ценах. Т.е. если пункт 0,001, то stopModePoint = 100 это не 0,01, а именно 100.
VladimirN писал(а):

2 - Lprofit, который вычисляется через
e = Equity(1,0); Lprofit = e - ValueWhen( Buy, e);
Начинает вычислятся только со второго входа в Лонг. А после первого входа его просто нет... Как победить?

Хм. Чесно говоря не вижу причин почему не работает. По коду вроде все грамотно.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen