การใช้กฎร่วมกับฟังก์ชันกำหนดขนาดคำสั่งซื้อขาย
ใน quantstrat ปริมาณสินทรัพย์ที่ทำธุรกรรมอาจไม่ได้เป็นจำนวนหุ้นคงที่เสมอไป โครงสร้างที่ช่วยให้ quantstrat ปรับจำนวนหุ้นที่ซื้อหรือขายได้แบบยืดหยุ่นเรียกว่า order sizing functions (ฟังก์ชันกำหนดขนาดคำสั่งซื้อขาย) เนื่องจากการเขียนฟังก์ชันนี้ขึ้นมาเองต้องใช้ syntax เพิ่มเติมค่อนข้างมาก การสร้างจากศูนย์จึงอยู่นอกเหนือขอบเขตของคอร์สนี้
อย่างไรก็ตาม การนำฟังก์ชันที่เขียนไว้แล้วมาใช้งานนั้นไม่ซับซ้อน สิ่งแรกที่ควรทราบคือ เมื่อใช้ order sizing function อาร์กิวเมนต์ orderqty จะไม่มีผลอีกต่อไป เพราะปริมาณคำสั่งจะถูกกำหนดโดยฟังก์ชันนั้นแทน การเรียกใช้ order sizing function ผ่าน add.rule() ทำได้ตรงไปตรงมา โดยอินพุตของฟังก์ชันจะถูกผสมรวมกับอาร์กิวเมนต์อื่น ๆ ที่ใช้งานมาตลอดบทนี้
ในแบบฝึกหัดนี้ จะใช้อาร์กิวเมนต์ osFUN เพื่อระบุฟังก์ชันชื่อ osMaxDollar โดยส่งเป็น object ไม่ใช่ string ดังนั้นชื่อฟังก์ชันจึงไม่ต้องใส่เครื่องหมายคำพูด
อาร์กิวเมนต์เพิ่มเติมของฟังก์ชันนี้คือ tradeSize และ maxSize ซึ่งทั้งคู่ควรรับค่าจาก tradesize ที่กำหนดไว้ในบทก่อนหน้า โดยได้เตรียมค่านี้ไว้ใน workspace ของคุณแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเทรดหุ้นด้วย R
คำแนะนำการฝึกหัด
- คำสั่ง
add.rule()ที่ใช้ในแบบฝึกหัดก่อนหน้าแสดงอยู่ใน workspace แล้ว - เพิ่ม order sizing function เข้าไปในกฎนี้โดยระบุ
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")