สร้าง Indicator ของตัวเอง - I
จนถึงตอนนี้ คุณได้ใช้ indicator ที่เขียนไว้ล่วงหน้าทั้งหมดผ่านฟังก์ชัน add.indicator() แล้ว ถึงเวลาเขียนและนำ indicator ของตัวเองไปใช้กันบ้าง
ฟังก์ชัน indicator ที่จะสร้างนี้จะคำนวณค่าเฉลี่ยของ indicator สองตัวเพื่อสร้าง RSI ที่มีค่า 3.5 โดยมีขั้นตอนดังนี้
รับ price series เข้ามา
คำนวณ RSI 3
คำนวณ RSI 4
คืนค่าเฉลี่ยของ RSI 3 และ RSI 4
RSI นี้เปรียบได้กับ RSI 3.5 เนื่องจากยาวกว่า RSI 3 แต่สั้นกว่า RSI 4 การหาค่าเฉลี่ยทำให้ indicator ตัวนี้คำนึงถึงผลกระทบของข้อมูล 4 วันที่ผ่านมา ในขณะที่ยังตอบสนองได้เร็วกว่า RSI 4 แบบธรรมดา และช่วยลด noise ของทั้ง RSI 3 และ RSI 4 ไปพร้อมกัน
ในแบบฝึกหัดนี้ คุณจะสร้างฟังก์ชันสำหรับ indicator ดังกล่าวชื่อ calc_RSI_avg() และเพิ่มเข้าไปในกลยุทธ์ strategy.st โดยทุก package ที่จำเป็นได้ถูกโหลดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเทรดหุ้นด้วย R
คำแนะนำการฝึกหัด
- สร้างและตั้งชื่อฟังก์ชันว่า
calc_RSI_avgโดยมีสามอาร์กิวเมนต์ตามลำดับดังนี้price,n1และn2 - คำนวณ RSI ที่มีช่วงย้อนหลัง
n1แล้วตั้งชื่อว่าRSI_1 - คำนวณ RSI ที่มีช่วงย้อนหลัง
n2แล้วตั้งชื่อว่าRSI_2 - คำนวณค่าเฉลี่ยของ
RSI_1และRSI_2แล้วตั้งชื่อว่าRSI_avg - กำหนดชื่อคอลัมน์ของ
RSI_avgเป็นRSI_avgโดยใช้ colnames() จากนั้น returnRSI_avg - เพิ่ม indicator นี้เข้าไปในกลยุทธ์โดยใช้ค่า
n1 = 3และn2 = 4แล้วตั้ง label ของ indicator นี้ว่าRSI_3_4
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Write the calc_RSI_avg function
calc_RSI_avg <- function(price, n1, n2) {
# RSI 1 takes an input of the price and n1
RSI_1 <- RSI(price = price, n = ___)
# RSI 2 takes an input of the price and n2
RSI_2 <- RSI(price = price, n = ___)
# RSI_avg is the average of RSI_1 and RSI_2
RSI_avg <- (___ + ___)/2
# Your output of RSI_avg needs a column name of RSI_avg
colnames(RSI_avg) <- "___"
return(___)
}
# Add this function as RSI_3_4 to your strategy with n1 = 3 and n2 = 4
add.indicator(strategy.st, name = ___, arguments = list(price = quote(Cl(mktdata)), n1 = ___, n2 = ___), label = ___)