Trading with R (1) : Downloading and visualising stock data

เราได้พูดถึงการเขียนโปรแกรมด้วย Python มาหลายบทความแล้ว บทความนี้เราจะมานำเสนอการอีกหนึ่งภาษาที่นับว่าสำคัญไม่แพ้กันใน field ของ Data science นั่งก็คือ ภาษา R ซึ่งนับว่าเป็นภาษาที่มีประสิทธิภาพมากๆ ภาษาหนึ่ง โดยเฉพาะอย่างยิ่งในด้านการคำนวณทางคณิตศาสตร์

บทความชุดนี้ประกอบไปด้วยเนื้อหาหลักๆ 5  ส่วนด้วยกัน

  • Part 1: Download and visualise data
  • Part 2: Adding financial indicators
  • Part 3: Building trading strategy
  • Part 4: Tracking profit and loss
  • Part 5: Analysing portfolio

มาเริ่มกันที่  Part 1: Download and visualising data พัฒนาบนภาษา R version 3.2.3 ตัว Editor ที่ใช้คือ  Rstudio

Reading a dataset …

มาเริ่มกันที่การเรียกใช้งาน package และการดาวน์โหลดข้อมูลอย่างง่ายกันก่อน

1) Instal  และ เรียกใช้ package “Quantmod”

install.packages('quantmod')
library(quantmod)

ถ้ายังไม่เคยทำการลง package จะต้องใช้คำสั่งเพื่อ install ก่อน แต่ถ้าเคยลงไว้แล้ว ก็สามารถเลือกใช้ได้เลย ด้วยคำสั่ง library

2) Download dataset

getSymbols(‘BANPU.BK’,src=’yahoo’)

คำสั่ง getSymbols จะทำการดาวน์โหลดข้อมูลหุ้นที่เราต้องการ โดยที่เราสามารถกำหนด source ของข้อมูลได้ ในที่นี้เราจะโหลดข้อมูลออนไลน์จาก yahoo finance

เมื่อเรา Download ข้อมูลมาแล้ว เราสามารถเรียกดูข้อมูลได้ โดยการ Double clicks ที่ชื่อข้อมูลใน tab “Global environment” หรือ ใช้คำสั่ง “View(BANPU.BK)” ข้อมูลทั้งหมดจะถูกแสดง ดังนี้

screen-shot-2017-01-31-at-14-44-15
BANPU dataset

นอกจากจะเรียกดูข้อมูลทั้งหมดแล้ว เรายังสามารถเรียกดูข้อมูลบางส่วน เช่น ส่วนหัวและ ส่วนท้าย ของข้อมูลได้ ด้วยการพิมพ์คำสั่ง head(BANPU.BK) และ tail(BANPU.BK) ในส่วนของหน้าต่าง console

screen-shot-2017-01-31-at-14-49-43
Head and tail of BANPU.BK

3) เรียกดูค่า statistic ต่างๆ ของข้อมูล

summary(BANPU.BK)

ค่าทางสถิติพื้นฐานของข้อมูลสามารถเรียกดูได้ ด้วยคำสั่ง summary

screen-shot-2017-01-31-at-14-54-37

Reading multiple datasets …

หลังจากเราสามารถดาวน์โหลดข้อมูล 1 ชุดมาได้แล้ว ในส่วนต่อไป เรามาลองดูกันว่าถ้าเราต้องการจะโหลดข้อมูลมากกว่า 1 ชุด จะต้องทำอย่างไร

symbols_set getSymbols(symbols_set)

การโหลดข้อมูลเข้ามากกว่า 1  ชุด สามารถทำได้ง่ายๆ โดยการสร้าง list ของ symbols ที่เราต้องการ (list ของหุ้นที่เราต้องการดาวน์โหลด) และ ใช้คำสั่ง getSysmbols() เพื่ออ่านข้อมูลดาต้าของ symbol แต่ละตัวจนครบ เมื่ออ่านเรียบร้อยแล้ว ผลที่ได้ก็จะเป็นชุดข้อมูลทั้งหมด ดังนี้

screen-shot-2017-01-31-at-18-40-16

Data visualisation

เมื่อเราดาวน์โหลดข้อมูลได้แล้ว ต่อมาเราจะลองพล็อตเพื่อดูข้อมูลกัน ในที่นี้ขอเลือกใช้ข้อมูลในชุดของหุ้น BANPU.BK ที่เราได้โหลดไว้ในขั้นตอนแรกกันนะคะ

1) Plot ข้อมูลอย่างง่าย

