執行你的策略
恭喜你在 quantstrat 中建立了策略!複習一下,你的策略使用了 3 個指標與 5 個訊號。這個策略要求 DVO_2_126 指標的臨界值低於 20,且 SMA50 大於 SMA200。當 DVO_2_126 向上穿越 80,或 SMA50 向下穿越 SMA200 時,策略會賣出。
為了讓這個策略正確運作,你設定了 5 個獨立的訊號:
sigComparison:檢查SMA50是否大於SMA200;sigThreshold:cross設為FALSE,檢查DVO_2_126是否小於 20;sigFormula:把上述條件綁在一起,並將cross設為TRUE;sigCrossover:檢查SMA50是否小於SMA200;以及sigThreshold:cross設為TRUE,檢查DVO_2_126是否大於 80。
策略會在每筆交易投入 $100,000(你的 initeq),若 DVO_2_126 在 20 附近震盪,可能會出現少量的平均攤平買入(不過相較於初始配置,影響大多可忽略)。
在本章最後,你會學到如何檢視投資組合的實際結果。不過在產生結果之前,你需要先執行策略,並補上一些樣板程式碼,讓 quantstrat 能完整記錄所有內容。這個練習中的程式碼,未來你也會需要複製貼上使用。
本練習屬於課程
R 的金融交易
練習說明
- 使用 applyStrategy() 將你的策略(
strategy.st)套用到你的投資組合(portfolio.st)。將結果存為物件out。 - 執行必要的函式來記錄策略結果,包括
updatePortf(),並設定daterange,以及updateAcct()和updateEndEq()。 - 根據這些資訊,試著找出最後一筆交易的日期。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Use applyStrategy() to apply your strategy. Save this to out
out <- applyStrategy(strategy = ___, portfolios = ___)
# Update your portfolio (portfolio.st)
updatePortf(___)
daterange <- time(getPortfolio(___)$summary)[-1]
# Update your account (account.st)
updateAcct(___, daterange)
updateEndEq(___)