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

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

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

Добавлено: evge » 05 июн 2019, 13:34

Тема: ASCTrend - трендовый индикатор на основе WPR (Larry Williams' Percent Range)

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

Индикатор ASCTrend является представителем вероятностных трендовых индикаторов, предназначенным для определения точки входа в рынок. Основан на классическом WPR.

Входящие параметры

Risk - В основе индикатора лежит осциллятор WPR, данный параметр одновременно влияет на его период и уровни. Чем больше Risk, тем меньше сигналов. Максимум 32.

Примеры

ASCTrend.zip
(27.29 КБ) 1398 скачиваний


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

function Initialize()
{
   IndicatorName = "ASCTrend";
   PriceStudy = true;
   AddInput("Input", Inputs.Candle);
    AddSeries("Sell", DrawAs.Custom, Color.Red);
    AddSeries("Buy", DrawAs.Custom, Color.Green);
    AddSeries("wpr1", DrawAs.Line, Color.Black, false);
   AddSeries("wpr2", DrawAs.Line, Color.Black, false);
    AddParameter("Risk", 25);
   AddGlobalVariable("Whait", Types.Int, 0);
   AddGlobalVariable("RangeSum", Types.Double, 0);
}

function Evaluate()
{

// evge 05.06.2019 https://alfadirect4.ru

var I = Input;
int defaultPeriod = 3 + Risk * 2;
int UpperLevel = 67 + Risk;
int LowerLevel = 33 - Risk;

int RangePeriod = 10;

if (CurrentIndex < RangePeriod)
   {
   RangeSum += I.High[0] - I.Low[0];
   return;
   }
   
RangeSum += -(I.High[RangePeriod] - I.Low[RangePeriod]) + (I.High[0] - I.Low[0]);
double Range = RangeSum / RangePeriod;

if (CurrentIndex < defaultPeriod) return;   

double H1 = 0, H2 = 0, L1 = Double.MaxValue, L2 = Double.MaxValue;
for (int i = 0; i < defaultPeriod; i++)
{
   if (I.High[i] > H1) H1 = I.High[i];
   if (I.Low[i] < L1) L1 = I.Low[i];
   if (i < 4)
   {
      if (I.High[i] > H2) H2 = I.High[i];
      if (I.Low[i] < L2) L2 = I.Low[i];
   }
}

if ((H1 - L1) != 0)
   wpr1[0] = -100 * ((H1 - I.Close[0]) / (H1 - L1));
   else
   wpr1[0] = -100 * (H1 - I.Close[0]);
if ((H2 - L2) != 0)
   wpr2[0] = -100 * ((H2 - I.Close[0]) / (H2 - L2));
   else
   wpr2[0] = -100 * (H2 - I.Close[0]);

double Indicator = wpr2[0];
for (int j = 0; j < 6; j++)
   {
   if (Math.Abs(I.Close[j + 3] - I.Close[j]) >= Range * 4.6)
      {
      Indicator = wpr1[0];
      break;
      }
   }
Indicator = 100 - Math.Abs(Indicator);

if (Indicator < LowerLevel)
   {
   if (Whait == -1)
      {
      Sell[0] = I.High[0];
      Sell.DrawArrowDown();
      }
   Whait = 1;
   }

if (Indicator > UpperLevel)
   {
   if (Whait == 1)
      {
      Buy[0] = I.Low[0];
      Buy.DrawArrowUp();
      }
   Whait = -1;
   }

}


Скачать индикатор

ASCTrend-01.png
ASCTrend-01.png (29.81 КБ) 25699 просмотров