A automação de tarefas é importante quando deseja-se executar um mesmo script de maneira regular. Nesse sentido o pacote taskscheduleR pode apoiar no agendamento de scripts feitos em R.
Como exemplo vamos supor que estamos interessados em decidir se devemos comprar ou vender uma ação no dia seguinte baseado no preço de fechamento dos dias anteriores usando um modelo de Máquinas de Suporte Vetorial.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #Limpa o Workspace rm (list= ls ()) #Chama a biblioteca library (devtools) library (quantmod) library (kernlab) #Instala o pacote taskscheduleR devtools:: install_github ( "jwijffels/taskscheduleR" ) #Chama a biblioteca taskscheduleR library (taskscheduleR) #Especifica as datas de interesse startDate = as.Date ( "2013-01-01" ) endDate = as.Date ( "2015-12-31" ) #Obtêm os dados do ativo PETR4 e PETR3 getSymbols ( "PETR4.SA" , src= "yahoo" ,from=startDate,to=endDate) #Faz o Candle Chart candleChart (PETR4.SA,theme= 'white' , type= 'candles' ) reChart (major.ticks= 'months' ,subset= 'first 16 weeks' ) |
O Candle Chart é apresentado a seguir:
Em seguida vamos treinar uma máquina para tentar apontar a direção do resultado futuro, isto é, se a ação irá apresentar um resultado positivo ou negativo:
1 2 3 4 5 6 7 8 | #Retorno do Preço de Fechamento ret<- na.omit ( ClCl (PETR4.SA)) #Direção do mercado y<- as.numeric ( ifelse (ret<0,0,1)) #Cria a base de dados df<- data.frame ( "Y" = c (y[-1], NA ), "X" =ret) #Renomeia as colunas colnames (df)<- c ( "Y" , "X" ) |
1 2 3 4 5 6 7 8 9 | #Constrói a máquina svm <- ksvm (Y~X,data=df, type= "C-svc" ,C=0.1, kpar= list (sigma=16),cross=3) #Faz a previsão pred<- kernlab:: predict (svm,df) #Compara com os valores reais table (pred,df$Y) #Salva a máquina treinada save.image ( "Maquina.RData" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #Chama a biblioteca library (quantmod) library (kernlab) #Lê a máquina criada load ( "Maquina.RData" ) #Obtêm a cotação atual getSymbols ( "PETR4.SA" , src= "yahoo" ) #Último retorno observado ret<- tail ( ClCl (PETR4.SA),1) #Faz a previsao para o dia previsao<-kernlab:: predict (svm,ret) #Monta o arquivo de saida fileConn<- file ( "Decisao.txt" ) writeLines ( ifelse (previsao==1, "Vender" , "Comprar" ), fileConn) close (fileConn) |
1 2 3 4 5 6 | #Faz o agendamento library (taskscheduleR) myscript <- system.file ( "saida" , "ScriptPrevisao.R" , package = "taskscheduleR" ) #O computador irá executar todo dia as 8:00AM taskscheduler_create (taskname = "DecisaoPETR4" , rscript = myscript, schedule = "DAILY" , starttime = "08:00" ) |
1 2 3 | #Deleta o agendamento library (taskscheduleR) taskscheduler_delete (taskname = "DecisaoPETR4" ) |