Модуль визуализации для построения торговой стратегии — первый взгляд
Визуальное программирование всегда было желанной целью для разработчиков программного обеспечения, даже в области количественной торговли.
Потому что подход визуализации «что видишь, то и получаешь» значительно снижает технический порог разработки программирования.
Пользователям больше не придется иметь дело с кучей скучного кодирования. Им просто нужно использовать мозги, воображение и логическое мышление, и сосредоточиться на самом бизнесе.
Вы можете реализовать любую программу, какую захотите, разве это не удивительно!
Тогда давайте вместе войдем в сферу визуального программирования количественных торговых стратегий!
-
Первоначальный изобретатель квантованного визуального программирования
После входа на https://www.fmz.com зарегистрируйте учетную запись (если вы уже зарегистрированы, войдите в систему напрямую) и нажмите: Центр управления->Библиотека политик->Новая политика.
Мы видим первоначальную стратегию визуализации.
Он выводит только информацию об активах счета настроенной по умолчанию биржи (первый объект биржи, добавленный в бэктест или робот).
(Как показано ниже)Прежде чем начать изучать, как использовать визуализацию, мы должны сначала понять некоторые концепции проектирования визуализации.
-
1. Сращивание
Внимательное наблюдение показывает, что все модули имеют шипы (вогнутые) и пазы (выпуклые), что означает, что модули можно «соединять» и «подсоединять».
Если функциональные коды, представленные двумя модулями, можно соединить, то они защелкнутся, когда вы приблизите паз и шип двух модулей друг к другу. -
2. Настройки и корректировки модуля
Некоторые модули имеют специальные настройки, например:
Вы можете перетащить модуль «Проект» слева на модуль «Соединение», чтобы добавить позицию паза и шипа, тем самым добавив позицию для склеивания текста.
Таким образом, вы можете внести некоторые изменения и настройки в модуль, нажав на маленькую шестеренку. -
3. Входные параметры модуля по умолчанию
Некоторые модули требуют входных параметров, которые могут быть значениями, строками и т. д.
Если вы не добавите переменные в качестве входных параметров модуля, модуль будет выполнен в соответствии с входными параметрами по умолчанию.
Такой вычислительный модуль для нахождения квадратных корней выводит результаты вычислений этого модуля.

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

Конечно, если вы хотите использовать переменный модуль в качестве входного параметра, вы можете напрямую подключить переменный модуль к положению паза и шипа (выемки).

-
4. Операция
Модуль можно щелкнуть и перетащить левой кнопкой мыши.
Модули можно копировать с помощью ctrl + c и вставлять с помощью ctrl + v, так же удобно, как копировать и вставлять код или текст.
Масштаб рабочей области можно увеличивать или уменьшать с помощью колесика мыши, при этом масштаб всех модулей будет увеличиваться или уменьшаться.
Щелкните и удерживайте пустую область в области операции и перетащите ее, чтобы переместить.
В корзине справа хранятся недавно удаленные модули.
Самое главное, после сборки модульной стратегии не забудьте нажать «Сохранить».
-
-
Введение в модуль «Инструменты визуализации»
Вы можете видеть, что в левой части области визуального редактирования имеется множество категорий модулей, и в каждой категории имеется множество доступных визуальных модулей.
Всего существует 11 категорий.-
Модуль инструмента:
-
1. Выходная информация:
Этот модуль обычно используется в сочетании с текстовыми модулями, как показано ниже:

Вы можете ввести строку в модуль класса текста, чтобы при запуске модуля «выходная информация» было выведено содержимое строки в модуле текста.

Бэктестинг:

Как код языка JavaScript:
function main(){ Log("你好,可视化编程!") }
-
2. WeChat push:
Этот модуль выглядит так же, как «Вывод информации», за исключением того, что он выводит информацию и отправляет ее в учетную запись WeChat, привязанную к текущей учетной записи.


Как код языка JavaScript:
function main () { Log("微信推送!@") }
-
3. Создание исключения
Модуль исключения throw позволяет программе вызвать ошибку, а затем остановить выполнение программы (без написания кода обработки исключений).

Это похоже на стратегию JavaScript, где функция throw «строка для вывода» выполняется непосредственно в основной функции.
function main () { throw "第一句就抛出异常,让程序停止!" }Результаты бэктестинга:

Обычно он чаще используется во время отладки, например, когда вы хотите, чтобы программа остановилась при определенном условии и в этот момент вывела на экран некоторые данные для удобства наблюдения.
Или вы можете поместить модуль генерации исключений в поток кода, где могут возникнуть проблемы, чтобы программа могла сообщать об ошибках и обнаруживать некоторые ошибки.
-
4. Спячка
Модуль гибернации

Как и в политике JavaScript:function main () { Sleep(1000 * 5) }Протестируйте модуль гибернации:

Результаты бэктестинга:

-
5. Печатный доход
Этот модуль аналогичен функции LogProfit API платформы количественной торговли Inventor, он печатает журнал прибыли и автоматически рисует кривую прибыли на основе входных параметров.
Например:

