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

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

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

Добавлено: evge » 18 май 2018, 10:32

Тема: Re: Совместить два индикатора в одном окне

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

Думаю, что удалось мне "вручную" смашстабировать ОИ к дельте.

Само приведенное абсолютное числовое значение ОИ на шкале дельты конечно ничего вообще говорить не будет абсолютно. Только визуально можно его анализировать изменения рост \ падение относительно прошлого значения.

Вот пример, где я вывел индикатор ОИ и индикатор DeltaOI для сравнения работы.

DeltaOI - совмещенный индикатор изменения объема "Delta" и приведенный ОИ в его масштаб за определенный период.

deltaOI-01.png
deltaOI-01.png (44.21 КБ) 19872 просмотра


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

function Initialize()
{
  IndicatorName = "DeltaOI";
  AddParameter("Period", 500);
  AddInput("Input", Inputs.Candle);
  PriceStudy = false;   
  AddSeries("Delta", DrawAs.Custom, Color.Green, AxisType.ZeroBased);   
  AddSeries("DeltaOI", DrawAs.Custom, Color.Blue, AxisType.ZeroBased);   
 
  AddGlobalVariable("MaxDelta", Types.Double, 0);
  AddGlobalVariable("MinDelta", Types.Double, 0);
  AddGlobalVariable("MaxOI", Types.Double, 0); 
  AddGlobalVariable("MinOI", Types.Double, 0); 
}

function Evaluate()
{
 
  if (MinOI == 0) MinOI = Double.MaxValue;

  Delta = Input.VolumeAsk[0] - Input.VolumeBid[0];

  if (MaxIndex - CurrentIndex < Period)
  {     
     if (Delta > MaxDelta) MaxDelta = Delta;
     if (Delta < MinDelta) MinDelta = Delta;
     if (Input.OpenInterest[0] > MaxOI) MaxOI = Input.OpenInterest[0]; 
     if (Input.OpenInterest[0] < MinOI) MinOI = Input.OpenInterest[0]; 
  }
         
  if (Delta > 0 )
     Delta.DrawHistogram(Color.Green, Color.Green, 100);
  else
     Delta.DrawHistogram(Color.Red, Color.Red, 100);
 
  if (CurrentIndex == MaxIndex)
  {
     var K = (MaxOI - MinOI) / (MaxDelta - MinDelta);
     for (int x = 0; x < Period; x++)
     DeltaOI[x] = (Input.OpenInterest[x] - (MinOI + MaxOI) * 0.5) / K;
  }
   
  DeltaOI.DrawHistogram(Color.Silver, Color.Silver, 50);   
}


Необходимо задать период начала отсчета для поиска минимального и максимального значения ОИ и Delta, для дальнейшего приведения ОИ к Delta, а так же отрисовки приведенного ОИ за этот же период.