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



Зарегистрирован: 21.11.2008
Сообщения: 67
Откуда: Рязань

СообщениеДобавлено: Пт Ноя 21, 2008 2:53 pm Ответить с цитатой Вернуться к началу

хочу реализовать такой стоп
чтобы от максимального клоуз после входа в лонг от него отсчитывалось величина 2ATR и если клоуз пересекает уровень, срабатывал стоп
в случае с шортом наоборот
но что то выходы осуществляются некорректно. в чем дело, не могу понять
Код:

RoundLotSize = 1;
MarginDeposit = 1;
PositionSize = 1;

Cond1=EMA(Close,100)>EMA(Close,200);
Cond2=EMA(Close,100)<EMA(Close,200);

Cond3=ADX(18)> Ref(ADX(18),-1);
Cond4=PDI(18)>MDI(18);
Cond5=PDI(18)<MDI(18);

Buy=Cond1 AND Cond3 AND Cond4;
stoplong=(HHV(Close,BarsSince(Buy))-2*ATR(20));

Sell=Cross(stoplong,Close);

Short=Cond2 AND Cond3 AND Cond5;
stopshort=(LLV(Close,BarsSince(Short))+2*ATR(20));

Cover=Cross(Close,stopshort);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell, Buy);

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

_________________
per aspera ad astra...
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пт Ноя 21, 2008 10:01 pm Ответить с цитатой Вернуться к началу

jarikk писал(а):
хочу реализовать такой стоп
чтобы от максимального клоуз после входа в лонг от него отсчитывалось величина 2ATR и если клоуз пересекает уровень, срабатывал стоп
в случае с шортом наоборот
но что то выходы осуществляются некорректно. в чем дело, не могу понять
Код:

RoundLotSize = 1;
MarginDeposit = 1;
PositionSize = 1;

Cond1=EMA(Close,100)>EMA(Close,200);
Cond2=EMA(Close,100)<EMA(Close,200);

Cond3=ADX(18)> Ref(ADX(18),-1);
Cond4=PDI(18)>MDI(18);
Cond5=PDI(18)<MDI(18);

Buy=Cond1 AND Cond3 AND Cond4;
stoplong=(HHV(Close,BarsSince(Buy))-2*ATR(20));

Sell=Cross(stoplong,Close);

Short=Cond2 AND Cond3 AND Cond5;
stopshort=(LLV(Close,BarsSince(Short))+2*ATR(20));

Cover=Cross(Close,stopshort);
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell, Buy);

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


Ну есть одна идея, но не уверен что стоит ее использовать, т.к. на росте или падении будеш 1 раз входить в соответствующую позу. (да проблема в том, что BarsSince() берет последнюю свечку на которой собюдалось условие Buy, т.к. фильтр у тебя стоит после стопа) попробуй так buy = .... Short = ....... Buy = ExRem(Buy,Short);
Short = ExRem(Short, Buy); потом уже stoplong=(HHV(l,BarsSince(Buy))-2*ATR(20));

Sell=Cross(stoplong,l);

stopshort=(LLV(h,BarsSince(Short))+2*ATR(20));

Cover=Cross(h,stopshort);
Sell = ExRem(Sell,Cover);
Cover = ExRem(Cover, Sell);
Чтото типа этого.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Romoti



Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург

СообщениеДобавлено: Вс Ноя 23, 2008 11:26 am Ответить с цитатой Вернуться к началу

Как то так, хотя через циклы будет лучше.
Код:

_SECTION_BEGIN("Выходы от CLOSE ");
// от максимального клоуз после входа в лонг отсчитывается величина 2ATR 
// и если клоуз пересекает уровень, срабатывает стоп в случае с шортом наоборот

RoundLotSize = 1;
MarginDeposit = 1;
PositionSize = 1;

PerFast = Optimize( "PerFast " , 10,  10,  100, 10 );
PerSlow = Optimize( "PerSlow " , 20,  20,  200, 10 );
PerADX  = Optimize( "PerADX " , 9,   5,  30, 2 );

Cond1 = EMA(C, PerFast ) > EMA(C, PerSlow);
Cond2 = EMA(C, PerFast ) < EMA(C, PerSlow);
Cond3 = ADX (PerADX) > Ref(ADX(PerADX), -1);
Cond4 = PDI(PerADX) > MDI(PerADX);
Cond5 = PDI(PerADX) < MDI(PerADX);

BuyPrice   =C;
SellPrice  =C;
ShortPrice =C;
CoverPrice =C;

Buy=Cond1 AND Cond3 AND Cond4;
Buymasiv = Flip(Ref(Buy,-1),Cond2 OR Cond5);
BuyStart = Buy AND Ref(Buy,-1)==0 AND Ref(Buymasiv,-1)==0;
stoplong=(HHV(Close,BarsSince(BuyStart ))-2*ATR(20));
Sell=Cross(stoplong,Close);

Short=Cond2 AND Cond3 AND Cond5;
Shortmasiv = Flip(Ref(Short,-1),Cond1 OR Cond4);
ShortStart = Short AND Ref(Short,-1)==0 AND Ref(Shortmasiv,-1)==0;
stopshort=(LLV(Close,BarsSince(Short))+2*ATR(20));
Short= ExRem(Short,Cross(Close,stopshort));
Cover=Cross(Close,stopshort);


