Сегодня речь пойдет о том, как при создании торговой стратегии с помощью WealthScript в программе Велс Лаб получить доступ к ценам исследуемого инструмента (OHLC), к его объемам. Также будет дано понятие серий (последовательностей) и класса DataSeries.
Серии цен открытия, закрытия, максимумов и минимумов, а также объемов (OHLC/V) образуют первоначальный график финансового инструмента. Доступ к этим данным можно получить с помощью одноименных свойств класса Bars.
Сложно говорить о сериях 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-ти последних баров.
Серии 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); }
В итоге получится вот такая картина:
Для того, чтобы больше узнать о построении графика смотри здесь...
Как: Поменять значения серий 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 можно получить доступ к шкале, интервалам а также к дате и времени.
[...] [...]
[...] же ссылаться на другой массив DataSeries или на объект Bars. Последовательности OHLC/V и все индикаторы являются экземплярами класса [...]
[...] [...]
А, что это ( ", > ) работает в WL?
Глюк какой-то в коде был. Поправил. Так вроде все нормально.
[...] 2. OHLC/V Series – последовательности цен при программировании … [...]