Финансовая лаборатория

Биржевая торговля и торговые роботы


Сегодня речь пойдет о том, как при создании торговой стратегии с помощью WealthScript в программе Велс Лаб получить доступ к ценам исследуемого инструмента (OHLC), к его объемам. Также будет дано понятие серий (последовательностей) и класса DataSeries.

Серии цен открытия, закрытия, максимумов и минимумов, а также объемов (OHLC/V) образуют первоначальный график финансового инструмента. Доступ к этим данным можно получить с помощью одноименных свойств класса Bars.

Ряды данных цен (OHLC) и объемов (Volume)

Сложно говорить о сериях OHLC/V в барах без предварительного представления о типе данных класса DataSeries. Эта тема обсуждается далее, ну а сейчас достаточно будет упомянуть о типе значений класса DataSeries. В DataSeries применяется тип double - с плавающей точкой двойной точности.

Как: получить доступ к значениям OHLC/V

Для того, чтобы получить доступ к значениям конкретного бара, как и обычно в классе DataSeries, нужно использовать квадратные скобки [].

Пример кода показывает подробное описания метода нахождения средних цен закрытия последних пяти баров на графике (позднее мы изучим как можно выполнить ту же самую задачу с помощью индикаторов).

Пример (как выполнить пример приведенного кода)...

protected override void Execute()

{
   const int period = 5;
   double sum = 0d;

   for(int bar = Bars.Count - 1; bar >= Bars.Count - period; bar--)

      sum = sum + Bars.Close[bar];

   double avg = sum / period;

   PrintDebug("Среднее значение " + period + "-ти последних цен закрытия равняется: " + avg);
}

В результате выполнения данного кода выскочит окошко, которое сообщит о рассчитанном среднем значении цен закрытия 5-ти последних баров.

Доступ к серии OHLC

Расчет последних 5-ти цен закрытия

Серии Open, High, Low, Close и Volume уже существуют в базовом классе WealthScript, поэтому если Вы хотите сослаться на одну из этих 5-ти последовательностей, то Вы не обязательно должны уточнять, что они являются свойствами класса Bars. Другими словами, написание Close будет совершенно равнозначно написанию Bars.Close, High эквивалентно Bars.High и т.д.

Как: отобразить на графике серии OHLC/V

Обычно нет необходимости специально отображать на графике последовательности OHLC/V, так как программа уже делает это автоматически, когда Вы выбираете стиль графика. Однако, предположим, что Вы захотели отобразить вокруг линейного графика, построенного по ценам закрытия верхние и нижние "полосы" максимальных и минимальных цен. Здесь представлен пример того, как с помощью функций WealthScript, используя доступ к значениям серий High, Low и Volume реализовать эту задачу.

Пример (как выполнить пример приведенного кода)...


protected override void Execute()

{
   // Отображаем на графике цен "конверт" по ценам High и Low

   PlotSeries(PricePane, High, Color.Gray, WealthLab.LineStyle.Solid, 2);
   PlotSeries(PricePane, Low, Color.Gray, WealthLab.LineStyle.Solid, 2);

   // Заключаем в "конверт" гистограмму объема

   PlotSeries(VolumePane, Volume, Color.Fuchsia, WealthLab.LineStyle.Solid, 2);
}

В итоге получится вот такая картина:

Plot OHLC

Отображение серии OHLC/V на графике

Для того, чтобы больше узнать о построении графика смотри здесь...

Как: Поменять значения серий OHLC/V

В некоторых случаях Вам может понадобиться скорректировать значения первоначальных последовательностей OHLC/V "на лету", без необходимости сохранять результат такой коррекции. К примеру, это может понадобиться для того, чтобы сделать первоначально отрицательные значения положительными.

Пример, приведенный ниже проверяет самое маленькое значение и в случае, если это число оказывается отрицательным, прибавляет ко всем значениям всех последовательностей некоторое целое число, которое превратит все значения серий OHLC/V в неотрицательные числа.

Пример (как выполнить пример приведенного кода)...


protected override void Execute()

{

// Если самое маленькое число является отрицательным, нужно увеличить его, сделав положительным, одновременно увеличив все прочии серии OHLC/V

   double low = Lowest.Value(Bars.Count - 1,Low, Bars.Count);

    if (low < 0)

   {
      low = Math.Ceiling(Math.Abs(low));

      for (int bar = 0; bar < Bars.Count; bar++)

      {
         Open[bar] = Open[bar] + low;
         High[bar] = High[bar] + low;
         Low[bar] = Low[bar] + low;
         Close[bar] = Close[bar] + low;
      }
   }
}

Как результат, все значения серий станут неотрицательными.

На сегодня все. В следующей статье будет показано, как при программировании стратегий в WealthScript можно получить доступ к шкале, интервалам а также к дате и времени.

Рубрики: The Bars Object, WealthScript

Комментариев: 6

  1. [...] же ссылаться на другой массив DataSeries или на объект Bars.  Последовательности OHLC/V и все индикаторы являются экземплярами класса [...]

  2. Kartman пишет:

    А, что это ( &quot, &gt ) работает в WL?

  3. [...] 2. OHLC/V Series – последовательности цен при программировании … [...]

Оставить комментарий