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


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

СообщениеДобавлено: Вт Мар 03, 2009 10:49 am Ответить с цитатой Вернуться к началу

Привет, парни

У кого-нить есть NRTR для ами?
Если есть - могете дать?
Посмотреть профиль Отправить личное сообщение
commenced
Советник


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

СообщениеДобавлено: Вт Мар 03, 2009 11:29 am Ответить с цитатой Вернуться к началу

ID писал(а):
Привет, парни

У кого-нить есть NRTR для ами?
Если есть - могете дать?


Есть вечерком скину

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


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

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

Первый

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


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

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

второй, брал скорее всего на пауке оба.

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


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

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

Для некоторых нужно, чтоб NRTR учитывал цены хай и лоу при пересечении реверса.
Выкладываю тута Smile
Если кто-нить найдет ошибку и напинает - буду благодарен
Удачи!
Посмотреть профиль Отправить личное сообщение
kosbar



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

СообщениеДобавлено: Чт Июн 25, 2009 11:04 pm Ответить с цитатой Вернуться к началу

Вот правильный NRTR (не WATR):

SetBarsRequired(100000,0);
GraphXSpace = 3;


// Параметры
k = Param("K", 3, 0, 50, 0.1) / 100;

Trend[0] = 1; // тренд вверх
Revers[0] = C[0] - C[0] * k;
PE[0] = C[0];

for(i = 1; i < BarCount; i++)
{
if(Trend[i-1] == 1) //Up Trend
{
if(H[i] > PE[i-1]) //Новый High
{
Trend[i] = 1;
PE[i] = H[i];
Revers[i] = H[i] - H[i]*k;
}
else
{
if(C[i] < Revers[i-1]) //Реверс
{
Trend[i] = -1;
PE[i] = L[i];
Revers[i] = L[i] + L[i]*k;
}
else //Нет нового high и реверса
{
Trend[i] = 1;
PE[i] = PE[i-1];
Revers[i] = Revers[i-1];
}
}
}
//======================================
else //Down Trend
{
if(L[i] < PE[i-1]) //Новый Low
{
Trend[i] = -1;
PE[i] = L[i];
Revers[i] = L[i] + L[i]*k;
}
else
{
if(C[i] > Revers[i-1]) //Реверс
{
Trend[i] = 1;
PE[i] = H[i];
Revers[i] = H[i] - H[i]*k;
}
else //Нет нового Low и реверса
{
Trend[i] = -1;
PE[i] = PE[i-1];
Revers[i] = Revers[i-1];
}
}
}
}


_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g {{VALUES}}", O, H, L, C, Revers ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Plot(Revers, "NRTR", IIf(Trend == 1, 27, 4), 4);

ЗЫ а то что вы тут пишите уродцы какие-то Wink
Посмотреть профиль Отправить личное сообщение ICQ Number
kosbar



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

СообщениеДобавлено: Ср Июл 01, 2009 11:18 pm Ответить с цитатой Вернуться к началу

Блин, это тоже не правильный NRTR... надо редактировать. Кароч, в этом индюке важно, чтобы он не менялся, когда цена начинает флэтовать, то есть автоматом выстраивается в линию поддержки/соправтивления цены.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Ср Июл 01, 2009 11:31 pm Ответить с цитатой Вернуться к началу

Хм. Проверил. Все отлично.
Код:

SetBarsRequired(500000,0);
GraphXSpace = 3;


// Параметры
k = Param("K", 1, 0, 10, 0.1) / 100;

Trend[0] = 1; // тренд вверх
Revers[0] = C[0] - C[0] * k;
PE[0] = C[0];

for(i = 1; i < BarCount; i++)
{
  if(Trend[i-1] == 1) { //Up Trend 
    if(H[i] > PE[i-1]) { //Новый High
      Trend[i] = 1;
      PE[i] = H[i];
      Revers[i] = H[i] - H[i]*k;
    }
    else {
      if(C[i] < Revers[i-1]) { //Реверс
        Trend[i] = -1;
        PE[i] = L[i];
        Revers[i] = L[i] + L[i]*k;
      }
      else { //Нет нового high и реверса
        Trend[i] = 1;
        PE[i] = PE[i-1];
        Revers[i] = Revers[i-1];
      }
    }
  }
//======================================
  else { //Down Trend
    if(L[i] < PE[i-1]) { //Новый Low
      Trend[i] = -1;
      PE[i] = L[i];
      Revers[i] = L[i] + L[i]*k;
    }
    else {
      if(C[i] > Revers[i-1]) { //Реверс
        Trend[i] = 1;
        PE[i] = H[i];
        Revers[i] = H[i] - H[i]*k;
      }
      else { //Нет нового Low и реверса
        Trend[i] = -1;
        PE[i] = PE[i-1];
        Revers[i] = Revers[i-1];
      }
    }
  }
}


_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g {{VALUES}}", O, H, L, C, Revers ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Plot(Revers, "NRTR", IIf(Trend == 1, 27, 4), 4);

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



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

