開始使用免費開始

用委託部位大小函式實作規則

在 quantstrat 中,實際交易的資產數量不一定是固定股數。讓 quantstrat 能調整買賣股數的機制稱為 委託部位大小函式(order sizing functions)。由於自行撰寫一個完整的委託部位大小函式牽涉額外且繁瑣的語法,從零開始實作不在本課程範圍內。

不過,使用已寫好的委託部位大小函式相當直覺。首先要知道的是,當你使用委託部位大小函式時,orderqty 引數就不再適用,因為實際下單數量會由該函式決定。要在 add.rule() 呼叫中指定委託部位大小函式也很簡單。該函式所需的輸入會和本章一直以來使用的其他引數一起混合傳入。

在本練習中,你會使用 osFUN 引數指定名為 osMaxDollar 的函式。注意這不是以字串傳入,而是以物件傳入;差別在於委託部位大小函式的名稱不需要加上引號。

此函式的額外引數為 tradeSizemaxSize,兩者都應該帶入你先前章節定義的 tradesize。這個物件已提供在你的工作空間中。

本練習屬於課程

R 的金融交易

檢視課程

練習說明

  • 你的工作空間已列出先前練習使用的 add.rule() 指令。
  • 透過指定 osFUNtradeSizemaxSize,在這個規則中加入委託部位大小函式。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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")
編輯並執行程式碼