Type/to search
8
Follow
1364
Followers
Модуль визуализации для построения торговой стратегии — первый взгляд
Original
Created 2019-07-08 09:23:59  Updated 2024-12-23 17:57:33
 7
 8305

img

Модуль визуализации для построения торговой стратегии — первый взгляд

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

Тогда давайте вместе войдем в сферу визуального программирования количественных торговых стратегий!

  • Первоначальный изобретатель квантованного визуального программирования

    После входа на https://www.fmz.com зарегистрируйте учетную запись (если вы уже зарегистрированы, войдите в систему напрямую) и нажмите: Центр управления->Библиотека политик->Новая политика.

    img

    Мы видим первоначальную стратегию визуализации.
    Он выводит только информацию об активах счета настроенной по умолчанию биржи (первый объект биржи, добавленный в бэктест или робот).
    (Как показано ниже)

    img

    Прежде чем начать изучать, как использовать визуализацию, мы должны сначала понять некоторые концепции проектирования визуализации.

    • 1. Сращивание

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

      img

    • 2. Настройки и корректировки модуля

      Некоторые модули имеют специальные настройки, например:

      img

      Вы можете перетащить модуль «Проект» слева на модуль «Соединение», чтобы добавить позицию паза и шипа, тем самым добавив позицию для склеивания текста.
      Таким образом, вы можете внести некоторые изменения и настройки в модуль, нажав на маленькую шестеренку.

    • 3. Входные параметры модуля по умолчанию

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

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

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

    • 4. Операция

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

  • Введение в модуль «Инструменты визуализации»

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

    img Всего существует 11 категорий.

    • Модуль инструмента:

      img


      • 1. Выходная информация:

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

        Как код языка JavaScript:

        function main(){ Log("你好,可视化编程!") }

      • 2. WeChat push:

        Этот модуль выглядит так же, как «Вывод информации», за исключением того, что он выводит информацию и отправляет ее в учетную запись WeChat, привязанную к текущей учетной записи.
        img
        img

        Как код языка JavaScript:

        function main () { Log("微信推送!@") }

      • 3. Создание исключения

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

        Это похоже на стратегию JavaScript, где функция throw «строка для вывода» выполняется непосредственно в основной функции.

        function main () { throw "第一句就抛出异常,让程序停止!" }

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


      • 4. Спячка

        Модуль гибернации
        img
        Как и в политике JavaScript:

        function main () { Sleep(1000 * 5) }

        Протестируйте модуль гибернации:
        img
        Результаты бэктестинга:
        img


      • 5. Печатный доход

        img

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

        Например:
        img
        Результаты бэктестинга показаны ниже:
        img
        Соответствующий код политики 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. Петля

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

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


      • 7. Выполнение цикла каждые N секунд

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


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

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

        Например, число 3,1415926535897 обрабатывается с точностью.
        img

        Бэктестинг показывает:
        img


      • 9. Очистить журнал

        img

        Используется для очистки журналов. В зависимости от входных параметров часть журналов может быть сохранена.
        Как указано в документации API:

        LogReset()

      • 10. Очистите журнал доходов.

        img

        Используется для очистки журнала доходов. В зависимости от входных параметров часть журнала может быть сохранена.
        Как указано в документации API:

        LogProfitReset()

      Ниже приведены некоторые часто используемые инструментальные модули.

      • 11. Функциональный модуль для получения определенного атрибута рынка

        img

        Этот модуль инструмента необходимо использовать совместно с рыночным модулем в «Типе торгового модуля», как показано на рисунке:
        img

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

        Бэктестинг показывает:
        img

        Как и код стратегии JavaScript:

        function main () { Log(exchange.GetTicker().Last) }
      • 12. Модуль получения атрибутов определенного Бара данных K-line

        img

        Этот модуль также необходимо использовать вместе с модулем сбора данных K-line в «Типе торгового модуля».

        Сначала создайте переменный модуль и назовите его: K-line.
        img
        Затем получите данные K-line, используйте модуль данных K-line для их получения и назначьте их модулю переменных: «K-line».
        img
        Затем используйте модуль длины списка в «Типе модуля списка», чтобы получить длину модуля переменной K-линии, который используется для указания, из какой строки K-линии следует получать данные.
        img
        Сшейте, как показано на рисунке:
        img
        При запуске бэктеста распечатывается временная метка последнего бара K-линии.
        img

      • 13. Модуль получения данных по заказам в книге заказов

        img

        Его также необходимо использовать вместе с модулем Get Depth Data в «Типе модуля транзакций».

        img

        Установите индекс на 0, установите ордер на продажу и получите информацию о ордере на продажу.

        img

        Как и код стратегии JavaScript:

        function main () { Log(exchange.GetDepth().Asks[0]) }
      • 14. Модуль для получения определенного атрибута в информации об активе

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

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

        Бэктестинг показывает:
        img

        Как в стратегии JavaScript:

        function main () { Log(exchange.GetAccount().Stocks) }
      • 15. Модуль для получения определенного атрибута в данных заказа

        img

        Этот модуль используется для получения значения определенного атрибута в данных заказа, например, цены или количества первой продажи в книге заказов (пример номер 13).
        img

        Результаты бэктестинга:
        img
        Как в стратегии JavaScript:

        function main () { Log(exchange.GetDepth().Asks[0].Price) }

        Его также можно использовать для получения определенного атрибута в информации о заказе, возвращаемой «Модулем запроса сведений о заказе» (который будет описан в расширенном разделе).

      • 16. Модуль получения атрибутов определенной должности в информации о должности

        img

        Аналогично, его следует использовать вместе с "Get Futures Position Module". Следует отметить, что возвращаемые модулем Get Futures Position данные о позициях представляют собой массив (список), который представляет собой структуру данных, содержащую позиции различных контрактов и направлений. . Поэтому при его использовании необходимо указывать индекс.

        Узнав так много, давайте объединим операцию хеджирования, то есть будем хеджировать как краткосрочные, так и срочные контракты одновременно.
        Мы делаем положительный арбитражный хедж, то есть открываем короткий форвардный контракт, 1 контракт, и открываем длинный контракт в ближайшей перспективе.

        img

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

Пример стратегии визуализации:

Больше стратегий доступно на сайте: https://www.fmz.com/square

Другие статьи этой серии

Скучное программирование можно легко завершить с помощью строительных блоков. Попробуйте, это очень интересно!

Related Recommendations
Comment
All comments (7)

    指标里没有cci,我如果要用cci是不是就不能用这个可视化去创建

    4 years ago

    这个系列里的文章有讲如何实现自定义的模块。

    4 years ago

    除了深入,初识,进阶这三个还有本系列其他的文章吗,为什么我没找到自定义模块和指标模块用法呢

    4 years ago

    请问可视化中的指标模块是怎么使用的

    5 years ago

    这个系列文章可以看完,又讲。

    5 years ago

    好的,谢谢。找到了

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)