Equity(1);
PlotShapes(IIf(BuyStart , shapeHollowStar ,shapeNone),colorLime,0,H,22); //
PlotShapes(IIf(ShortStart ,shapeHollowStar ,shapeNone),colorOrange,0,L,-22);
Plot(C, "", colorBlack , styleBar+ styleThick);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-10);         
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-25);       
PlotShapes(IIf(Short, shapeHollowDownArrow,shapeNone),colorRed,0,H,-10);
PlotShapes(IIf(Cover,shapeHollowUpArrow,shapeNone),colorGreen,0,L,-25);

//Plot( ADX(18), "ADX(18)", colorTan , styleLeftAxisScale);
//Plot( PDI(18), "PDI(18)", colorRed , styleLeftAxisScale);
//Plot( MDI(18), "MDI(18)", colorBlue , styleLeftAxisScale);
Plot( IIf(Ref(Flip(Buy,Sell),-1),stoplong,Null) , "stoplong", colorOrange,styleDots+styleNoTitle+styleNoRescale+styleStaircase);
Plot( IIf(Ref(Flip(Short,Cover),-1),stopshort,Null) , "stopshort", colorOrange,styleDots+styleNoTitle+styleNoRescale+styleStaircase);
_SECTION_END();
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Ноя 23, 2008 11:44 pm Ответить с цитатой Вернуться к началу

C циклами будет примерно так
Код:

// от максимального клоуз после входа в лонг отсчитывается величина 2ATR 
// и если клоуз пересекает уровень, срабатывает стоп в случае с шортом наоборот

RoundLotSize = 1;
MarginDeposit = 1;
PositionSize = 1;

PerFast = Optimize( "PerFast " , 10,  10,  100, 10 );
PerSlow = Optimize( "PerSlow " , 20,  20,  200, 10 );
PerADX  = Optimize( "PerADX " , 9,   5,  30, 2 );

Cond1 = EMA(C, PerFast ) > EMA(C, PerSlow);
Cond2 = EMA(C, PerFast ) < EMA(C, PerSlow);
Cond3 = ADX (PerADX) > Ref(ADX(PerADX), -1);
Cond4 = PDI(PerADX) > MDI(PerADX);
Cond5 = PDI(PerADX) < MDI(PerADX);

pos[PerADX-1]= 0;
stopLevel = 2*ATR(20);

BuyPrice   =C;
SellPrice  =C;
ShortPrice =C;
CoverPrice =C;

Buy=Cond1 AND Cond3 AND Cond4;
Sell = 0;
Short=Cond2 AND Cond3 AND Cond5;
Cover = 0;

for(i = PerADX; i<BarCount; i ++)
{
// определяем позицию
   if(Buy[i-1])
   {
      pos[i] = 1;
   }
   else if(Short[i-1])
   {
      pos[i] = -1;
   }
   else
   {
      pos[i] = pos[i-1];
   }

// уровень стопа
   if(pos[i] == 1)
   {
      Buy[i] = 0;
      stop[i] = C[i-1] - stopLevel[i-1];
      if(stop[i] < stop[i-1])
      {
         stop[i] = stop[i-1];
      }
   }
   else if(pos[i] == -1)
   {
      Short[i] = 0;
      stop[i] = C[i-1] + stopLevel[i-1];
      if(stop[i] > stop[i-1])
      {
         stop[i] = stop[i-1];
      }
   }
   else
   {
      stop[i] = Null;
   }

// активизация стопа
   if(pos[i] == 1)
   {
      if(C[i] < stop[i])
      {
         Sell[i] = 1;
         pos = 0;
      }
   }
   else if(pos[i] == -1)
   {
      if(C[i] > stop[i])
      {
         Cover[i] = 1;
         pos = 0;
      }
   }
}

 
Plot(C, "", colorBlack , styleCandle);
Plot(stop,"", colorRed);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-10);         
PlotShapes(IIf(Short, shapeHollowDownArrow,shapeNone),colorRed,0,H,-10);

Хотя возможно я и накосячил. Картинка похожа...

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



Зарегистрирован: 21.11.2008
Сообщения: 67
Откуда: Рязань

СообщениеДобавлено: Пн Ноя 24, 2008 11:28 am Ответить с цитатой Вернуться к началу

да вроде нормально работает, спасибо
а встроенный стоп может быть реализован совместно со стратегией выхода, например, изначальный стоп-лосс в размере 1ATR, а стратегия выхода по пробитию средней?

что то типа того
Код:

sell=Сlose<EMA(Сlose,10);
ApplyStop=(0,2,ATR(20),0,0);

_________________
per aspera ad astra...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Цитата:

а встроенный стоп может быть реализован совместно со стратегией выхода, например, изначальный стоп-лосс в размере 1ATR, а стратегия выхода по пробитию средней?

Запросто. Более того. Можно писать несколько разных ApplyStop() и все будут работать.

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



Зарегистрирован: 21.11.2008
Сообщения: 67
Откуда: Рязань

СообщениеДобавлено: Пн Ноя 24, 2008 2:17 pm Ответить с цитатой Вернуться к началу

А вот такой стоп как прописать?
К примеру, есть начальный стоп на уровне минус 1ATR от цены покупки. Если цена после покупки прошла вверх 1ATR, тогда стоп-лосс передвигается на уровень покупки. и выход будет осуществляться в дальнейшем либо по этому стопу, либо по стратегии выхода.

_________________
per aspera ad astra...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 24, 2008 2:50 pm Ответить с цитатой Вернуться к началу

Раз есть условие
Цитата:

Если цена после покупки прошла вверх 1ATR

Значит лучше всего опять через циклы.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen