Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1270

Добавлено: evge » 09 мар 2016, 21:41

Тема: NRTRm (Nick Rypock Trailing Reverse Mod) – процент отклонения от экстремума с доп. смещением

Текст сообщения:

NRTRm – индикатор, который при росте показывает заданный процент отклонения вниз от достигнутого максимума, а при падении показывает заданный процент отклонения вверх от достигнутого минимума.

Модификация: Дополнительно указывается смещение проверки пробоя.
Задаются серии Up, Down без вывода на график (только возможность показать последнее значение), для возможности использования их в стратегиях.
Восходящие и нисходящие тенденции рисуются разным цветом (цвет изменить нельзя, только для Up, Down последнее значение на поле цены).

Параметры:
PST - % отклонения от экстремума
Shift - % доп. смещения для определения смены тенденции

Примеры работы:

NRTRm.zip
(1.36 КБ) 4909 скачиваний


Исходный текст индикатора:

Код: Выделить всё

function Initialize()
{
// Обязательные параметры:
  IndicatorName = "NRTRm"; 
  PriceStudy = true;        // Рисовать в области цены (true – да, false – нет)
  AddInput("Input", Inputs.Price);     // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
  AddSeries("Up", DrawAs.Custom, Color.Blue);
  AddSeries("Down", DrawAs.Custom, Color.Magenta);
  AddSeries("NRTR", DrawAs.Custom, Color.Transparent);   
  AddParameter("PST", 2);   // Параметр % отклонения от экстремума
  AddParameter("Shift", 1); // Смена тенденции % от текущей цены
  AddGlobalVariable("Current", Types.Boolean, true); //true - рост, false - падение
}

function Evaluate()
{
// Модификация NRTR, evge 09.03.2016, http://alfadirect4.ru

// AlfaDirect. 2014. OX
// NRTR. Реализация по коду MS
var C = Input[0];
var TR = C * PST / 100;
var S = C * Shift / 100;

 if (CurrentIndex < 1)
 {
      NRTR = Input[0];
     Current = true;
  }
 else
 {
   if (C == NRTR[-1] )
          NRTR = NRTR[-1] ;
  else
     if (Input[-1] < NRTR[-1] && C < NRTR[-1] && !Current) {
          NRTR = Math.Min( NRTR[-1], C + TR) ;
         }
     else
        if (Input[-1] > NRTR[-1] && C > NRTR[-1] && Current) {
              NRTR = Math.Max( NRTR[-1], C - TR);
         }
        else {
            if ((C - S) > NRTR[-1] && !Current) {
               NRTR = C - TR; Current = true; } else NRTR = NRTR[-1];
            if ((C + S) < NRTR[-1] && Current) {
               NRTR = C + TR; Current = false; } else NRTR = NRTR[-1];             
         }
  }

if (Current)
   { Up[0] = NRTR[0]; NRTR.DrawLine(Color.Blue, Line.Solid, 2); }
   else
   { Down[0] = NRTR[0]; NRTR.DrawLine(Color.Magenta, Line.Solid, 2);}

}


Скачать исходный текст:

NRTRm-01.png
Индикатор NRTRm
NRTRm-01.png (27.67 КБ) 68387 просмотров
Вложения
Канал Рег плюс Зигзаг.doc
(429 КБ) 1 скачивание