Mengakses Data Bitcoin dengan R

Data perdagangan bitcoin disediakan oleh beberapa website seperti https://www.bitstamp.net/ dan https://poloniex.com/. Untuk memudahkan dalam mengunduh data historis perdagangan tersebut dapat menggunakan platform yang disediakan oleh Quandl.

Quandl adalah platform penyedia data finansial, ekonomi, dan alternatif yang melayani kebutuhan para profesional investasi. Quandl memiliki sumber data pada lebih dari 500 penerbit yang dapat diakses menggunakan API. Salah satu kelebihan Quandl adalah data dapat diakses langsung menggunakan beberapa bahasa seperti R, python, MATLAB, dan lainnya.

Untuk menggunakan jasa Quandl, maka langkah pertama adalah membuat akun di Quandl. Lakukan konfirmasi akun melalui email untuk mengaktifkan akun yang telah dibuat. Masing-masing akun akan memiliki API key yang terdapat pada account setting.

Lakukan install package Quandl pada R install.packages("Quandl"), kemudian panggil package tersebut yaitu

library(Quandl)
## Warning: package 'Quandl' was built under R version 3.4.4
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

Langkah selanjutnya adalah mengatur API yang kita miliki masing-masing. Salin kunci API dari account setting, kemudian atur dalam R dengan sintaks Quandl.api_key("PUT YOUR API KEY HERE").

Sintaks yang digunakan untuk mengunduh data yaitu my data <- Quandl("Quandl data code", start_date="", end_date=""). Ketika kita mencari suatu data menggunakan kolom pencarian dalam Quandl, maka akan muncul Quandl data code untuk mengakses data yang dicari. Berikut adalah contoh untuk mengunduh data perdagangan bitcoin dengan mata uang USD dalam satu tahun:

btc <- Quandl("BITSTAMP/USD", start_date="2017-06-26", end_date="2018-06-26")
head(btc, 10)
##          Date    High     Low    Last     Bid     Ask    Volume    VWAP
## 1  2018-06-26 6277.00 6103.00 6163.52 6155.30 6163.42  7154.787 6195.70
## 2  2018-06-25 6365.34 6075.01 6238.50 6230.49 6238.50  9867.416 6203.13
## 3  2018-06-24 6255.05 5780.00 6150.49 6149.60 6154.62 11316.417 5986.36
## 4  2018-06-23 6261.00 6035.19 6202.21 6199.64 6202.20  4593.342 6133.39
## 5  2018-06-22 6737.97 5940.00 6084.17 6082.10 6084.17 18507.901 6287.93
## 6  2018-06-21 6792.20 6677.85 6720.85 6717.21 6724.85  4816.141 6732.55
## 7  2018-06-20 6809.26 6558.95 6740.00 6740.00 6742.79  5203.131 6679.43
## 8  2018-06-19 6841.81 6660.21 6729.87 6720.71 6726.95  5415.705 6731.18
## 9  2018-06-18 6793.00 6381.25 6709.59 6702.75 6709.59  6098.981 6545.65
## 10 2018-06-17 6575.35 6450.00 6488.29 6479.61 6491.56  2690.645 6513.31

Nama kolom dan dimensi dari data:

colnames(btc)
## [1] "Date"   "High"   "Low"    "Last"   "Bid"    "Ask"    "Volume" "VWAP"
dim(btc)
## [1] 363   8

Analisis Teknis

Dalam melakukan analisis teknis produk finansial, terdapat beberapa package yang dapat digunakan seperti quantmod, TTR maupun ftrading. Dalam artikel ini, digunakan package TTR. Lakukan instalasi install.packages("TTR"). Fungsi-fungsi yang berada dalam package tersebut dapat dilihat dengan perintah:

library(TTR)
ls("package:TTR")
##  [1] "adjRatios"          "ADX"                "ALMA"              
##  [4] "aroon"              "ATR"                "BBands"            
##  [7] "CCI"                "chaikinAD"          "chaikinVolatility" 
## [10] "CLV"                "CMF"                "CMO"               
## [13] "DEMA"               "DonchianChannel"    "DPO"               
## [16] "DVI"                "EMA"                "EMV"               
## [19] "EVWMA"              "getYahooData"       "GMMA"              
## [22] "growth"             "HMA"                "KST"               
## [25] "lags"               "MACD"               "MFI"               
## [28] "momentum"           "naCheck"            "OBV"               
## [31] "PBands"             "ROC"                "rollSFM"           
## [34] "RSI"                "runCor"             "runCov"            
## [37] "runMAD"             "runMax"             "runMean"           
## [40] "runMedian"          "runMin"             "runPercentRank"    
## [43] "runSD"              "runSum"             "runVar"            
## [46] "SAR"                "SMA"                "SMI"               
## [49] "SNR"                "stoch"              "stockSymbols"      
## [52] "TDI"                "TRIX"               "ultimateOscillator"
## [55] "VHF"                "VMA"                "volatility"        
## [58] "VWAP"               "VWMA"               "wilderSum"         
## [61] "williamsAD"         "WMA"                "WPR"               
## [64] "ZigZag"             "ZLEMA"