СообщениеДобавлено: Чт Июл 02, 2009 6:28 pm Ответить с цитатой Вернуться к началу

Да не, сам по себе он правилен, просто он не оригинальный - выстраивается по High и Low вместо Close.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Чт Июл 02, 2009 7:58 pm Ответить с цитатой Вернуться к началу

Действительно. Сейчс глянул оригинал от Конкопа. Там используются цены закрытия. Если надо могу поправить.

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



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

СообщениеДобавлено: Чт Июл 02, 2009 11:01 pm Ответить с цитатой Вернуться к началу

вообще сложный для непрограммеров индюк, сам много голову над ним ломал)))
вот оригинал, написал за минуты, оказался даже короче:

Код:

SetBarsRequired(100000,0);
GraphXSpace = 3;
k = Param("koef",0.1,0.005,0.5,0.005);
Trend[0] = 1;
Revers[0] = C[0]*(1-k);
Level[0] = C[0];

for(i = 1; i < BarCount; i++)

   if(Trend[i-1] == 1)
      {
         if (C[i] < revers[i-1])
            {
               trend[i] = -1;
               Level[i] = C[i];
               revers[i] = Level[i]*(1+k);
            }
         else
            {
               if (C[i] > Level[i-1])
                  {
                     trend[i] = 1;
                     Level[i] = C[i];
                     revers[i] = Level[i]*(1-k);
                  }
               else
                  {
                     trend[i] = 1;
                     Level[i] = Level[i-1];
                     revers[i] = revers[i-1];
                  }
            }
         }
   else
      {
         if (C[i] > revers[i-1])
            {
               trend[i] = 1;
               Level[i] = C[i];
               revers[i] = C[i]*(1-k);
            }
         else
            {
               if (C[i] < Level[i-1])
                  {
                     trend[i] = -1;
                     Level[i] = C[i];
                     revers[i] = Level[i]*(1+k);
                  }
               else
                  {
                     trend[i] = -1;
                     Level[i] = Level[i-1];
                     revers[i] = revers[i-1];
                  }
            }
      }
}
Plot(revers, "NRTR", IIf(Trend == 1, 27, 4), 4);
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

СообщениеДобавлено: Чт Июл 02, 2009 11:16 pm Ответить с цитатой Вернуться к началу

Но самый лучший получился у Томаша.
Код:

SetBarsRequired(sbrAll);

// get start date
Start = Cross( DateNum(), ParamDate("Start Date", "2005-10-30" ) );
Started = Flip( Start, 0 );

StopMode = ParamToggle("Stop Mode", "Fixed|Chandelier" );
StopLevel = Param("Fixed perc %", 14, 0.1, 50, 0.1)/100;
StopATRFactor = Param("Chandelier ATR multiple", 4, 0.5, 10, 0.1 );
StopATRPeriod = Param("Chandelier ATR period", 14, 3, 50 );

// calculate support and resistance levels
if( StopMode == 0 ) // fixed percent trailing stop
{
 sup = C * ( 1 - stoplevel );
 res = C * ( 1 + stoplevel );
}
else // Chandelier ATR-based stop
{
 sup = C - StopATRFactor * ATR( StopATRPeriod );
 res = C + StopATRFactor * ATR( StopATRPeriod );
}

// calculate trailing stop line
trailARRAY = Null;
trailstop = 0;
for( i = 1; i < BarCount; i++ )
{
 if( Started[ i ] == 0 ) continue;

 if( C[ i ] > trailstop AND C[ i - 1 ] > trailstop )
   trailstop = Max( trailstop, sup[ i ] );
 else
 if( C[ i ] < trailstop AND C[ i - 1 ] < trailstop )
   trailstop = Min( trailstop, res[ i ] );
 else
   trailstop = IIf( C[ i ] > trailstop, sup[ i ], res[ i ] );

 trailARRAY[ i ] = trailstop;
}

// generate buy/sell signals based on crossover with trail stop line
Buy = Start OR Cross( C, trailArray );
Sell = Cross( trailArray, C );

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

Plot( Close,"Price",colorBlack,styleBar);
Plot( trailARRAY,"trailing stop level", colorRed );

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



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

СообщениеДобавлено: Чт Июл 02, 2009 11:28 pm Ответить с цитатой Вернуться к началу

красиво)))))) и просто, потому, наверное, и сложно...
Посмотреть профиль Отправить личное сообщение ICQ Number
Torino



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

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

000 писал(а):
Но самый лучший получился у Томаша.
Код:

SetBarsRequired(sbrAll);

----

Plot( Close,"Price",colorBlack,styleBar);
Plot( trailARRAY,"trailing stop level", colorRed );


У меня этот код не работает.
Значение trailing stop level при любых параметрах EMPTY.
Почему это может быть?

_________________
Андрей
Your my your...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

В настройках Start Date должна быть не меньше, чем дата начала истории на графике

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen