เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

สร้าง 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() จากนั้น return RSI_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 = ___)
แก้ไขและรันโค้ด