Простая стратегия
Как создать свою первую стратегию и запустить ее торговая платформа Quantower
В наших предыдущих статьях мы показали вам, как использовать расширение Quantower Algo и писать свои собственные индикаторы. Теперь мы покажем вам, как создать свою первую стратегию и запустить ее на торговой платформе Quantower.
Смотрите примеры некоторых стратегий, интеграций и индикаторов в нашем репозитории Github.

Что такое стратегия?

Мы используем название «Стратегия» для кода, который может реализовывать абсолютно любую логику и может выполняться в Quantower. Вы можете использовать стратегии для реализации торговых алгоритмов, особую логику управления ордерами закрытия (например, трейлинг-стоп), для арбитража между разными соединениями и т. Д. У нас нет никаких ограничений для этого, более того, мы предоставляем вам доступ практически ко всем функциям нашего торгового ядра.
Quantower Algo предоставляет вам два предопределенных шаблона стратегий. Мы начнем с пустого шаблона, который содержит только основные функции. Используйте «Файл -> Новый проект» в главном меню Visual Studio, чтобы открыть окно «Новый проект». Введите «Стратегия», и вы увидите специальный тип проекта для пустой стратегии:
Вы получите сгенерированный код с несколькими пустыми функциями:
Исходный код для шаблона стратегии
Как видите, эта пустая версия не имеет отношения к каким-либо торговым функциям - это всего лишь общая кодовая основа. Он унаследован от класса Strategy, этот Quantower распознает, что ваш код совместим и может быть выполнен в Quantower.

Основные методы

Давайте углубимся в код - он содержит несколько методов:

OnCreated

Вызывается, когда пользователь выбирает необходимую стратегию из поиска по стратегии. Используйте этот метод для реализации логики, которую необходимо выполнить один раз при создании.

OnRun

Вызывается, когда пользователь нажимает кнопку Run на панели Strategy Runner. Используйте этот метод для установки начальных значений перед запуском.

OnStop

Вызывается, когда пользователь нажимает кнопку Stop на панели Strategy Runner. Используйте этот метод, чтобы очистить состояние вашей стратегии (при необходимости).

OnRemove

Будет вызываться, когда пользователь закроет панель запуска стратегии или выберет другую стратегию. Используйте этот метод для окончательной очистки использованных ресурсов.

OnGetMetrics

С помощью этого метода вы можете отображать необходимую информацию на панели стратегии и управлять своей стратегией. Например, вы можете отобразить, сколько котировок было обработано, сколько было отправлено заказов на продажу и т. д.
Ко всем этим методам не нужно добавлять логику, чаще всего используется пара методов OnRun / OnStop.
Самый популярный случай - когда вы используете стратегию для реализации некоторого торгового алгоритма, и для этого вам нужен только один инструмент и одна учетная запись. Для этого у нас есть готовый шаблон - вы можете использовать его как основу. Используйте «Стратегию одного символа» в окне «Новый проект»:
Окно "Новый проект" и шаблон стратегии "Один символ"
Теперь у нас есть немного больше кода - стратегия содержит входные переменные Symbol и Account, которые мы описали ранее. Он подписывается на все типы котировок для выбранного символа в методе OnRun (), и вы можете получать и обрабатывать их, если этого требует ваш алгоритм.

Пример

Давайте создадим какой-нибудь тривиальный пример и попробуем запустить его на платформе Quantower. О получении текущей торговой информации и торговых операциях мы поговорим в наших следующих статьях, а на текущий момент мы просто добавляем счетчики для каждого типа котировок и метрики стратегии для отображения в панели Strategy Runner. Мы также добавим примеры журналов - вы всегда должны их использовать, так как они могут помочь вам понять текущее состояние стратегии или отобразить информацию об ошибках. Вы можете указать тип журнала: Информация, Ошибка или Торговля.
1
/// <summary>
2
/// Variables for counting quotes amount
3
/// </summary>
4
int quotesCount = 0;
5
int level2Count = 0;
6
int lastCount = 0;
7
8
/// <summary>
9
/// This method will be executed when strategy receive quote
10
/// </summary>
11
private void SymbolOnNewQuote(Symbol symbol, Quote quote)
12
{
13
// Increase quote counter
14
quotesCount++;
15
16
// An example of standard log
17
Log("Quotes received", StrategyLoggingLevel.Info);
18
}
19
20
/// <summary>
21
/// This method will be executed when strategy receive level2 quote
22
/// </summary>
23
private void SymbolOnNewLevel2(Symbol symbol, Level2Quote level2, DOMQuote dom)
24
{
25
// Increase quote counter
26
level2Count++;
27
28
// An example of error log
29
Log("Level2 received", StrategyLoggingLevel.Error);
30
}
31
32
/// <summary>
33
/// This method will be executed when strategy receive last quote
34
/// </summary>
35
private void SymbolOnNewLast(Symbol symbol, Last last)
36
{
37
// Increase quote counter
38
lastCount++;
39
40
// An example of trading log
41
Log("Last received", StrategyLoggingLevel.Trading);
42
}
43
44
/// <summary>
45
/// Use this method to provide run time information about your strategy. You will see it in StrategyRunner panel in trading terminal
46
/// </summary>
47
protected override List<StrategyMetric> OnGetMetrics()
48
{
49
List<StrategyMetric> result = base.OnGetMetrics();
50
51
// Display our counters in Strategy Runner panel
52
result.Add(new StrategyMetric() { Name = "Quotes count", FormattedValue = quotesCount.ToString() });
53
result.Add(new StrategyMetric() { Name = "Level2 count", FormattedValue = level2Count.ToString() });
54
result.Add(new StrategyMetric() { Name = "Last count", FormattedValue = lastCount.ToString() });
55
56
return result;
57
}
Copied!
Создайте свой проект, и если ваш алгоритм Quantower правильно назначен экземпляру Quantower, ваша стратегия будет автоматически скопирована в соответствующую папку, и вы увидите ее в окне поиска стратегии:
Теперь ваша стратегия доступна в поиске стратегий.
Вам необходимо указать необходимые входные параметры: символ и счет, а затем нажать кнопку «Выполнить». Теперь ваша стратегия работает, и вы увидите журналы и показатели, которые мы добавили:
Панель раннера стратегии с нашей стратегией бега
Это очень простой пример, который дает вам только базовые знания о том, как работают стратегии в Quantower. В наших дальнейших уроках мы покажем вам, как создавать настоящие алгоритмы, используя анализ вашего текущего торгового портфеля и торговых операций.