R представляет собой язык программирования для статистических расчетов и график. Это бесплатно и может быть загружено в R-проект.
Во-первых, мы должны получить некоторые данные. Только данные, которые я обнаружил, необработанные данные из MTGOX и bitcoincharts. Таким образом я получил данные из bitcoincharts и отформатирован, так что я мог бы использовать его в пакете финансового анализа.
Код:
getMTGOX <- функция (дни) {
url1 = "http://bitcoincharts.com/t/trades.csv?symbol=mtgoxUSD"
URL2 = "&начать ="
url3 = "&конец ="
а = Sys.Date ()
б = as.POSIXlt (а) #Convert к UnixTime
время = дней * 86400
Прошедшие = Ь - время
с = Ь - 0
вместе = Sprintf ("% S% s% d% s% d", Url1, URL2, прошлое, url3, с)
Данные = read.csv (вместе, заголовок = FALSE)
COLNAMES (данные)<-c ("время","цена","объем") имена столбцов # Сменить
данные $ = время as.POSIXct (данные $ время, происхождение ="1970-01-01") # Сменить формат времени
возврат (данные)
}
url1 = "http://bitcoincharts.com/t/trades.csv?symbol=mtgoxUSD"
URL2 = "&начать ="
url3 = "&конец ="
а = Sys.Date ()
б = as.POSIXlt (а) #Convert к UnixTime
время = дней * 86400
Прошедшие = Ь - время
с = Ь - 0
вместе = Sprintf ("% S% s% d% s% d", Url1, URL2, прошлое, url3, с)
Данные = read.csv (вместе, заголовок = FALSE)
COLNAMES (данные)<-c ("время","цена","объем") имена столбцов # Сменить
данные $ = время as.POSIXct (данные $ время, происхождение ="1970-01-01") # Сменить формат времени
возврат (данные)
}
Когда getMTGOX () вызывается. Просто введите количество дней, которые вы хотите использовать в данных. Например, если вы хотите 200 дней введите:
Код:
Икс <- getMTGOX (200)
Эта функция не учитывает торговлю, которая происходит сегодня. Он использует вчера в последний торговый день.
Если вы хотите включить в текущую торговлю затем использовать:
Код:
getMTGOXcurrent <- функция (дни) {
url1 = "http://bitcoincharts.com/t/trades.csv?symbol=mtgoxUSD"
URL2 = "&начать ="
а = Sys.Date ()
б = as.POSIXlt (а) #Convert к UnixTime
время = дней * 86400
Прошедшие = Ь - время
вместе = Sprintf ("% S% s% d", Url1, URL2, мимо)
Данные = read.csv (вместе, заголовок = FALSE)
COLNAMES (данные)<-c ("время","цена","объем") имена столбцов # Сменить
данные $ = время as.POSIXct (данные $ время, происхождение ="1970-01-01") # Сменить формат времени
возврат (данные)
}
url1 = "http://bitcoincharts.com/t/trades.csv?symbol=mtgoxUSD"
URL2 = "&начать ="
а = Sys.Date ()
б = as.POSIXlt (а) #Convert к UnixTime
время = дней * 86400
Прошедшие = Ь - время
вместе = Sprintf ("% S% s% d", Url1, URL2, мимо)
Данные = read.csv (вместе, заголовок = FALSE)
COLNAMES (данные)<-c ("время","цена","объем") имена столбцов # Сменить
данные $ = время as.POSIXct (данные $ время, происхождение ="1970-01-01") # Сменить формат времени
возврат (данные)
}
Эта функция загружает данные, помещает его в dataframe, делают некоторые имена столбцов, форматирует UnixTime в POSIX, а затем возвращает фрейм данных.
Теперь то, что мы можем сделать с этими данными?
Я хотел бы использовать Quantmod библиотека для моделирования финансовых торгов и график. (Установка пакетов просто. Если вы не знаете, как отправить ответ, и я могу направить вас.) Вы можете получить предварительный просмотр того, что может сделать quantmod Вот.
Сейчас данные как данные тикер. Мы могли бы запустить его в quantmod, но мы не сможем сделать интересные вещи, как технические индикаторы. Таким образом, мы должны изменить его в формат, он может использовать очень хорошо. Используйте следующую функцию, чтобы изменить текущие данные, загруженные из bitconcharts.com в формате OHLCV (Open, High, Low, Close, Volume).
Код:
OHLC <- функция (TTIME, tprice, tvolume, FMT)
{
ttime.int <- формат (TTIME, FMT)
data.frame (время = TTIME [tapply (1: длина (TTIME), ttime.int, функция (х) {головка (х, 1)})],
.Открытый = tapply (tprice, ttime.int, функция (х) {головка (х, 1)}),
.Высокий = tapply (tprice, ttime.int, макс),
.Низкий = tapply (tprice, ttime.int, мин),
.Закрыть = tapply (tprice, ttime.int, функция (х) {хвост (х, 1)}),
.Объем = tapply (tvolume, ttime.int, функция (х) {сумма (х)}),
.Скорректированная = tapply (tprice, ttime.int, функция (х) {хвост (х, 1)}))
}
{
ttime.int <- формат (TTIME, FMT)
data.frame (время = TTIME [tapply (1: длина (TTIME), ttime.int, функция (х) {головка (х, 1)})],
.Открытый = tapply (tprice, ttime.int, функция (х) {головка (х, 1)}),
.Высокий = tapply (tprice, ttime.int, макс),
.Низкий = tapply (tprice, ttime.int, мин),
.Закрыть = tapply (tprice, ttime.int, функция (х) {хвост (х, 1)}),
.Объем = tapply (tvolume, ttime.int, функция (х) {сумма (х)}),
.Скорректированная = tapply (tprice, ttime.int, функция (х) {хвост (х, 1)}))
}
Код:
Икс <- getMTGOX (200)
x.1day <- OHLC (х $ время, х $ цена, $ х объем,"% Y% м% д")
x.1day <- OHLC (х $ время, х $ цена, $ х объем,"% Y% м% д")
Мы до сих пор не сделано.
Код:
x.1day <- XTS (х [, - 1], order.by = х [1])
x.1day <- as.xts (x.1day)
x.1day <- as.xts (x.1day)
После выполнения, которые входят:
Код:
ChartSeries (x.1day)
и получайте удовольствие моделирования!