Nothing
util_getComputeTime<-function(time=c("timeMax","timeLeft")){
util_validate()
clientConnection=getOption('clientConnection')
requestToServer=.jnew("com.portfolioeffect.quant.client.RequestToServer")
result=requestToServer$getComputeTimeLeft(clientConnection)
result=result$getValueInt(time[1])
return(result)
}
util_POSIXTimeToDate<-function(time){
if(is.numeric(time)){
DateTimeUtil=.jnew("com.portfolioeffect.quant.client.util.DateTimeUtil")
time=.jcall(DateTimeUtil,returnSig='[S',method="POSIXTimeToDateStr",.jlong(time))
}
time
}
util_dateToPOSIXTime<-function(time){
if(!is.numeric(time)){
DateTimeUtil=.jnew("com.portfolioeffect.quant.client.util.DateTimeUtil")
check=1414818000000-.jcall(DateTimeUtil,returnSig='[J',method="toPOSIXTime",'2014-11-01 01:00:00')
time=.jcall(DateTimeUtil,returnSig='[J',method="toPOSIXTime",time)+check
}
time
}
util_screenshot<-function(path, delaySec=15){
Sys.sleep(delaySec)
J("com.portfolioeffect.quant.client.util.Screenshots")$takeScreenshot(path)
}
# util_setCredentials<-function(username,password,apiKey,hostname="quant07.portfolioeffect.com"){
# way<-switch(Sys.info()[['sysname']],
# Windows= {paste(Sys.getenv("APPDATA"),"\\ice9",sep="")},
# Linux = {paste(Sys.getenv("HOME"),"/.ice9",sep="")},
# Darwin = {paste(Sys.getenv("HOME"),"/.ice9",sep="")})
# way<-gsub("\\","/",way,fixed = T)
# way<-paste0(way, "/data")
# if (!file.exists(way)){
# dir.create(way,recursive=TRUE)
# }
# unlink(paste0(way,"/login.RData"), recursive = TRUE, force = FALSE)
# login<-c(username,password,apiKey,hostname)
# save(login, file=paste0(way, "/login.RData"))
# rm(login)
# if(!is.null(options('clientConnection')$clientConnection)){
# clientConnection=getOption('clientConnection')
# if(is.null(clientConnection)){
# options("clientConnection"=.jnew("com.portfolioeffect.quant.client.ClientConnection"))
# }
# .jcall(clientConnection,returnSig="V", method="setUsername",username)
# .jcall(clientConnection,returnSig="V", method="setPassword",password)
# .jcall(clientConnection,returnSig="V", method="setApiKey",apiKey)
# .jcall(clientConnection,returnSig="V", method="setHost",hostname)
# resultTemp=.jcall(clientConnection,returnSig="Lcom/portfolioeffect/quant/client/result/Metric;", method="restart")
# util_checkErrors(resultTemp)
# }
# util_validate()
# clientConnection=getOption('clientConnection')
# resultTemp=.jcall(clientConnection,returnSig="Lcom/portfolioeffect/quant/client/result/Metric;", method="restart")
# util_checkErrors(resultTemp)
# }
util_setCredentials<-function(username,password,apiKey,hostname="quant07.portfolioeffect.com"){
way<-switch(Sys.info()[['sysname']],
Windows= {paste(Sys.getenv("APPDATA"),"\\ice9",sep="")},
Linux = {paste(Sys.getenv("HOME"),"/.ice9",sep="")},
Darwin = {paste(Sys.getenv("HOME"),"/.ice9",sep="")})
way<-gsub("\\","/",way,fixed = T)
way<-paste0(way, "/data")
if (!file.exists(way)){
dir.create(way,recursive=TRUE)
}
unlink(paste0(way,"/login.RData"), recursive = TRUE, force = FALSE)
login<-c(username,password,apiKey,hostname)
save(login, file=paste0(way, "/login.RData"))
rm(login)
if(!is.null(options('clientConnection')$clientConnection)){
clientConnection=getOption('clientConnection')
if(is.null(clientConnection)){
options("clientConnection"=.jnew("com.portfolioeffect.quant.client.ClientConnection"))
clientConnection=getOption('clientConnection')
}else{
clientConnection$stop()
}
}else{
clientConnection=getOption('clientConnection')
}
util_validate()
.jcall(clientConnection,returnSig="V", method="setUsername",username)
.jcall(clientConnection,returnSig="V", method="setPassword",password)
.jcall(clientConnection,returnSig="V", method="setApiKey",apiKey)
.jcall(clientConnection,returnSig="V", method="setHost",hostname)
resultTemp=clientConnection$restart()
util_checkErrors(resultTemp)
}
util_cleanCredentials<-function(){
way<-switch(Sys.info()[['sysname']],
Windows= {paste(Sys.getenv("APPDATA"),"\\ice9",sep="")},
Linux = {paste(Sys.getenv("HOME"),"/.ice9",sep="")},
Darwin = {paste(Sys.getenv("HOME"),"/.ice9",sep="")})
way<-gsub("\\","/",way,fixed = T)
way<-paste0(way, "/data")
if (!file.exists(way)){
dir.create(way,recursive=TRUE)
}
unlink(paste0(way,"/login.RData"), recursive = TRUE, force = FALSE)
}
util_validate<- function(argList=NULL) {
names<-names(argList)
for(name in names){
if((name %in% c('portfolio'))&(!is(argList[[name]],'portfolio'))){
stopMessage("NOT_PORTFOLIO_CLASS")
}
if((name %in% c('optimizer'))&(!is(argList[[name]],'optimizer'))){
stopMessage("NOT_OPTIMIZER_CLASS")
}
if((name %in% c('symbol','symbol1','symbol2','metricType','constraintType','constraintMertic','goal','direction'))&(!is(argList[[name]],'character'))){
stopMessage("OBJECT_NOT_CHARACTER_CLASS",names=name)
}
if((name %in% c('lag','confidenceInterval','thresholdReturn','confidenceIntervalA','confidenceIntervalB','pValueLeft','pValueRight','nPoints','portfolioValue'))&(!is(argList[[name]],'numeric'))){
stopMessage("OBJECT_NOT_NUMERIC_CLASS",names=name)
}
if((name %in% c('lag','confidenceInterval','thresholdReturn','confidenceIntervalA','confidenceIntervalB','pValueLeft','pValueRight','nPoints','portfolioValue'))&(!(length(argList[[name]])==1))){
stopMessage("OBJECT_NOT_SINGLE_NUMBER",names=name)
}
if(name %in% c('lag','confidenceInterval','thresholdReturn','confidenceIntervalA','confidenceIntervalB','pValueLeft','pValueRight','nPoints')){
if((argList[[name]]<0)){
stopMessage("OBJECT_NOT_POSITIVE_NUMBER",names=name)
}
}
}
way<-switch(Sys.info()[['sysname']],
Windows= {paste(Sys.getenv("APPDATA"),"\\ice9",sep="")},
Linux = {paste(Sys.getenv("HOME"),"/.ice9",sep="")},
Darwin = {paste(Sys.getenv("HOME"),"/.ice9",sep="")})
way<-gsub("\\","/",way,fixed = T)
way<-paste0(way, "/data/login.RData")
if(!file.exists(way)){
stopMessage('FILE_CREDENTIALS_NO_EXISTS')
}
if(is.null(options('clientConnection')$clientConnection)){
options("clientConnection"=.jnew("com.portfolioeffect.quant.client.ClientConnection"))
clientConnection=getOption('clientConnection')
login<-NULL;
load(way)
.jcall(clientConnection,returnSig="V", method="setUsername",login[1])
.jcall(clientConnection,returnSig="V", method="setPassword",login[2])
.jcall(clientConnection,returnSig="V", method="setApiKey",login[3])
.jcall(clientConnection,returnSig="V", method="setHost",login[4])
}else{
clientConnection=getOption('clientConnection')
if(is.null(clientConnection)){
options("clientConnection"=.jnew("com.portfolioeffect.quant.client.ClientConnection"))
clientConnection=getOption('clientConnection')}
login<-NULL;
load(way)
.jcall(clientConnection,returnSig="V", method="setUsername",login[1])
.jcall(clientConnection,returnSig="V", method="setPassword",login[2])
.jcall(clientConnection,returnSig="V", method="setApiKey",login[3])
.jcall(clientConnection,returnSig="V", method="setHost",login[4])
}
}
util_checkErrors<-function(result){
if(getErrorStatus(result)){
Message=getErrorMessage(result)
n=nchar(Message)
c=paste(array("#",dim=min(abs(round(((n-15)/2)+0.01)),0)),collapse="")
cc=paste(array("#",dim=min(n+(n-15)%%2,0)),collapse="")
k=paste(c," ERROR MESSAGE ",c,sep="")
stop(paste("",k,Message,cc,sep="\n"),call.=FALSE)
}
}
printStatus<-function(){
clientConnection=getOption('clientConnection')
temp<-.jcall(clientConnection,returnSig="S", method="getStatus")
if(temp!=""){print(temp)}
}
getResult<-function(data,metricClass=F){
util_checkErrors(data)
if(metricClass){
dataNames<-c("time","value")
}else{
dataNames<-.jcall(data,returnSig="[S", method="getDataNames")
}
result=NULL
for(dataName in dataNames){
dataType<-.jcall(data,returnSig="S", method="getDataType",dataName)
resultTemp<-switch(dataType,
# NULL =,
DOUBLE =.jcall(data,returnSig="D", method="getDouble", dataName),
DOUBLE_VECTOR =.jcall(data,returnSig="[D", method="getDoubleArray", dataName),
DOUBLE_MATRIX =.jcall(data,returnSig="[[D", method="getDoubleMatrix", dataName, simplify=TRUE),
INT_VECTOR =.jcall(data,returnSig="[I", method="getIntArray", dataName),
# INT_MATRIX =.jcall(data,returnSig="[[I", method="getDoubleMatrix", dataName, simplify=TRUE),
LONG_VECTOR = .jcall(data,returnSig="[J", method="getLongArray", dataName),
# LONG_MATRIX =.jcall(data,returnSig="[[J", method="getDoubleMatrix", dataName, simplify=TRUE),
# FLOAT_VECTOR =.jcall(data,returnSig="[D", method="getFloatArray", dataName),
# FLOAT_MATRIX =.jcall(data,returnSig="[[D", method="getDoubleMatrix", dataName, simplify=TRUE),
# STRING =.jcall(data,returnSig="[D", method="getDoubleArray", dataName),
STRING_VECTOR =.jcall(data,returnSig="[S", method="getStringArray", dataName),
PORTFOLIO =.jcall(data,returnSig="Lcom/portfolioeffect/quant/client/portfolio/Portfolio;", method="getPortfolio", "portfolio"))
if(dataType=="PORTFOLIO"){
result=resultTemp
}else{
result=cbind(result,resultTemp)
}
}
if(NROW(result)>1){
colnames(result)<-dataNames
}
return(result)
}
getErrorStatus<-function(result){
.jcall(result,returnSig="Z", method="hasError")
}
getErrorMessage<-function(result){
.jcall(result,returnSig="S", method="getErrorMessage")
}
getTimeMilliSec<-function(result){
.jcall(result,returnSig="[J", method="getLongArray", "time")
}
getResultValuesLong<-function(result){
.jcall(result,returnSig="J", method="getLastLong", "value")
}
getResultValuesDoubleArray<-function(result){
.jcall(result,returnSig="[D", method="getDoubleArray", "value")
}
getResultValuesDoubleArrayWithTime<-function(result){
result<-cbind(.jcall(result,returnSig="[J", method="getLongArray", "time"),.jcall(result,returnSig="[D", method="getDoubleArray", "value"))
colnames(result)<-c("Time","Value")
return(result)
}
getResultValuesDouble2DArray<-function(portfolio,result){
result<-cbind(.jcall(result,returnSig="[J", method="getLongArray", "time"),.jcall(result,returnSig="[[D", method="getDoubleMatrix", "value", simplify=TRUE))
colnames(result)<-c("Time",position_list(portfolio))
return(result)
}
getResultValuesPortfolio<-function(result){
.jcall(result,returnSig="Lcom/portfolioeffect/quant/client/portfolio/Portfolio;", method="getPortfolio", "portfolio")
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.