Результаты бэктестинга показаны ниже:

Соответствующий код политики JavaScript выглядит следующим образом:function main () { LogProfit(1) Sleep(1000 * 5) LogProfit(2) Sleep(1000 * 5) LogProfit(3) Sleep(1000 * 5) LogProfit(2) Sleep(1000 * 5) LogProfit(5) }Его можно подключить в любом месте, где вы хотите вывести информацию о доходах.
-
6. Петля

Модуль цикла может охватывать ряд соединенных комбинаций модулей и позволять этой комбинации модулей выполняться в цикле.тест:

Результаты бэктестинга:

Видно, что после того, как модуль цикла оборачивает комбинацию модулей, состоящую из Print Profit и Sleep, комбинация модулей будет выполняться непрерывно.
-
7. Выполнение цикла каждые N секунд

Использование этого модуля в основном такое же, как и у модуля loop, единственное отличие состоит в том, что этот модуль имеет встроенную функцию сна.

-
8. Точная обработка

Этот модуль можно использовать, когда переменные модули или числовые значения должны контролировать точность. Числовое значение входного параметра будет выведено как числовое значение указанных десятичных знаков в соответствии с настройками.Например, число 3,1415926535897 обрабатывается с точностью.

-
9. Очистить журнал
Используется для очистки журналов. В зависимости от входных параметров часть журналов может быть сохранена.
Как указано в документации API:LogReset()
-
10. Очистите журнал доходов.
Используется для очистки журнала доходов. В зависимости от входных параметров часть журнала может быть сохранена.
Как указано в документации API:LogProfitReset()
Ниже приведены некоторые часто используемые инструментальные модули.
-
11. Функциональный модуль для получения определенного атрибута рынка
Этот модуль инструмента необходимо использовать совместно с рыночным модулем в «Типе торгового модуля», как показано на рисунке:

Используйте модуль выходной информации для вывода последней цены транзакции на последнем рынке тикеров:

Как и код стратегии JavaScript:
function main () { Log(exchange.GetTicker().Last) } -
12. Модуль получения атрибутов определенного Бара данных K-line
Этот модуль также необходимо использовать вместе с модулем сбора данных K-line в «Типе торгового модуля».
Сначала создайте переменный модуль и назовите его: K-line.

Затем получите данные K-line, используйте модуль данных K-line для их получения и назначьте их модулю переменных: «K-line».

Затем используйте модуль длины списка в «Типе модуля списка», чтобы получить длину модуля переменной K-линии, который используется для указания, из какой строки K-линии следует получать данные.

Сшейте, как показано на рисунке:

При запуске бэктеста распечатывается временная метка последнего бара K-линии.

-
13. Модуль получения данных по заказам в книге заказов
Его также необходимо использовать вместе с модулем Get Depth Data в «Типе модуля транзакций».
Установите индекс на 0, установите ордер на продажу и получите информацию о ордере на продажу.
Как и код стратегии JavaScript:
function main () { Log(exchange.GetDepth().Asks[0]) } -
14. Модуль для получения определенного атрибута в информации об активе

Этот модуль необходимо использовать вместе с модулем «Получить информацию об активах».

Например: вывести количество монет, имеющихся на текущем счете.

Как в стратегии JavaScript:
function main () { Log(exchange.GetAccount().Stocks) } -
15. Модуль для получения определенного атрибута в данных заказа
Этот модуль используется для получения значения определенного атрибута в данных заказа, например, цены или количества первой продажи в книге заказов (пример номер 13).

Результаты бэктестинга:

Как в стратегии JavaScript:function main () { Log(exchange.GetDepth().Asks[0].Price) }Его также можно использовать для получения определенного атрибута в информации о заказе, возвращаемой «Модулем запроса сведений о заказе» (который будет описан в расширенном разделе).
-
16. Модуль получения атрибутов определенной должности в информации о должности
Аналогично, его следует использовать вместе с "Get Futures Position Module". Следует отметить, что возвращаемые модулем Get Futures Position данные о позициях представляют собой массив (список), который представляет собой структуру данных, содержащую позиции различных контрактов и направлений. . Поэтому при его использовании необходимо указывать индекс.
Узнав так много, давайте объединим операцию хеджирования, то есть будем хеджировать как краткосрочные, так и срочные контракты одновременно.
Мы делаем положительный арбитражный хедж, то есть открываем короткий форвардный контракт, 1 контракт, и открываем длинный контракт в ближайшей перспективе.
-
-
Пример стратегии визуализации:
- https://www.fmz.com/strategy/121404
- https://www.fmz.com/strategy/129895
- https://www.fmz.com/strategy/123904
- https://www.fmz.com/strategy/122318
Больше стратегий доступно на сайте: https://www.fmz.com/square
Другие статьи этой серии
- Модуль визуализации для построения торговых стратегий - подробно
- Модуль визуализации для построения торговых стратегий - продвинутый
Скучное программирование можно легко завершить с помощью строительных блоков. Попробуйте, это очень интересно!
- 1





















