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

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


Баром является любой промежуток времени, в котором можно определить цену открытия (open), закрытия (close), а также наибольшие (high) и наименьшие (low) цены. Такие бары в литературе обычно называются (OHLC) бары.

Объект БАРЫ

Цены бара могут быть и различными и одинаковыми. Бар может состоять из любого количества минут (например 1, 2, 5, 20, 30-минутные бары), или дней, недель, месяцев, кварталов или лет. Также в Wealth-Lab поддерживаются бары, кратные тикам и секундам.

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

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

Как: посчитать количество баров на графике

Используйте свойство Count объекта Bars.

Обратите внимание на то, что свойство Count дает Вам представление о суммарном количестве баров. Однако поскольку Bars является массивом, который содержит в себе объекты Bar, то первый номер бара в массиве обозначается как нулевой элемент. Соответственно, последний номер бара на графике будет равен (Bars.Count - 1). Зная это, Вы не будете удивлены когда обнаружите, что на графике Wealth-Lab последний бар имеет номер 999, хотя Вы точно знаете что имеется ровно 1000 баров.

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


PrintDebug("График имеет " + Bars.Count + " баров.");
PrintDebug("Номер первого бара = 0, а номер последнего бара = " + (Bars.Count - 1));

Как: найти номер первого внутридневного бара, который был несколько дней назад

Так как номера баров на графике всегда обозначаются от нуля до (Bars.Count - 1), часто полезно знать номер внутридневного бара, где 0 - это номер первого бара внутри дня. Для того, чтобы найти внутридневной номер конкретного бара используйте метод Bars.IntradayBarNumber().

Пример использует метод Bars.IntradayBarNumber() наоборот для того, чтобы найти номер первого бара конкретного дня.

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


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies
{
    public class MyStrategy : WealthScript
    {
        //Метод возвращает номер первого бара "n дней назад" для внутридневного графика

        public int FirstBarXDaysAgo(int DaysAgo) //вводя в скобки "дней назад" узнаем номер первого бара указанного дня
        {
            int startBar = Bars.Count;

            for (int day = 1; day <= DaysAgo; day++)

                startBar = startBar - 1 - Bars.IntradayBarNumber(startBar - 1);

            return startBar;
        }

        protected override void Execute()
        {
            ClearDebug();
            PrintDebug("Первый номер бара текущего дня = " + FirstBarXDaysAgo(1));
            PrintDebug("Первый номер бара вчерашнего дня = " + FirstBarXDaysAgo(2));
        }
    }
}

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

Метод IntradayBarNumber()

Иллюстрация работы метода IntradayBarNumber()

Теперь рассмотрим следующий вопрос:

Как: Найти номер бара, который соответствует конкретной дате

Используйте метод ConvertDateToBar() объекта Bars. До тех пор, пока Вы уверены в том, что конкретная дата будет найдена на графике, удобно установить значение для параметра exactMatch = false. К примеру, для того, чтобы найти первый бар внутри дня для конкретной даты (в том случае, если параметр exactMatch равен false) Вам нужно всего лишь указать дату, не указывая при этом время.

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


protected override void Execute()

{
   ClearDebug();

   int year = 2012;
   int month = 02;
   int day = 16;

   DateTime dt = new DateTime(year, month, day);

   PrintDebug("Номер первого внутридневного бара для даты 16 февраля 2012 года равен " + Bars.ConvertDateToBar(dt, false));
}

Как видите, выскакивает информационное окошко, которое и сообщает нам номер бара, соответствующий заданной дате.

Информационное окно

Информация о номере бара на заданную дату

Вы можете более подробно посмотреть описание метода DateTimeToBar() в QuickRef (нажмите F11 в редакторе кода WealthLab).

На сегодня всё. Следующая часть инструкции будет посвящена последовательностям OHLC/V  и объекту DataSeries.

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

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

  1. [...] Объект Bars в Wealth Lab – что такое бары в Велс Лаб  Главная  Что такое уровни пивот и для чего они [...]

  2. макс пишет:

    А где взять свечки с открытым интересом? на сайте финама нет

  3. Юрий пишет:

    Добрый вечер. Использую WL 5.4 и VS 2012. Согласно Вашему примеру импортировал нужные библиотеки в программу. Однако в С#, VB.NET объект Bar не существует. Подскажите что нужно сделать.

    Спасибо.

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