Ở phiên bản 0.0.7 các hàm lấy dữ liệu đã có cải tiến hơn so với 0.0.6 đó là:
Nếu không truyền thời gian from, to vào các hàm tq_get_(), hàm số sẽ mặc định lấy dữ liệu chứng khoán trong 1 năm gần nhất. Việc này nhằm mục đích tạo thuận tiện hơn cho người dùng khi hầu hết trong các phân tích chúng ta đều muốn theo dõi dữ liệu trong thời gian gần nhất và ít nhất là 1 năm.
Chức năng stack bảng: Trong trường hợp người dùng không muốn trả về một list chứa các tibble object của từng mã chứng khoán theo mặc định mà muốn trả về một bảng duy nhất là stack của các tibble object trên thì có thể sử dụng chức năng này. Kết quả trả về sẽ là tibble object có thêm một cột mới là symbol để đánh dấu dữ liệu thuộc về mã nào. stack sẽ thuận tiện cho visualization với package của ggplot2.
Chức năng định dạng return.type: Do trong các model timeseries như ARIMA, ARMA, SARIMA, MA,… không chấp nhận định dạng tibble objects mà chỉ nhận các đầu vào là xts objects. Do đó người dùng sẽ không cần phải băng khoăn khi hồi qui model timeseries khi chỉ cần lựa chọn return.type=‘xts’ sẽ thu được kết quả là định dạng xts phù hợp với các model này.
Hiện tại tidyquant package có thể coi là một trong những package nổi tiếng nhất của R về quant cũng chưa hiểu tại sao chưa có các tính năng trên. Có thể các tác giả vẫn chưa nghĩ đến việc phát triển các tính năng này là cần thiết và thứ 2 là trong hệ sinh thái tidyverse chỉ làm việc với các data.frame nên việc chuyển sang định dạng ‘xts’ được coi như đi ngược với nguyên tắc của tidyverse. Tuy nhiên theo quan điểm của mình thì phát triển những tính năng này người dùng sẽ thấy thuận tiện hơn.
Cú pháp
tq_get(symbols,from,to,src="VND",minimal = TRUE,stack = FALSE,return.type='tibble',...)
tq_get_xts(symbols,from,to,src="VND",minimal = TRUE,stack = FALSE,...)
tq_getSymbols(symbols,from,to,src="VND",minimal = TRUE,stack = FALSE,return.type='tibble',...)
tq_get_single(symbols,from,to,src="VND",minimal = TRUE,stack = FALSE,return.type='tibble',...)
tq_get_vnd(symbol, from, to, src = 'VND', minimal = TRUE,...)
tq_get_cp68(symbol, from, to, src = 'VND', minimal = TRUE,...)
Giải thích arguments
symbol: Định dạng character, là mã chứng khoán cần lấy. symbols: Định dạng vector character, là các mã chứng khoán cần lấy. from: Định dạng character dạng yyyy-mm-dd, là ngày bắt đầu lấy giá. Mặc định là ngày hiện tại to: Định dạng character dạng yyyy-mm-dd, là ngày kết thúc lấy giá. Mặc định là ngày cách ngày hiện tại 1 năm src: Nguồn cần lấy, có 2 lựa chọn gồm ‘VND’ và ‘CP68’. Mặc định là VND. minimal: Giá trị logical mặc định là TRUE (lấy toàn bộ trường). Nếu FALSE sẽ chỉ lấy OLHCV. stack: Đối với trường hợp lấy nhiều mã. Nếu TRUE trả về dạng list. Nếu FALSE (mặc định) trả về một tibble object dạng stack được phân biệt dữ liệu các mã qua trường symbol. return.type: Lựa chọn định dạng trả về của từng mã chứng khoán là tibble object hay xts object.
Ví dụ
library(VNDS)
#lấy giá chứng khoán full các trường
(VND <- tq_get(symbol = "VND",
from = "2017-01-01",
to = "2018-01-01",
src = "VND",
minimal = FALSE))
## #VND from 2017-01-01 to 2018-01-01 already cloned
#lấy các trường chính gồm open, high, low, close, volume, adjust price và date (bỏ argument minimal)
(VND <- tq_get(symbol = "VND",
from = "2017-01-01",
to = "2018-01-01",
src = "VND"))
## Note: no visible binding for global variable '.'
## #VND from 2017-01-01 to 2018-01-01 already cloned
#Khi không truyền from, to sẽ mặc định lấy dữ liệu 1 năm gần nhất.
(VND <- tq_get(symbol = "VND"))
## #VND from 2017-05-11 to 2018-05-11 already cloned
#Khi muốn định dạng trả về là xts
(VND <- tq_get(symbol = "VND", from='2018-04-01',to='2018-05-11',return.type = 'xts'))
## #VND from 2018-04-01 to 2018-05-11 already cloned
## date open high low close volume adjusted
## 2018-04-02 "2018-04-02" "29.10" "29.80" "29.10" "29.55" "2141980" "28.506"
## 2018-04-03 "2018-04-03" "29.55" "31.55" "29.55" "31.30" "2845070" "30.194"
## 2018-04-04 "2018-04-04" "31.80" "32.00" "30.55" "30.90" "2649810" "29.808"
## 2018-04-05 "2018-04-05" "30.90" "31.20" "30.40" "31.20" "2145760" "30.098"
## 2018-04-06 "2018-04-06" "31.20" "32.75" "31.00" "32.55" "2301660" "31.400"
## 2018-04-09 "2018-04-09" "33.00" "34.00" "32.50" "34.00" "2422270" "32.799"
## 2018-04-10 "2018-04-10" "34.40" "34.40" "33.55" "33.65" "2593060" "32.461"
## 2018-04-11 "2018-04-11" "33.70" "34.10" "32.40" "32.80" "2303750" "31.641"
## 2018-04-12 "2018-04-12" "32.50" "33.50" "31.60" "33.50" "1522570" "32.316"
## 2018-04-13 "2018-04-13" "33.95" "34.20" "32.70" "33.20" "1210560" "32.027"
## 2018-04-16 "2018-04-16" "32.80" "33.50" "32.00" "33.00" " 942970" "31.834"
## 2018-04-17 "2018-04-17" "33.00" "33.50" "32.60" "33.10" "1307860" "31.930"
## 2018-04-18 "2018-04-18" "33.10" "33.65" "32.30" "32.30" "1603560" "31.159"
## 2018-04-19 "2018-04-19" "32.10" "32.30" "30.50" "31.60" "2133990" "30.483"
## 2018-04-20 "2018-04-20" "31.20" "31.90" "30.60" "31.60" " 887180" "30.483"
## 2018-04-23 "2018-04-23" "31.50" "31.50" "29.40" "29.40" "2464590" "28.361"
## 2018-04-24 "2018-04-24" "28.25" "28.95" "27.35" "27.35" "2445240" "26.384"
## 2018-04-26 "2018-04-26" "27.00" "27.10" "25.45" "25.45" "2334780" "24.551"
## 2018-04-27 "2018-04-27" "24.50" "27.20" "24.50" "27.20" "3198625" "26.239"
## 2018-05-02 "2018-05-02" "27.50" "27.90" "25.80" "26.20" "1353448" "25.274"
## 2018-05-03 "2018-05-03" "26.00" "27.15" "25.30" "27.10" "1389550" "26.142"
## 2018-05-04 "2018-05-04" "27.50" "27.70" "26.70" "26.80" "1005460" "25.853"
## 2018-05-07 "2018-05-07" "27.10" "28.45" "26.10" "28.45" "1104670" "27.445"
## 2018-05-08 "2018-05-08" "28.45" "28.70" "27.80" "28.30" "1088440" "27.300"
## 2018-05-09 "2018-05-09" "27.50" "27.50" "25.40" "25.40" "3388590" "25.400"
## 2018-05-10 "2018-05-10" "23.65" "25.00" "23.65" "23.65" "7057690" "23.650"
## 2018-05-11 "2018-05-11" "22.00" "25.30" "22.00" "25.30" "2888280" "25.300"
#Hoặc có thể sử dụng tq_get_xts(symbol='VND') hàm này luốn mặc định trả về định dạng xts
#Lấy về nhiều mã chứng khoán. Mặc định sẽ trả về 1 list:
(list_stocks <- tq_get(symbol = c("VND","SSI")))
## #VND from 2017-05-11 to 2018-05-11 already cloned #SSI from 2017-05-11 to 2018-05-11 already cloned
## $VND
## # A tibble: 246 x 7
## date open high low close volume adjusted
## <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2018-05-11 22.0 25.3 22.0 25.3 2888280 25.3
## 2 2018-05-10 23.6 25.0 23.6 23.6 7057690 23.6
## 3 2018-05-09 27.5 27.5 25.4 25.4 3388590 25.4
## 4 2018-05-08 28.4 28.7 27.8 28.3 1088440 27.3
## 5 2018-05-07 27.1 28.4 26.1 28.4 1104670 27.4
## 6 2018-05-04 27.5 27.7 26.7 26.8 1005460 25.9
## 7 2018-05-03 26.0 27.2 25.3 27.1 1389550 26.1
## 8 2018-05-02 27.5 27.9 25.8 26.2 1353448 25.3
## 9 2018-04-27 24.5 27.2 24.5 27.2 3198625 26.2
## 10 2018-04-26 27.0 27.1 25.4 25.4 2334780 24.6
## # ... with 236 more rows
##
## $SSI
## # A tibble: 250 x 7
## date open high low close volume adjusted
## <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2018-05-11 34.0 34.6 33.3 34.6 5007300 34.6
## 2 2018-05-10 35.5 35.8 34.0 34.3 4509990 34.3
## 3 2018-05-09 35.7 36.2 35.4 35.8 4540570 35.8
## 4 2018-05-08 36.0 36.8 35.8 35.8 17141450 35.8
## 5 2018-05-07 34.9 36.6 34.0 36.4 3820060 36.4
## 6 2018-05-04 35.5 35.6 34.1 34.2 2624670 34.2
## 7 2018-05-03 34.3 35.4 32.7 35.0 5468480 35.0
## 8 2018-05-02 36.3 36.4 34.7 34.8 3753890 34.8
## 9 2018-04-27 34.3 36.7 34.3 36.0 5390690 36.0
## 10 2018-04-26 37.4 37.4 34.8 34.8 10948440 34.8
## # ... with 240 more rows
#Các bảng trong list trả về sẽ có định dạng là tibble objects. Do đó muốn trả về dạng xts thì cần thêm return.type = 'xts'
(list_stocks <- tq_get(symbol = c("VND","SSI"), return.type='xts'))
## #VND from 2017-05-11 to 2018-05-11 already cloned #SSI from 2017-05-11 to 2018-05-11 already cloned
## $VND
## # A tibble: 246 x 7
## date open high low close volume adjusted
## * <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2017-05-11 17.80 18.40 17.70 17.90 " 787336" 13.322
## 2 2017-05-12 18.00 18.20 17.80 17.90 " 817950" 13.322
## 3 2017-05-15 17.90 19.00 17.70 18.70 " 847661" 13.917
## 4 2017-05-16 18.80 19.00 18.10 18.10 " 592391" 13.472
## 5 2017-05-17 18.40 18.40 17.70 17.90 " 313225" 13.322
## 6 2017-05-18 17.90 18.50 17.70 18.00 " 768459" 13.396
## 7 2017-05-19 18.00 19.50 17.90 19.40 1825221 14.439
## 8 2017-05-22 20.00 21.10 18.90 19.30 1360450 14.364
## 9 2017-05-23 19.30 19.50 18.50 19.00 1384171 14.141
## 10 2017-05-24 18.80 19.80 18.50 19.00 1285244 14.141
## # ... with 236 more rows
##
## $SSI
## # A tibble: 250 x 7
## date open high low close volume adjusted
## * <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2017-05-11 23.70 24.25 23.60 23.70 " 4366460" 22.772
## 2 2017-05-12 24.00 24.10 23.40 23.50 " 3468570" 22.580
## 3 2017-05-15 23.50 24.30 23.50 24.00 " 4504810" 23.061
## 4 2017-05-16 24.40 24.75 23.70 23.70 " 4042840" 22.772
## 5 2017-05-17 23.60 24.15 23.60 24.10 " 3430800" 23.157
## 6 2017-05-18 23.95 25.10 23.90 24.50 10323810 23.541
## 7 2017-05-19 24.70 26.00 24.45 26.00 " 9441840" 24.982
## 8 2017-05-22 26.40 26.65 25.75 25.75 " 5328400" 24.742
## 9 2017-05-23 25.55 26.25 25.40 25.40 " 7999540" 24.406
## 10 2017-05-24 25.60 26.90 25.30 26.20 " 6913520" 25.175
## # ... with 240 more rows
#Muốn chuyển về dạng bảng stack
(stocks <- tq_get(symbol = c("VND","SSI"), stack = TRUE))
## #VND from 2017-05-11 to 2018-05-11 already cloned #SSI from 2017-05-11 to 2018-05-11 already cloned
#Lưu ý rằng bảng stack thì luôn có định dạng tibble objects vì dữ liệu sau khi đã stack nhiều mã chứng khoán sẽ không thể tạo index theo thời gian.
Bên cạnh các hàm visualization của version 0.0.6 như tq_candlechart() và tq_candlechart_symbol() và tq_candlechart_khanh() version này tích hợp thêm những biểu đồ trong tidyquant bao gồm:
geom_barchart(): Biểu diễn xu hướng giá open, high, low, close qua từng phiên theo barchart.
geom_candlestick(): Biểu diễn xu hướng giá open, high, low, close qua từng phiên theo candlechart.
geom_ma(): Thêm các đường moving average dựa vào công thức được định nghĩa trong ma_fun. Chẳng hạn như moving average theo SMA, EMA, WMA,….
geom_bbands(): Biếu diễn đường bollinger bands dựa vào chu kì và range biến thiên được qui định theo cấp số nhân của standard deviation.
Cú pháp
geom_barchart(open,high,low,close)
geom_candlestick(open,high,low,close)
geom_bbands(ma_fun, sd, n)
geom_ma(ma_fun, n)
Giải thích các Arguments
open, high, low, close: Giá mở, cao nhất, thấp nhất và đóng cửa.
n: Số phiên được sử dụng trong các công thức tính moving average.
sd: Độ rộng range của đường bollinger bands.
ma_fun: Công thức tính moving average.
Ngoài ra trong các hàm số trên còn có những thành phân khác tương tự như ggplot2 thể hiện định dạng đồ thị như linetype, color, size,…
Ví dụ
library(ggplot2)
library(dplyr)
library(TTR)
#Lấy chứng khoán VND 1 năm gần nhất
(VND <- tq_get('VND'))
## #VND from 2017-05-11 to 2018-05-11 already cloned
#Biểu đồ line chart
VND %>%
ggplot(aes(x = date, y = close)) +
geom_line() +
labs(title = "VND Line Chart", y = "Closing Price", x = "") +
theme_tq()
#Biếu đồ BarChart
VND %>%
ggplot(aes(x = date, y = close)) +
geom_barchart(aes(open = open, high = high, low = low, close = close)) +
labs(title = "VND Bar Chart", y = "Closing Price", x = "") +
theme_tq()
## Note: no visible binding for global variable 'xend'
## Note: no visible binding for global variable 'yend'
## Note: no visible binding for global variable 'x'
## Note: no visible binding for global variable 'y'
#Muốn zoom kết quả trong khoảng 30 ngày gần nhất thì dùng coord_x_date()
endate <- Sys.Date()-1
VND %>%
ggplot(aes(x = date, y = close)) +
geom_barchart(aes(open = open, high = high, low = low, close = close)) +
labs(title = "VND Bar Chart", y = "Closing Price", x = "") +
coord_x_date(xlim = c(endate, endate-30),ylim=c(10,35)) +
theme_tq()
#Điều chỉnh lại màu sắc cho tăng/giảm và kích thước theo color_up color_down và size
VND %>%
ggplot(aes(x = date, y = close)) +
geom_barchart(aes(open = open, high = high, low = low, close = close),
color_up = 'green', color_down = 'blue', size = 1) +
labs(title = "VND Bar Chart", y = "Closing Price", x = "") +
coord_x_date(xlim = c(endate-30, endate),ylim=c(10,35)) +
labs(
title = "VND Bar Chart",
subtitle = 'Zoomed in chart in 30 days'
) +
theme_tq()
#Biểu đồ nến
VND %>% ggplot(aes(x = date, y = close)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close),
color_up = 'green', color_down = 'blue', size = 1) +
labs(title = "VND Bar Chart", y = "Closing Price", x = "") +
labs(
title = "VND Candle Chart"
) +
theme_tq()
#Tương tự muốn zoom lên trong 30 ngày gần nhất
VND %>% ggplot(aes(x = date, y = close)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close),
color_up = 'green', color_down = 'blue', size = 1) +
labs(title = "VND Bar Chart", y = "Closing Price", x = "") +
coord_x_date(xlim = c(endate-30,endate),ylim=c(10,35)) +
labs(
title = "VND Candle Chart"
) +
theme_tq()
#Vẽ nhiều chart của các mã chứng khoán trên cùng một đồ thị
#Lấy 4 mã chứng khoán thuộc ngành chứng khoán đã được stack thành 1 bảng
(stocks <- tq_get(c('VND','SSI','HCM','VCI'), stack = TRUE))
## #VND from 2017-05-11 to 2018-05-11 already cloned #SSI from 2017-05-11 to 2018-05-11 already cloned #HCM from 2017-05-11 to 2018-05-11 already cloned #VCI from 2017-05-11 to 2018-05-11 already cloned
#Biểu đồ candel chart trên cùng 1 đồ thị
stocks %>%
ggplot(aes(x = date, y = close, group = symbol)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close)) +
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
theme_tq()
# Sử dụng hàm facet_wrap() để chia ra làm 4 đồ thị tương tự như trong ggplot2
stocks %>%
ggplot(aes(x = date, y = close, group = symbol)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close)) +
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Thêm đường moving average có độ dài chu kì n = 15 cho các mã chứng khoán này bằng hàm geom_ma()
stocks %>%
ggplot(aes(x = date, y = close, group = symbol)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close)) +
geom_ma(ma_fun = SMA, n = 15, color = "darkblue", size = 1) +
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Thêm đường moving average có độ dài chu kì n = 50
stocks %>%
ggplot(aes(x = date, y = close, group = symbol)) +
geom_candlestick(aes(open = open, high = high, low = low, close = close)) +
geom_ma(ma_fun = SMA, n = 15, color = "darkblue", size = 1) +
geom_ma(ma_fun = SMA, n = 50, color = "red", size = 1) +
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Như chúng ta đã biết Bollinger Band là một đường rất quan trọng cho biết ngưỡng giá trị của một chỉ số chứng khoán. Trong VNDS chúng ta có thể sử dụng geom_bbands() để add thêm đường này vào biểu đồ. Lưu ý là cả geom_candlestick() và geom_bbands() đều sử dụng các giá trị high, low, close prices để làm input nên chúng ta phải đặt các dữ liệu này ở ggplot() để geom_candlestick() và geom_bbands() có thể cùng sử dụng.
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
## Note: no visible binding for global variable 'x'
## Note: no visible binding for global variable 'x'
## Note: no visible binding for global variable 'ymax'
## Note: no visible binding for global variable 'ymin'
#Trong phân tích chứng khoán, yếu tố mà nhà đầu tư quan tâm hàng đầu đó là trendline của các chuỗi chứng khoán. ChÚng ta có thể thêm các đường trendline của regression thông qua geom_smooth()
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
geom_smooth(method='lm')+
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Lựa chọn cơ bản nhất là trendline dạng linear (lm). Ngoài ra còn có các lựa chọn khác như generalized multiple regession (glm), generalized addictive model (gam), local regression model (loess) hoặc tự qui định công thức thông qua argument formula của geom_smoothing()
#Sử dụng trend trong local regression model
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
geom_smooth(method='loess')+
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Sử dụng trend theo công thức hồi qui đa thức tự định nghĩa.
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
geom_smooth(formula = y ~ poly(x,2)+x)+
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Ta thấy công thức trend theo đa thức bậc 2 không chuẩn xác lắm vì đường trend không bám sát với giá. Sử dụng công thức y = log(x) để biểu diễn trend.
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
geom_smooth(formula = y ~ log(x))+
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq()
#Chúng ta cũng có thể thay đổi theme cho đồ thị để trông đẹp mắt hơn
#theme_dark()
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
geom_smooth(formula = y ~ log(x))+
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_dark()
#theme_tq_green()
stocks %>%
ggplot(aes(x = date, y = close, open = open, high = high, low = low, close = close, group = symbol)) +
geom_candlestick() +
geom_bbands(ma_fun = SMA, sd = 2, n=20) +
geom_smooth(formula = y ~ log(x))+
labs(title = "Stock sector Candlestick Chart",
subtitle = 'Experimenting with Multiple Stocks',
y = "Closing Price",
x = "") +
coord_x_date(xlim = c(endate-180, endate-40)) +
facet_wrap(~ symbol, ncol = 2, scale = "free_y") +
theme_tq_green()
Như vậy chúng ta có thể thấy về mặt visualization VNDS package version 0.0.7 đã có sự cải tiến hơn so với 0.0.6 ở những điểm sau:
Visualize theo các dạng chart type khác nhau như candle chart, bar chart.
Biểu diễn nhiều chuỗi giá khác nhau trên cùng 1 đồ thị.
Biểu diễn các đường trend line theo các dạng moving average, bollinger band và đường trend line tự định nghĩa để theo dõi xu hướng trend của chuỗi giá.
Trên phương diện thẩm mỹ thì các đồ thị này có thể thay đổi được nhiều kiểu theme và màu sắc các phiên tăng giảm đã được tùy chỉnh theo ý người sử dụng.
Tuy nhiên một điểm hạn chế đó là ngoài các đồ thị biểu diễn trong version 0.0.6 đã loại bỏ được các ngày nghỉ lễ thì ở version 0.0.7 vẫn chưa hoàn thành được điều này.