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

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

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

Добавлено: evge » 07 фев 2016, 16:45

Тема: LevelPivot (PIVOT Level)– уровни разворота

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

Уровни разворота – это возможные уровни поддержки и сопротивления для колебаний цен в текущем дне. Уровни строятся относительно Pivot Point (точки разворота), которая рассчитывается как среднее максимума, минимума и закрытия предыдущего дня.
Pivot = (High+Low+Close)/3

Сами уровни рассчитываются на основании максимума (high), минимума (low) и цены закрытия (close) предыдущего дня по следующим формулам:

R1 = 2Pivot – Low
S1 = 2Pivot – High
R2 = Pivot + (R1 - S1)
S2 = Pivot – (R1-S1)
R3 = High + 2*(Pivot - Low)
S3 = Low – 2*(High - Pivot)

Пример:

LevelPivot-00.png
LevelPivot-00.png (25.85 КБ) 54252 просмотра


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

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

function Initialize()
{
   IndicatorName = "LevelPivot";
   PriceStudy = true;
   AddInput("Input", Inputs.Candle);
   AddParameter("TF", 100, 5);
   AddSeries("LevelPivot",  DrawAs.Line, Color.Gray);
// Global
  AddGlobalVariable("Min",  Types.Double, 0.0);
  AddGlobalVariable("Max",  Types.Double, 0.0);
  AddGlobalVariable("Hi",  Types.Double, 0.0);
  AddGlobalVariable("Lo",  Types.Double, 0.0);
  AddGlobalVariable("Cl",  Types.Double, 0.0);
// Уровни
  AddLevel(0, Color.LightGreen, LineStyles.DashBig, 1, "LevelPivot");

  AddLevel(0, Color.LightGreen, LineStyles.Dot, 1,  "LevelPivot");
  AddLevel(0, Color.LightGreen, LineStyles.Dot, 1, "LevelPivot");
  AddLevel(0, Color.LightGreen, LineStyles.Dot, 1, "LevelPivot");

  AddLevel(0, Color.Coral, LineStyles.Dot, 1, "LevelPivot");
  AddLevel(0, Color.Coral, LineStyles.Dot, 1, "LevelPivot");
  AddLevel(0, Color.Coral, LineStyles.Dot, 1, "LevelPivot");
}

function Evaluate()
{
// AlfaDirect. 2015. OX
// LevelPivot - уровни разворота для текущего (последнего) дня
if (CurrentIndex < 1)
{
     Cl = Input.Close[0];
     Hi = Input.High[0];
     Lo = Input.Low[0];
   Max = Input.High[0];
   Min = Input.Low[0];
}
else if (BarTime() == AsTime(10, 0, 0))
{
     Cl = Input.Close[-1];
     Hi = Max;
     Lo = Min;
   Max = Input.High[0];
   Min = Input.Low[0];
}
else
{
   if (Input.High[0] > Max )
      Max = Input.High[0];
   if (Input.Low[0] < Min )
      Min = Input.Low[0];
}

if (CurrentIndex == MaxIndex)
{
var Pivot = (Hi+Lo+Cl)/3;
Levels[0].Level = Pivot;
// Resistance
Levels[1].Level = Pivot * 2 - Lo;
Levels[2].Level = Pivot + Hi - Lo;
Levels[3].Level = Hi + 2*(Pivot-Lo);
// Support
Levels[4].Level = Pivot * 2 - Hi;
Levels[5].Level = Pivot - Hi + Lo;
Levels[6].Level = Lo - 2*(Hi-Pivot);
}
}