Обзор кода стратегии на паре Moving Average

Вызов и редактирование стратегий аналогичны этим действиям индикаторов. В меню слева в разделе "Стратегии" сделайте клик по стратегии, в открывшемся окне нажмите на кнопку "Правка".

Рассмотрим код простой стратегии на двух скользящих средних "Pair MA". JSON-настройка стратегии должна содержать два ключа: name и indicators. Значение ключа name это название стретегии. В ключе indicators содержится двумерный массив со списком используемых индикаторов с их параметрами. Каждый элемент массива, описывающий индикатор, должен содержать его название, затем необходимые значения в том количестве, в котором предусмотрено в JSON-настройке индикатора. При этом обязательно необходимо указывать все ID, т.к. по ним происходит обращение к значениям индикаторов.

В коде используемого индикатора Moving Average используются 3 пареметра: "Период", "Цвет", "ID". В стретегии используются 2 этих индикатора с периодом 13 (синий) и 21 (красный). Поэтому ключ indicators принимает вид, показанный на изображении.

var ma1 = buff_curves[1][1]; В переменную ma1 записываем значение синей скользящей средней (для которой значение ID было задано равным 1), соответствующей свечи с индеком 1 (только что закрытой свечи, на рисунке под которой вертикальная пунктирная линия. Свеча с индеком 0 это только что открытая свеча, имеющая вид черты).

var ma2 = buff_curves[2][1]; Переменная ma2 получает соответствующее значение для красной средней с ID равным 2.

if ((pos < 1) && (ma1 > ma2)) {...} Условие для покупки акций. Служебная переменная pos содержит информацию о текущей позиции (см. таблицу). Таким образом, текущие позиции "короткая" или "вне рынка" вместе с расположеним синей скользящей средней над красной является условие входом в длинную позицию.

Значение posПозиция
-1короткая
0вне рынка
1длинная

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

Значение аргументаСделка
"s"вход к короткую
"0"вне рынка (закрыть открытую позицию и зафиксировать результат)
"b"вход в длинную

order("0"); Закрытие открытой позиции, если она существует. Убеждаемся, что позиций нет.

order("b"); Открытие длинной позиции.

if ((pos > -1) && (ma1 < ma2)) {...} Условие для входа в короткую позицию, противоположное для входа в длинную.

order("s"); Открытие короткой позиции.

Особенности проведения тестирования

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

Эта информация была полезной?

29 people found this page helpful so far!