НачатьНачать бесплатно

Реализация правила с функцией определения объёма ордера

В quantstrat объём актива, участвующего в сделке, не всегда является фиксированным количеством акций. Конструкции, позволяющие quantstrat варьировать количество покупаемых или продаваемых акций, называются функциями определения объёма ордера. Самостоятельная реализация такой функции с нуля выходит за рамки данного курса — из-за сложного дополнительного синтаксиса.

Однако использовать готовую функцию определения объёма ордера достаточно просто. Важно знать: при работе с такой функцией аргумент orderqty больше не используется, поскольку объём ордера определяется самой функцией. Вызов функции определения объёма ордера внутри add.rule() не представляет особой сложности. Её входные параметры передаются вместе с остальными аргументами, с которыми вы работали на протяжении всей этой главы.

В данном упражнении вы используете аргумент osFUN, чтобы указать функцию osMaxDollar. Она передаётся не в виде строки, а как объект — то есть имя функции определения объёма ордера не нужно заключать в кавычки.

Дополнительные аргументы этой функции — tradeSize и maxSize — оба должны принимать значение tradesize, которое вы определили в одной из предыдущих глав. Оно уже доступно в вашем рабочем пространстве.

Это упражнение является частью курса

Финансовый трейдинг на R

Посмотреть курс

Инструкции к упражнению

  • Команда add.rule(), использованная в предыдущих упражнениях, выведена в вашем рабочем пространстве.
  • Добавьте функцию определения объёма ордера в это правило, указав аргументы osFUN, tradeSize и maxSize.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Add a rule that uses an osFUN to size an entry position
add.rule(strategy = strategy.st, name = "ruleSignal",
         arguments = list(sigcol = "longentry", sigval = TRUE, ordertype = "market",
                          orderside = "long", replace = FALSE, prefer = "Open",
                          
                          # Use the osFUN called osMaxDollar
                          osFUN = ___,
                          
                          # The tradeSize argument should be equal to tradesize (defined earlier)
                          tradeSize = ___,
                          
                          # The maxSize argument should be equal to tradesize as well
                          maxSize = ___),
         type = "enter")
Редактировать и запускать код