plot(BANPU.BK)

คำสั่งนี้จะพล็อตข้อมูลในลักษณะของกราฟแบบง่ายๆ ในที่นี้ข้อมูล BANPU.BK มีด้วยกันทั้งหมด 6 คอลัมน์ คือ BANPU.BK.Open,BANPU.BK.High, BANPU.BK.Low, BANPU.BK.Close, BANPU.BK.Volumn, BANPU.BK.Adjusted คำสั่ง plot จะนำข้อมูลในคอลัมน์แรก คือ  BANPU.BK.Open มาเพื่อใช้ในการพล็อต

screen-shot-2017-01-31-at-19-45-31

ถ้าอยากจะให้คำสั่งนี้ พล็อตข้อมูลของคอลัมน์ที่ต้องการ ก็จะต้องมีการกำหนดคอลัมน์และแถวของข้อมูลที่ต้องการเข้าไปในคำสั่งด้วย เช่น ถ้าเราต้องการพล็อตข้อมูล Volume ดังนี้

plot(BANPU.BK[,’BANPU.BK.Volume’])

screen-shot-2017-01-31-at-22-18-41

2) Plot line graph โดยมีการกำหนด type

lineChart(BANPU.BK, line.type = ‘h’, theme = ‘white’, TA = NULL)

lineChart เป็นคำสั่ง พล็อตข้อมูลที่สามารถกำหนดรายละเอียดของกราฟที่เราต้องการได้ โดยการเปลี่ยนในส่วนของ line.type เช่น line.type = ‘l’ (กราฟเส้น) line.type =’h’ (กราฟที่มีลักษณะเหมือน histogram แนวตั้ง), line.type =’p’ (กราฟจุด), line.type=’o’ (การจุดและเส้น) เป็นต้น

screen-shot-2017-01-31-at-19-48-09

3) plot bar chart

barChart(BANPU.BK, bar.type = ‘hlc’, TA=NULL)

เราสามารถพล็อต bar chart ได้ โดยสามารถเลือกได้ว่า จะพล็อต bar chart ด้วยค่า hlc (high, low, close) หรือ จะใช้ ohlc (open, high, low, close) ในการพล็อต

screen-shot-2017-01-31-at-23-00-43

4) Candle Chart

candleChart(BANPU.BK, multi.col = TRUE, TA=NULL, subset=’2015′)

กราฟ candle chart พื้นฐานจะมีสีเทา และเราสามารถเลือกปีที่ต้องการพล็อตได้ ดังนี้

screen-shot-2017-01-31-at-23-03-25

จากรูปด้านบน เราอาจจะมองเห็น candle Chart ได้ไม่ชัด เพราะเป็นการพล็อตข้อมูลทั้งปี เดี๋ยวเราจะมาลอพล็อตข้อมูลแค่ 1  เดือนเพื่อให้เห็นภาพชัดในกราฟถัดไปกันดูค่ะ

ถ้าเราต้องการปรับแต่งค่าต่างๆ เพื่อให้ได้รูปแบบที่เราต้องการ สามารถกำหนดสี และ ช่วงข้อมูลได้ที่ต้องการได้ ดังนี้

candleChart(BANPU.BK, multi.col = TRUE, theme=’white’, TA=NULL, subset=’2015-01′)

screen-shot-2017-01-31-at-23-22-30

candleChart(BANPU.BK, theme=chartTheme(‘white’, up.col=’yellow’, dn.col=’darkred’), TA=NULL, subset=’2016′)

screen-shot-2017-01-31-at-23-27-36

การปรับแต่ง candle chart ยังมีให้เลือกเล่นได้อีกมากมายหลายแบบ ถ้าเราต้องการเรียกใช้ help เพื่อดูรายละเอียดการใช้งานของคำสั่ง สามารถทำได้โดย ใช้เครื่องหมาย “?” ตามด้วยคำสั่งที่เราต้องการเรียกดูคำอธิบาย เช่น ถ้าเราต้องการดูว่า คำสั่ง chartTheme ใช้งานอย่างไร เราสามารถเรียกดู help ได้ดังนี้

?chartTheme

ในบทความนี้ เราได้เรียนรู้วิธีการโหลดดาต้า และ การแสดงผลเบื้องต้นกันไปแล้ว ในบทความหน้า เราจะมาเริ่มต้นในส่วนของการเพิ่ม indicator เข้าไปในโปรแกรมกันค่ะ 🙂

13062103_233130583716199_6224283738921716075_n
Enjoy R programming!
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s