ПочатиПочніть безкоштовно

Реалізація правила з функцією визначення розміру ордера

У quantstrat обсяг активу в угоді не завжди є фіксованою кількістю фактичних акцій. Конструкції, що дозволяють quantstrat змінювати кількість куплених або проданих акцій, називаються функціями визначення розміру ордера (order sizing functions). Через значний обсяг додаткового синтаксису для створення коректної такої функції, написання власної з нуля виходить за межі цього курсу.

Використовувати вже реалізовану функцію визначення розміру ордера доволі просто. Перше, що варто знати: коли ви застосовуєте таку функцію, аргумент 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")
Редагувати та запускати код