Обучение NinjaTrader часть 7 серия основы Индикаторный клуб

Основы серии с NinjaScript.

Краткое введение.

Мы собрали серию постов, чтобы помочь вам научиться программировать с нуля или редактировать существующие индикаторы и стратегии NinjaTrader. Все наши сообщения ориентированы на непрограммистов, поэтому, несмотря на то, что мы представим много информации, для всех вас, более технических специалистов, мы не будем вдаваться в подробности C #, NinjaTrader или NinjaScript. Также важно отметить, что даже несмотря на то, что мы показываем вам, как что-то делать в NinjaTrader, это ни в коем случае не единственный способ сделать это. Мы представим, что лучше всего сработало для нас и что будет легче всего понять тому, кто учится программировать. Наконец, для более продвинутых пользователей мы собираемся опустить вещи и упростить некоторые части, потому что мы сосредоточены на изучении того, что нам нужно, чтобы мы могли начать наше путешествие по NinjaScript..

В следующем уроке мы начнем разработку индикатора Improved SMA Crossover, но прежде, чем мы это сделаем, нам нужно рассмотреть чрезвычайно важную концепцию, которую мы продолжим развивать в будущем, а именно Series. Этот тип данных пригодится, когда мы хотим сослаться на значение переменных X BarsAgo. .

Основы серии NinjaScript.

Важно понимать основы Series, потому что в отличие от того, что мы видели ранее, Series может означать double, bool, int и т. Д. Определение серии:

Серии — это особый общий тип структуры данных, который может быть построен с любым выбранным типом данных и содержит ряд значений, равных тому же количеству элементов, что и столбцы на диаграмме. Если у вас есть 200 столбцов, загруженных на диаграмму с нанесенным на график скользящим средним, само скользящее среднее содержит объект Series с 200 историческими значениями данных, по одному для каждого столбца. Объекты серии могут использоваться в качестве входных данных для всех методов индикатора. Класс Series реализует интерфейс ISeries. Хотя создавать и использовать переменные простого объекта редко, это может быть полезно при приведении общего типа для баз данных, отражении, сериализации, отправке событий или тегах. Чаще всего в рамках NinjaTrader наличие объекта типа Series полезно для хранения объектов пользовательского класса в поддерживаемом NinjaTrader типе Series. Благодаря этому у вас может быть синхронизированный список класса; синхронизируется с конкретным BarsAgo для синхронизации и единообразия между заданными сериями NinjaTrader (например, Close [BarsAgo] и т. д.).

Как и в случае с большинством наших руководств, мы считаем, что лучший способ изучить серии — это примеры, но сначала, если вы еще этого не сделали, просмотрите концепции, представленные в Части 6, поскольку серия зависит от представленных в ней концепций..

Примеры серий.

В этом примере мы создадим переменную, которая содержит значение 1, если тренд восходящий, -1, если тренд нисходящий, и 0, если тренда нет (мы определим тренд, как если бы бар закрылся вверх или вниз). Мы также определим переменную Series как истинную, если в строке есть два трендовых бара (в противном случае — false). Кроме того, мы определяем настраиваемый класс и исследуем, как Series может содержать любой объект. .

Первое, что мы хотим сделать в нашем примере, относится к универсальному пользовательскому классу Series.<>, посредством чего мы создаем простой класс, содержащий информацию о скользящей средней. В частности, мы будем хранить значение трех разных типов скользящих средних..

Второе, что мы хотим сделать в нашем примере, — объявить нашу серию .

Вы заметите, что приведенное выше похоже на объявление двойного или bool (private double iTrend; private bool iUp, iDown; private Series maValues;), но когда мы объявили Series, мы поместили double и bool внутри <> . Поместив double / bool внутри <>, мы говорим NinjaTrader, что хотим создать серию ype > объект, содержащий значения типа double / bool. Первая часть похожа на то, что мы видели в предыдущих руководствах, но это только первый шаг — инициализация нашей переменной Series. Наши новые переменные смогут ссылаться на BarsAgo, но по умолчанию они способны хранить только 256 точек данных. На самом деле это означает, что если вам нужно сослаться на точку данных, превышающую 256 BarsAgo, например 300 BarsAgo (например, iTrend [300]), вам нужно будет сделать одно из двух:

В настройках индикатора измените MaximumBarsLookBack на MaximumBarsLookBack.Infinite, что позволит вам ссылаться на сколько угодно времени назад ИЛИ Предпочтительно: на следующем этапе инициализации нашей серии мы можем установить для каждой отдельной серии MaximumBarsLookBack MaximumBarsLookBack .Бесконечный.

Прежде чем мы пойдем дальше, причина, по которой мы предпочитаем второй метод первому, заключается в том, что в первом сценарии все переменные Series будут иметь MaximumBarsLookBack.Infinite, который требует больше ресурсов. Итак, если мы знаем, какие переменные серии должны ссылаться на значения, превышающие 256 BarsAgo, мы можем использовать меньше ресурсов, установив только для этих / этих переменных значение MaximumBarsLookBack.Infinite. Давайте рассмотрим различные сценарии подготовки наших переменных к использованию (мы выполним следующее в State.DataLoaded). Примечание. Вы будете использовать только один из этих трех вариантов, а НЕ все три:

Полный пример того, как подготовить наши четыре переменные к использованию, выглядит следующим образом:

Большой! Теперь пора посмотреть, как мы присваиваем значения нашим переменным серии. В следующем примере мы назначим 1 столбцам вверх, -1 столбцам вниз и 0 столбцам, которые не соответствуют ни одному из критериев. Кроме того, нам нужно будет создать экземпляр нашей серии maValues ​​для каждого бара, поскольку это класс. Это делается с помощью нового ключевого слова. Как только наша серия будет создана для этого бара, мы можем использовать его для хранения данных..

Теперь, когда мы определяем iTrend на основе нашего определения «тренда», пришло время определить, было ли у нас 2 последовательных «тренда» подряд:

Мы почти завершили основы работы с сериями, но мы покажем последний пример того, как ссылаться на серию.<> переменные, основанные на той же концепции, что и ссылка на серию. Мы будем ссылаться на серию, используя переменную [BarsAgo]:

Это так просто.

Мы представили основы Series в этом руководстве и продолжим развивать наше понимание в будущих уроках. Пришло время начать работу над индикатором Improved SMA Cross, поэтому ознакомьтесь с частью 8 — AddPlot и Plot Variables..

Похожие статьи