Вызов и редактирование стратегий аналогичны этим действиям индикаторов. В меню слева в разделе "Стратегии" сделайте клик по стратегии, в открывшемся окне нажмите на кнопку "Правка".
Рассмотрим код простой стратегии на двух скользящих средних "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");
Открытие короткой позиции.
Особенности проведения тестирования
В момент запуска стретегии с выбранного момента времени начинается посвечной ход вперёд по историческим данным, имитируя изменение цены в ходе торгов. Код стретегии запускается каждый этот ход. Поэтому для тестирования подходят только стратегии, в которых решения о сделки принимается в момент образования новой свечи.