4
Подписаться
1271
Подписчики

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

Создано: 2019-07-17 10:22:20, Обновлено: 2023-10-24 21:40:50
comments   3
hits   4351

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

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

Изучите торговую стратегию построения визуальных модулей (вводная глава) и получите концептуальное представление о построении и сращивании визуальных модулей. Затем легко научиться использовать другие модули. Некоторые более сложные функции можно комбинировать.

  • ## Модуль категории транзакций

В предыдущих исследованиях и тестах мы столкнулись с несколькими модулями «транзакционных категорий». Например: Модуль «Биржевые котировки» Модуль «Обмен и получение K-линии» …

Я не буду вдаваться в подробности о тех, которые уже были использованы.

  • 1. Получите количество обменов

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

    При написании стратегии торговли с помощью робота можно добавить более одного объекта биржи, например, стратегию хеджирования. Или вам необходимо обойти (обход означает посещение каждого объекта по отдельности) объекты биржи, чтобы получить доступ к рыночным условиям. На данный момент вам необходимо использовать модуль для получения количества обменов.

    Сначала мы можем использовать простую структуру для вывода количества настроенных в данный момент обменов: Модуль визуализации для построения торговых стратегий - продвинутый

    Фактически, это то же самое, что вызвать следующий код политики JavaScript:

    function main () {
        Log(exchanges.length)
    }
    

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

    Вы можете видеть, что мы добавили 3 объекта обмена, представляющих три разных счета обмена, и результат вывода журнала бэктеста — 3.

  • 2. Получите название биржи

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

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

    Давайте заранее изучим модуль условного суждения: Модуль визуализации для построения торговых стратегий - продвинутый Условие суждения можно записать как: Модуль визуализации для построения торговых стратегий - продвинутый

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

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

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

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

    function main () {
        for (var i = 1 ; i <= exchanges.length ; i++) {
            if (i == 1) {
                Log(exchanges[0].GetName())
            } else if (i == 2) {
                Log(exchanges[1].GetName())
            } else {
                Log(exchanges[2].GetName())
            }
        }
    }
    
  • 3. Получить текущую торговую пару биржи

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

    Простой пример получает торговую пару первого установленного в данный момент объекта обмена и присваивает ее текстовой переменной (созданной в категории переменных заранее).

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

    Если вы вызываете код политики JavaScript:

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4. Заказать модуль

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

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

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

    Как в следующем коде политики JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. Модуль получения поручения на выполнение текущей торговой пары

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

    Этот модуль вернет все незавершенные ордера для текущей торговой пары. Возвращаемая структура представляет собой список (массив), который может быть обработан модулями типа списка (операции обхода и т. д.). Например: мы немного изменим приведенный выше пример модуля заказа [4] и изменим цену в 10 юаней, добавленную при размещении заказа, на вычитание цены в размере 10 юаней. Ордер не будет исполнен немедленно, а будет находиться в ожидании в глубине покупок и продаж (т. е. на определенном уровне между Buy 1, Buy 2 и Buy N), так что ордер находится в отложенном ордере, ожидая исполнения. Затем мы используем модуль «Получить ордер на поручение текущей торговой пары» для получения списка ордеров в состоянии PENDING (ожидание исполнения). Чтобы избежать исполнения ордеров в последующих рыночных условиях и повлиять на окончательное наблюдение бэктеста, после выполнения модуля «Получить ордер на доверительное управление текущей торговой парой» и распечатки списка ордеров мы немедленно используем «Выдать исключение “модуль для остановки программы.

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

    Бэктестинг показывает: Модуль визуализации для построения торговых стратегий - продвинутый

    Цена ордера на покупку на 10 юаней ниже последней цены на тот момент, поэтому транзакция не будет завершена немедленно. Затем получите ордера, ожидающие исполнения, и распечатайте их. Наконец, выдается исключение для остановки программы.

    Весь собранный модуль подобен вызову стратегии JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        Log(exchange.GetOrders())
        throw "stop"
    }
    
  • 6. Модуль отмены заказа

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

    Этот модуль используется для отмены заказа.

    Существует множество сценариев, когда это требуется при написании политик:

    Отменить все текущие заказы.

    Несомненно, это потребует использования «модуля отмены ордера». Изучая модуль отмены ордера, мы можем использовать [5] для получения модуля для текущего ордера на доверительное управление торговой пары и объединить их для достижения этой функции.

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

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

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

    Тестирование на исторических данных: Модуль визуализации для построения торговых стратегий - продвинутый

    Использование описания политики JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
        Log(id2)
        var orders = exchange.GetOrders()
        Log(orders)
        for (var i in orders) {
            var order = orders[i]
            Log(exchange.CancelOrder(order.Id))
        }
    }
    
  • 7. Модуль получения подробной информации о заказе по идентификатору заказа

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

    Этот модуль может возвращать подробную информацию о заказе, подключив модуль переменной идентификатора заказа к положению паза и шипа.

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

    Обратите внимание на порядок, возвращаемый после запуска: Модуль визуализации для построения торговых стратегий - продвинутый

    Сравнивая результаты с результатами, полученными в примере [5], можно обнаружить, что напечатанный заказ представляет собой отдельную информацию о заказе.[] Заключено в квадратные скобки. Поскольку пример [5] возвращает список, этот пример возвращает информацию об одном заказе (полученную на основе модуля переменной ID в позиции шипа, переданной модулем).

    Приведенный выше пример эквивалентен выполнению политики JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(exchange.GetOrder(id))
    }
    
  • 8. Модуль торговли фьючерсами

    Мы изучаем вышеуказанные модули один за другим и устанавливаем тестовую биржу на товарные фьючерсы.

    Настройки бэктестинга: Модуль визуализации для построения торговых стратегий - продвинутый Следующий пример тестирует эту настройку.

    • Модуль для оценки состояния соединения между товарными фьючерсами CTP и серверами фьючерсной компании

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

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

    • Настройте модуль контракта

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

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

    Мы установили контракт на MA909, который в настоящее время является основным контрактом на метанол. Модуль визуализации для построения торговых стратегий - продвинутый Таким образом, получается последнее значение цены на текущем тиковом рынке контракта MA909.

    • Настройка модуля направления ордеров на фьючерсную торговлю

    В модуле порядка выполнения Модуль визуализации для построения торговых стратегий - продвинутый
    Направление ордера необходимо указывать, поскольку фьючерсы имеют: купить: открыть длинную позицию продажа: открыть короткую позицию closebuy : закрыть длинную позицию closesell : закрыть короткую позицию Четыре направления (у товарных фьючерсов есть еще два направления: closebuy_today закрывает длинные позиции сегодня, closesell_today закрывает короткие позиции сегодня).

    Например, если модуль ордера настроен на покупку, то существует два значения: открыть длинную позицию и закрыть короткую позицию, что создает неоднозначность. Поэтому для установки четкого направления ордера необходим модуль «Установка направления ордера для торговли фьючерсами».

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

    Бэктестинг показывает: Модуль визуализации для построения торговых стратегий - продвинутый

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

      function main () {
          while (true) {
              if (exchange.IO("status")) {
                  exchange.SetContractType("MA909")
                  Log(exchange.GetTicker().Last)
                  exchange.SetDirection("buy")
                  Log(exchange.Buy(1000, 1))
                  throw "stop"
              } else {
                  Log("未连接商品期货前置机")
              }
              Sleep(1000)
          }
      }
    
  • 9. Модуль торговли фьючерсами на криптовалюту

    Использование фьючерсов на цифровые валюты в основном такое же, как использование товарных фьючерсов в [8] выше.

    • На примере OKEX код контракта может быть следующим:

      • this_week : на этой неделе
      • next_week : следующая неделя
      • квартал : квартал
      • своп: бессрочный
    • BitMEX :

      • XBTUSD
      • ETHUSD
    • Настройка модуля кредитного плеча

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

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

      # 注意 : 回测不支持。
    

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

      function main () {
          exchange.SetMarginLevel(10)
      }
    

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

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

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

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