用委託部位大小函式實作規則
在 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")