Analisis teknis adalah alat perdagangan yang digunakan untuk mengevaluasi sekuritas dan mengidentifikasi peluang perdagangan dengan menganalisis statistik yang dikumpulkan dari aktivitas perdagangan, seperti pergerakan harga dan volume.

Analis teknis berfokus pada grafik pergerakan harga dan berbagai alat analitis untuk mengevaluasi kekuatan atau kelemahan keamanan.

Analis teknis percaya aktivitas perdagangan masa lalu dan perubahan harga sekuritas adalah indikator keamanan yang lebih baik dari kemungkinan pergerakan harga masa depan daripada nilai intrinsik dari sekuritas.

Moving Average

Moving average terdapat bermacam-macam bentuk, tetapi tujuan dasarnya tetap sama: untuk membantu trader melacak tren aset keuangan dengan menghaluskan fluktuasi harga sehari-hari, atau noise.

Dengan mengidentifikasi tren, moving average memungkinkan trader untuk membuat tren tersebut bekerja sesuai keinginan mereka dan meningkatkan jumlah perdagangan yang menang.

Simple Moving Average (SMA)

sma5 <- SMA(btc$Last, n=5)
sma20 <- SMA(btc$Last, n=20)
head(sma5, n=10)
##  [1]       NA       NA       NA       NA 6167.778 6279.244 6379.544
##  [8] 6495.420 6596.896 6677.720
plot(btc$Last, type="l")
lines(sma5, col="red")
lines(sma20, col="blue")
legend("topright", legend = c("BTC", "SMA(5)", "SMA(20)"), bty = "n", col = c("black", "red", "blue"), lty = 1)

# Exponential Moving Average (EMA)

ema20 <- EMA(btc$Last, ratio = 0.5)
head(ema20, n=10)
##  [1]       NA       NA 6184.170 6193.190 6138.680 6429.765 6584.882
##  [8] 6657.376 6683.483 6585.887
plot(btc$Last, type="l")
lines(sma20, col="red")
lines(ema20, col="blue")

Bollinger Bands

Bollinger Bands dikembangkan oleh trader terkenal John Bollinger, adalah plot dua standar deviasi dari simple moving average (SMA).

bb20 <- BBands(btc$Last, sd = 2)
head(bb20, n=25)
##             dn     mavg       up      pctB
##  [1,]       NA       NA       NA        NA
##  [2,]       NA       NA       NA        NA
##  [3,]       NA       NA       NA        NA
##  [4,]       NA       NA       NA        NA
##  [5,]       NA       NA       NA        NA
##  [6,]       NA       NA       NA        NA
##  [7,]       NA       NA       NA        NA
##  [8,]       NA       NA       NA        NA
##  [9,]       NA       NA       NA        NA
## [10,]       NA       NA       NA        NA
## [11,]       NA       NA       NA        NA
## [12,]       NA       NA       NA        NA
## [13,]       NA       NA       NA        NA
## [14,]       NA       NA       NA        NA
## [15,]       NA       NA       NA        NA
## [16,]       NA       NA       NA        NA
## [17,]       NA       NA       NA        NA
## [18,]       NA       NA       NA        NA
## [19,]       NA       NA       NA        NA
## [20,] 5719.106 6653.305 7587.504 1.0407601
## [21,] 5730.177 6726.416 7722.654 0.9513550
## [22,] 5764.983 6789.755 7814.526 0.8491145
## [23,] 5812.528 6867.725 7922.922 0.8990604
## [24,] 5881.049 6938.765 7996.480 0.8234498
## [25,] 6000.918 7010.421 8019.923 0.7510492
btc.data <- data.frame(btc, bb20)
plot(btc.data$Last, col = "blue", type = "l", lwd = 1)
lines(btc.data$dn, col = "red", type = "l", lwd = 1)
lines(btc.data$up, col = "red", type = "l", lwd = 1)

Reference:
1. https://www.quandl.com
2. TradingGeek. 2014. “Technical Analysis with R” dipublish dalam http://www.tradinggeeks.net/2014/07/technical-analysis-with-r/ 3. https://www.investopedia.com/terms/t/technicalanalysis.asp