Мы изучили модуль визуализации для создания торговой стратегии - Первое знакомство, и у нас есть концептуальное понимание визуального модуля строительства и сплайсинга, Далее легко научиться использовать другие модули. Можно объединить несколько более сложных функций.
В предыдущем обучении и тестировании мы познакомились с несколькими модулями
Они уже использовались, не будут повторяться здесь.
При написании стратегий для использования торговли роботами, вы можете добавить более одного объекта обмена, например, стратегии хеджирования. Или вам нужно пройти через обменные объекты, чтобы получить доступ к рынку. Вот где в игру вступает модуль для получения количества обменов.
Мы можем напечатать количество настраиваемых обменов в простой структуре:
На самом деле, это похоже на вызов такого кода стратегии JavaScript:
function main () {
Log(exchanges.length)
}
Давайте посмотрим на результаты работы этого комбинированного модуля:
Мы можем видеть, что мы добавили три обменных объекта, представляющих три разных обменных счета, и выходный результат журнала обратного теста составляет 3.
При добавлении трех обменных объектов в выпадающем окне отображаются три варианта. Заранее выучите модуль петли в типе петли.
Узнайте модуль оценки состояния заранее:
Условия суждения можно записать следующим образом:
Мы используем модуль петли для прохождения добавленных имен обмена. Мы используем модуль Condition Judgment, чтобы судить, соответствует ли текущее количество петль названию обмена, которое будет напечатано.
Результаты обратных испытаний:
Как код стратегии 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())
}
}
}
Простым примером является получение торговой пары первого обменного объекта, установленного в настоящее время, и назначение ее текстовой переменной (созданной в категории переменных заранее).
Результаты обратных испытаний:
Если вы вызовете код стратегии JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
Этот модуль очень важен для операции с заказами. Первый тенон (конкавный) расположение встроено с переменной цены, которая используется для указания цены заказа. Вы также можете ввести фиксированное значение непосредственно. Второе положение ствола (конкавное) встроено в переменную количества заказов, которая используется для указания количества заказов.
Например, мы объединим пример размещения ордера на покупку при добавлении скользящей цены 10 юаней на основе последней цены текущих данных рынка клещей, с количеством ордера, установленным на 0,1 монеты, и распечатаем идентификатор ордера.
Результаты обратных испытаний:
Например, следующий код стратегии JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
Этот модуль возвращает все ожидающие ордера в незавершенном состоянии текущей торговой пары. Он возвращает структуру списка (массив), которая может быть обработана модулем типа списка (проходная операция и т. Д.).
Например, мы немного изменили вышеприведенный примерный модуль заказа[4] и изменили цену 10 юаней, добавленную при размещении заказа, до минус 10 юаней.
Затем мы используем модуль
Проверка показала:
Цена ордера на покупку была на 10 юаней ниже, чем последняя цена в то время, поэтому он не будет выполнен сразу. Затем получите заказ в статусе ожидающей транзакции, и распечатайте его. Наконец, исключение бросается, чтобы остановить программу.
Весь собранный модуль похож на вызов к стратегии JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
Этот модуль используется для отмены заказа.
Существует много сценариев, которые требуют таких операций при написании стратегий:
Отмените все текущие заказы.
При изучении модуля отмены ордера мы можем использовать [5] для получения ожидаемых ордеров текущего модуля торговой пары и объединить для достижения этой функции.
Во-первых, для того чтобы проверить отмену всех заказов, не очевидно разместить заказ. мы начинаем размещать 2 заказа, их цены и количества различны, чтобы отличить два заказа.
Используйте модуль
Во время прохождения каждый полученный порядок присваивается значение переменному порядку модуля (созданного в типе модуля переменного, как показано ниже:)
Используйте модуль
Вытащите идентификатор заказа, передайте его в положение
Операция обратного испытания:
Используйте описание стратегии 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))
}
}
Местоположение модуля соединено с модулем переменной ID заказа, и детали заказа могут быть возвращены.
Обратите внимание на порядок, возвращенный после запуска:
По сравнению с результатами выполнения в примере [5], можно обнаружить, что напечатанный заказ представляет собой отдельную информацию о заказе без скоб. Потому что пример [5] возвращает список, но этот пример возвращает отдельную информацию о порядке (полученную на основе модуля переменной ID на положении тенона, передаваемом модулем).
Приведенный выше пример похож на выполнение стратегии JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
Мы будем изучать вышеуказанные модули один за другим и мы установим тестовую биржу как товарные фьючерсы.
Настройки обратного тестирования:
В следующем примере выполняется обратная проверка на основе настроек.
Фьючерсы на сырьевые товары имеют время открытия и закрытия.
Если объект биржи настроен как фьючерсная биржа, если биржа не заключает контракт и получает информацию о рынке непосредственно, будет сообщаться об ошибке.
Мы установили контракт на MA909, главный контракт на метанол в настоящее время.
Таким образом, получается последняя стоимость цены на текущем рынке тика контракта MA909.
В модуле исполнения приказов
Необходимо указать направление ордера, поскольку фьючерсы имеют: покупка: открытые длинные позиции продать: открытые короткие позиции closebuy: закрытие длинных позиций close-sell: закрытие коротких позиций Четыре направления (для товарных фьючерсов есть еще два направления: 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("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
Использование фьючерсов на цифровые валюты в основном такое же, как и использование фьючерсов на сырьевые товары в [8] выше.
Он используется для установки рычага использования фьючерсов на цифровую валюту.
#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
Другие изделия из этой серии