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

Автор:Лидия., Создано: 2022-12-13 14:11:36, Обновлено: 2023-09-20 09:53:59

img

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

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

Модуль категории торговли

В предыдущем обучении и тестировании мы познакомились с несколькими модулями торговой категории. Например: Модуль Exchange Get Ticker обмен получать OHLC модуль - Да, конечно.

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

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

img

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

Мы можем напечатать количество настраиваемых обменов в простой структуре:

img

На самом деле, это похоже на вызов такого кода стратегии JavaScript:

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

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

img img img

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

2. Получить имена обмена

img

При добавлении трех обменных объектов в выпадающем окне отображаются три варианта. Заранее выучите модуль петли в типе петли.

img

Узнайте модуль оценки состояния заранее:

img

Условия суждения можно записать следующим образом:

img

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

img

Результаты обратных испытаний:

img

Как код стратегии 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. Получить текущую торговую пару биржи

img

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

img

Результаты обратных испытаний:

img img img

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

function main () {
    var text = exchange.GetCurrency()
    Log(text)
}

4. Модуль заказов

img

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

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

img

Результаты обратных испытаний:

img

Например, следующий код стратегии JavaScript:

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
    Log(id)
}

5. Получить ожидающие заказы текущего модуля торговых пар

img

Этот модуль возвращает все ожидающие ордера в незавершенном состоянии текущей торговой пары. Он возвращает структуру списка (массив), которая может быть обработана модулем типа списка (проходная операция и т. Д.). Например, мы немного изменили вышеприведенный примерный модуль заказа[4] и изменили цену 10 юаней, добавленную при размещении заказа, до минус 10 юаней. Затем мы используем модуль Get pending orders of the current trading pair для получения списка заказов в состоянии PENDING (в ожидании заполнения). Чтобы избежать влияния на окончательное наблюдение за обратным тестом из-за выполнения заказов на последующем рынке, после того, как модуль Get pending orders of the current trading pair выполняется, мы распечатываем список заказов и используем модуль Throw exception немедленно, чтобы остановить программу.

img

Проверка показала:

img

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

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

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(id)
    Log(exchange.GetOrders())
    throw "stop"
}

6. Отменить модуль заказа

img

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

Существует много сценариев, которые требуют таких операций при написании стратегий:

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

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

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

img

Используйте модуль Traverse every element in the list в модуле Loop для прохождения заказов в текущем списке ожидаемых заказов.

img

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

img

Используйте модуль Util:

img

Вытащите идентификатор заказа, передайте его в положение Cancel order модуля, и Cancel order модуль выполняет отмену заказа.

Операция обратного испытания:

img

Используйте описание стратегии 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. Модуль для получения деталей заказа на основе его идентификатора заказа

img

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

img

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

img

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

Приведенный выше пример похож на выполнение стратегии JavaScript:

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(exchange.GetOrder(id))
}

8. Модуль торговли фьючерсами

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

Настройки обратного тестирования:

img

В следующем примере выполняется обратная проверка на основе настроек.

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

img

Фьючерсы на сырьевые товары имеют время открытия и закрытия.

  • Наборный контрактный модуль

img

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

Мы установили контракт на MA909, главный контракт на метанол в настоящее время.

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

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

В модуле исполнения приказов

img

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

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

img

Дисплей обратного тестирования:

img

Как код стратегии 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("The commodity futures front-end processor is not connected")
        }
        Sleep(1000)
    }
}

9. Модуль торговли фьючерсами цифровой валюты

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

  • В качестве примера OKEX код контракта может быть:
    • this_week: на этой неделе
    • next_week: следующая неделя
    • квартал: квартал
    • swap: постоянный
  • BitMEX:
    • XBTUSD
    • ETHUSD
  • Установленный модуль рычага

img

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

#Note: Backtesting is not supported.

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

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

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

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

Другие изделия из этой серии

  • Модуль визуализации для создания торговых стратегий - углубленный (https://www.fmz.com/digest-topic/9509) Визуализационный модуль для создания торговой стратегии - Первое знакомство (https://www.fmz.com/bbs-topic/9814) Заскучающее программирование можно легко завершить с помощью строительных блоков.

Связанные

Больше