using quantstrat with custom data

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

using quantstrat with custom data

Jon Golenbock
Hi folks,

new to this mailing list and not very proficient with R in general yet, so
apologies in advance.

all of the demos I could see were using stock data pulled from
yahoo/google, etc -- mine is coming from bloomberg. I did my best to
replicate the type of object that getsymbols() seems to create.

everything seems to be working alright until I actually get to
applystrategy(), where I am getting an error that I imagine, while not
particularly helpful to me, will be completely obvious to somebody with a
bit more experience. the error i'm receiving is

Error in n < 1 :
  comparison (3) is possible only for atomic and list types

code below. Any help is greatly appreciated and apologies for all the rules
I am surely breaking, I'll plead first-timer on this one.



library(quantstrat)
library(quantmod)
library(tidyverse)


ts <- structure(list(times = structure(c(1477312980, 1477313580,
1477314180,
1477314780, 1477315380, 1477315980, 1477316580, 1477317180, 1477317780,
1477318380, 1477318980, 1477319580, 1477320180, 1477320780, 1477321380,
1477321980, 1477322580, 1477323180, 1477323780, 1477324380, 1477324980,
1477325580, 1477326180, 1477326780, 1477327380, 1477327980, 1477328580,
1477329180, 1477329780, 1477330380, 1477330980, 1477331580, 1477332180,
1477332780, 1477333380, 1477333980, 1477334580), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), NG1.Open = c(2.954, 2.93, 2.936, 2.947,
2.951, 2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,
2.89, 2.88, 2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,
2.864, 2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,
2.851, 2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,
2.937, 2.954, 2.96, 2.957, 2.941, 2.932, 2.926, 2.902, 2.893,
2.898, 2.9, 2.905, 2.893, 2.883, 2.885, 2.891, 2.889, 2.884,
2.877, 2.877, 2.867, 2.878, 2.881, 2.887, 2.897, 2.893, 2.891,
2.884, 2.865, 2.862, 2.861, 2.859, 2.843, 2.845, 2.845, 2.842
), NG1.Low = c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,
2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,
2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,
2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,
2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,
2.94, 2.93, 2.924, 2.892, 2.871, 2.891, 2.892, 2.898, 2.89, 2.879,
2.872, 2.884, 2.884, 2.878, 2.876, 2.876, 2.859, 2.865, 2.878,
2.865, 2.886, 2.892, 2.888, 2.879, 2.862, 2.858, 2.851, 2.858,
2.839, 2.836, 2.844, 2.839, 2.842), NG1.Volume = c(2347, 4491,
2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506, 2084,
3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206, 938,
1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227, 9590,
1067, 128)), row.names = c(NA, -37L), class = "data.frame", .Names =
c("times",
"NG1.Open", "NG1.High", "NG1.Low", "NG1.Close", "NG1.Volume"))

NG1 <- xts(ts[,-1],ts[,1])


initDate <- Sys.Date()-1
initEq <- 5000
n <- 14
nSMA <- 200

currency("USD")
Sys.setenv(TZ="UTC")
symbols <- "NG1"
stock(symbols, currency="USD", multiplier=1)

strategy.st <- 'teststrat'
portfolio.st <- 'teststrat'
account.st <- 'teststrat'
initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='USD')
initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
initEq=initEq, currency='USD')
initOrders(portfolio=portfolio.st, initDate=initDate)



strategy(name = strategy.st,
         store = TRUE)







add.indicator(
  strategy = strategy.st,
  name = 'RSI',
  arguments = list(price=quote(Cl(mktdata)),n=n),
  label = "rsi")

add.indicator(
  strategy = strategy.st,
  name = 'SMA',
  arguments = list(x=quote(Cl(mktdata)),n=SMA),
  label = 'sma'
)



add.rule(
  strategy=strategy.st,
  name='ruleSignal',
  arguments=list(
    sigcol='RSI_long',
    sigval = TRUE,
    orderside = 'long',
    ordertype='market',
    orderqty=1,
    replace=FALSE
  ),
  type='enter',
  label='Enterlong',
  path.dep = TRUE
)

add.rule(
  strategy=strategy.st,
  name='ruleSignal',
  arguments=list(
    sigcol='RSI_short',
    sigval = TRUE,
    orderside = 'short',
    ordertype='market',
    orderqty=1,
    replace=TRUE
  ),
  type='exit',
  label='Exitlong',
  path.dep = TRUE

)


t1<-Sys.time()
out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
t2<-Sys.time()
print(t2-t1)

        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.
Reply | Threaded
Open this post in threaded view
|

Re: using quantstrat with custom data

Ilya Kipnis
Hi Jon,

First off, check the parameters on your add.indicator call for your SMA
function.

Secondly, your data is only 37 observations long and you have a setting of
200.

Please fix these two issues.

-Ilya

On Mon, Oct 24, 2016 at 2:55 PM, Jon Golenbock <[hidden email]>
wrote:

> Hi folks,
>
> new to this mailing list and not very proficient with R in general yet, so
> apologies in advance.
>
> all of the demos I could see were using stock data pulled from
> yahoo/google, etc -- mine is coming from bloomberg. I did my best to
> replicate the type of object that getsymbols() seems to create.
>
> everything seems to be working alright until I actually get to
> applystrategy(), where I am getting an error that I imagine, while not
> particularly helpful to me, will be completely obvious to somebody with a
> bit more experience. the error i'm receiving is
>
> Error in n < 1 :
>   comparison (3) is possible only for atomic and list types
>
> code below. Any help is greatly appreciated and apologies for all the rules
> I am surely breaking, I'll plead first-timer on this one.
>
>
>
> library(quantstrat)
> library(quantmod)
> library(tidyverse)
>
>
> ts <- structure(list(times = structure(c(1477312980, 1477313580,
> 1477314180,
> 1477314780, 1477315380, 1477315980, 1477316580, 1477317180, 1477317780,
> 1477318380, 1477318980, 1477319580, 1477320180, 1477320780, 1477321380,
> 1477321980, 1477322580, 1477323180, 1477323780, 1477324380, 1477324980,
> 1477325580, 1477326180, 1477326780, 1477327380, 1477327980, 1477328580,
> 1477329180, 1477329780, 1477330380, 1477330980, 1477331580, 1477332180,
> 1477332780, 1477333380, 1477333980, 1477334580), class = c("POSIXct",
> "POSIXt"), tzone = "UTC"), NG1.Open = c(2.954, 2.93, 2.936, 2.947,
> 2.951, 2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,
> 2.89, 2.88, 2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,
> 2.864, 2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,
> 2.851, 2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,
> 2.937, 2.954, 2.96, 2.957, 2.941, 2.932, 2.926, 2.902, 2.893,
> 2.898, 2.9, 2.905, 2.893, 2.883, 2.885, 2.891, 2.889, 2.884,
> 2.877, 2.877, 2.867, 2.878, 2.881, 2.887, 2.897, 2.893, 2.891,
> 2.884, 2.865, 2.862, 2.861, 2.859, 2.843, 2.845, 2.845, 2.842
> ), NG1.Low = c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,
> 2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,
> 2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,
> 2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,
> 2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,
> 2.94, 2.93, 2.924, 2.892, 2.871, 2.891, 2.892, 2.898, 2.89, 2.879,
> 2.872, 2.884, 2.884, 2.878, 2.876, 2.876, 2.859, 2.865, 2.878,
> 2.865, 2.886, 2.892, 2.888, 2.879, 2.862, 2.858, 2.851, 2.858,
> 2.839, 2.836, 2.844, 2.839, 2.842), NG1.Volume = c(2347, 4491,
> 2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506, 2084,
> 3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206, 938,
> 1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227, 9590,
> 1067, 128)), row.names = c(NA, -37L), class = "data.frame", .Names =
> c("times",
> "NG1.Open", "NG1.High", "NG1.Low", "NG1.Close", "NG1.Volume"))
>
> NG1 <- xts(ts[,-1],ts[,1])
>
>
> initDate <- Sys.Date()-1
> initEq <- 5000
> n <- 14
> nSMA <- 200
>
> currency("USD")
> Sys.setenv(TZ="UTC")
> symbols <- "NG1"
> stock(symbols, currency="USD", multiplier=1)
>
> strategy.st <- 'teststrat'
> portfolio.st <- 'teststrat'
> account.st <- 'teststrat'
> initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='
> USD')
> initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
> initEq=initEq, currency='USD')
> initOrders(portfolio=portfolio.st, initDate=initDate)
>
>
>
> strategy(name = strategy.st,
>          store = TRUE)
>
>
>
>
>
>
>
> add.indicator(
>   strategy = strategy.st,
>   name = 'RSI',
>   arguments = list(price=quote(Cl(mktdata)),n=n),
>   label = "rsi")
>
> add.indicator(
>   strategy = strategy.st,
>   name = 'SMA',
>   arguments = list(x=quote(Cl(mktdata)),n=SMA),
>   label = 'sma'
> )
>
>
>
> add.rule(
>   strategy=strategy.st,
>   name='ruleSignal',
>   arguments=list(
>     sigcol='RSI_long',
>     sigval = TRUE,
>     orderside = 'long',
>     ordertype='market',
>     orderqty=1,
>     replace=FALSE
>   ),
>   type='enter',
>   label='Enterlong',
>   path.dep = TRUE
> )
>
> add.rule(
>   strategy=strategy.st,
>   name='ruleSignal',
>   arguments=list(
>     sigcol='RSI_short',
>     sigval = TRUE,
>     orderside = 'short',
>     ordertype='market',
>     orderqty=1,
>     replace=TRUE
>   ),
>   type='exit',
>   label='Exitlong',
>   path.dep = TRUE
>
> )
>
>
> t1<-Sys.time()
> out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
> t2<-Sys.time()
> print(t2-t1)
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions
> should go.
>

        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.
Reply | Threaded
Open this post in threaded view
|

Re: using quantstrat with custom data

Kevin Dhingra
Hi Jon,

As mentioned by Ilya, your arguments to SMA are incorrect. Also your
program is missing the signal function. You need to convert your indicator
into a signal using add.signal function before passing it to a rule. Try
running the modified code -

library(quantstrat)
library(quantmod)
library(tidyverse)


ts <- structure(list(times = structure(c(1477312980, 1477313580,
                                         1477314180,
                                         1477314780, 1477315380,
1477315980, 1477316580, 1477317180, 1477317780,
                                         1477318380, 1477318980,
1477319580, 1477320180, 1477320780, 1477321380,
                                         1477321980, 1477322580,
1477323180, 1477323780, 1477324380, 1477324980,
                                         1477325580, 1477326180,
1477326780, 1477327380, 1477327980, 1477328580,
                                         1477329180, 1477329780,
1477330380, 1477330980, 1477331580, 1477332180,
                                         1477332780, 1477333380,
1477333980, 1477334580), class = c("POSIXct",

                        "POSIXt"), tzone = "UTC"), NG1.Open = c(2.954,
2.93, 2.936, 2.947,

                                                                2.951,
2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,

                                                                2.89, 2.88,
2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,

                                                                2.864,
2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,

                                                                2.851,
2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,


                                           2.937, 2.954, 2.96, 2.957,
2.941, 2.932, 2.926, 2.902, 2.893,


                                           2.898, 2.9, 2.905, 2.893, 2.883,
2.885, 2.891, 2.889, 2.884,


                                           2.877, 2.877, 2.867, 2.878,
2.881, 2.887, 2.897, 2.893, 2.891,


                                           2.884, 2.865, 2.862, 2.861,
2.859, 2.843, 2.845, 2.845, 2.842

                                                                ), NG1.Low
= c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,


   2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,


   2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,


   2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,


   2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,


                                       2.94, 2.93, 2.924, 2.892, 2.871,
2.891, 2.892, 2.898, 2.89, 2.879,


                                       2.872, 2.884, 2.884, 2.878, 2.876,
2.876, 2.859, 2.865, 2.878,


                                       2.865, 2.886, 2.892, 2.888, 2.879,
2.862, 2.858, 2.851, 2.858,


                                       2.839, 2.836, 2.844, 2.839, 2.842),
NG1.Volume = c(2347, 4491,



              2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506,
2084,



              3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206, 938,



              1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227,
9590,



              1067, 128)), row.names = c(NA, -37L), class = "data.frame",
.Names =
                  c("times",
                    "NG1.Open", "NG1.High", "NG1.Low", "NG1.Close",
"NG1.Volume"))

NG1 <- xts(ts[,-1],ts[,1])


initDate <- index(NG1)[1]
initEq <- 5000
n <- 14

currency("USD")
Sys.setenv(TZ="UTC")
symbols <- "NG1"
stock(symbols, currency="USD", multiplier=1)

strategy.st <- 'teststrat'
portfolio.st <- 'teststrat'
account.st <- 'teststrat'
initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='USD')
initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
         initEq=initEq, currency='USD')
initOrders(portfolio=portfolio.st, initDate=initDate)



strategy(name = strategy.st,
         store = TRUE)

add.indicator(
  strategy = strategy.st,
  name = 'RSI',
  arguments = list(price=quote(Cl(mktdata)),n=n),
  label = "rsi")



add.signal(strategy.st, name="sigThreshold",
           arguments=list(column="rsi", threshold= 40,
                          relationship="lt", cross=FALSE),
           label="RSI_long")

add.rule(
  strategy=strategy.st,
  name='ruleSignal',
  arguments=list(
    sigcol='RSI_long',
    sigval = TRUE,
    orderside = 'long',
    ordertype='market',
    orderqty=1,
    replace=FALSE
  ),
  type='enter',
  label='Enterlong',
  path.dep = TRUE
)




t1<-Sys.time()
out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
t2<-Sys.time()
print(t2-t1)

On Mon, Oct 24, 2016 at 3:07 PM, Ilya Kipnis <[hidden email]> wrote:

> Hi Jon,
>
> First off, check the parameters on your add.indicator call for your SMA
> function.
>
> Secondly, your data is only 37 observations long and you have a setting of
> 200.
>
> Please fix these two issues.
>
> -Ilya
>
> On Mon, Oct 24, 2016 at 2:55 PM, Jon Golenbock <[hidden email]>
> wrote:
>
> > Hi folks,
> >
> > new to this mailing list and not very proficient with R in general yet,
> so
> > apologies in advance.
> >
> > all of the demos I could see were using stock data pulled from
> > yahoo/google, etc -- mine is coming from bloomberg. I did my best to
> > replicate the type of object that getsymbols() seems to create.
> >
> > everything seems to be working alright until I actually get to
> > applystrategy(), where I am getting an error that I imagine, while not
> > particularly helpful to me, will be completely obvious to somebody with a
> > bit more experience. the error i'm receiving is
> >
> > Error in n < 1 :
> >   comparison (3) is possible only for atomic and list types
> >
> > code below. Any help is greatly appreciated and apologies for all the
> rules
> > I am surely breaking, I'll plead first-timer on this one.
> >
> >
> >
> > library(quantstrat)
> > library(quantmod)
> > library(tidyverse)
> >
> >
> > ts <- structure(list(times = structure(c(1477312980, 1477313580,
> > 1477314180,
> > 1477314780, 1477315380, 1477315980, 1477316580, 1477317180, 1477317780,
> > 1477318380, 1477318980, 1477319580, 1477320180, 1477320780, 1477321380,
> > 1477321980, 1477322580, 1477323180, 1477323780, 1477324380, 1477324980,
> > 1477325580, 1477326180, 1477326780, 1477327380, 1477327980, 1477328580,
> > 1477329180, 1477329780, 1477330380, 1477330980, 1477331580, 1477332180,
> > 1477332780, 1477333380, 1477333980, 1477334580), class = c("POSIXct",
> > "POSIXt"), tzone = "UTC"), NG1.Open = c(2.954, 2.93, 2.936, 2.947,
> > 2.951, 2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,
> > 2.89, 2.88, 2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,
> > 2.864, 2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,
> > 2.851, 2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,
> > 2.937, 2.954, 2.96, 2.957, 2.941, 2.932, 2.926, 2.902, 2.893,
> > 2.898, 2.9, 2.905, 2.893, 2.883, 2.885, 2.891, 2.889, 2.884,
> > 2.877, 2.877, 2.867, 2.878, 2.881, 2.887, 2.897, 2.893, 2.891,
> > 2.884, 2.865, 2.862, 2.861, 2.859, 2.843, 2.845, 2.845, 2.842
> > ), NG1.Low = c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,
> > 2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,
> > 2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,
> > 2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,
> > 2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,
> > 2.94, 2.93, 2.924, 2.892, 2.871, 2.891, 2.892, 2.898, 2.89, 2.879,
> > 2.872, 2.884, 2.884, 2.878, 2.876, 2.876, 2.859, 2.865, 2.878,
> > 2.865, 2.886, 2.892, 2.888, 2.879, 2.862, 2.858, 2.851, 2.858,
> > 2.839, 2.836, 2.844, 2.839, 2.842), NG1.Volume = c(2347, 4491,
> > 2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506, 2084,
> > 3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206, 938,
> > 1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227, 9590,
> > 1067, 128)), row.names = c(NA, -37L), class = "data.frame", .Names =
> > c("times",
> > "NG1.Open", "NG1.High", "NG1.Low", "NG1.Close", "NG1.Volume"))
> >
> > NG1 <- xts(ts[,-1],ts[,1])
> >
> >
> > initDate <- Sys.Date()-1
> > initEq <- 5000
> > n <- 14
> > nSMA <- 200
> >
> > currency("USD")
> > Sys.setenv(TZ="UTC")
> > symbols <- "NG1"
> > stock(symbols, currency="USD", multiplier=1)
> >
> > strategy.st <- 'teststrat'
> > portfolio.st <- 'teststrat'
> > account.st <- 'teststrat'
> > initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='
> > USD')
> > initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
> > initEq=initEq, currency='USD')
> > initOrders(portfolio=portfolio.st, initDate=initDate)
> >
> >
> >
> > strategy(name = strategy.st,
> >          store = TRUE)
> >
> >
> >
> >
> >
> >
> >
> > add.indicator(
> >   strategy = strategy.st,
> >   name = 'RSI',
> >   arguments = list(price=quote(Cl(mktdata)),n=n),
> >   label = "rsi")
> >
> > add.indicator(
> >   strategy = strategy.st,
> >   name = 'SMA',
> >   arguments = list(x=quote(Cl(mktdata)),n=SMA),
> >   label = 'sma'
> > )
> >
> >
> >
> > add.rule(
> >   strategy=strategy.st,
> >   name='ruleSignal',
> >   arguments=list(
> >     sigcol='RSI_long',
> >     sigval = TRUE,
> >     orderside = 'long',
> >     ordertype='market',
> >     orderqty=1,
> >     replace=FALSE
> >   ),
> >   type='enter',
> >   label='Enterlong',
> >   path.dep = TRUE
> > )
> >
> > add.rule(
> >   strategy=strategy.st,
> >   name='ruleSignal',
> >   arguments=list(
> >     sigcol='RSI_short',
> >     sigval = TRUE,
> >     orderside = 'short',
> >     ordertype='market',
> >     orderqty=1,
> >     replace=TRUE
> >   ),
> >   type='exit',
> >   label='Exitlong',
> >   path.dep = TRUE
> >
> > )
> >
> >
> > t1<-Sys.time()
> > out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
> > t2<-Sys.time()
> > print(t2-t1)
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only. If you want to post, subscribe first.
> > -- Also note that this is not the r-help list where general R questions
> > should go.
> >
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions
> should go.
>

        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.
Reply | Threaded
Open this post in threaded view
|

Re: using quantstrat with custom data

Jon Golenbock
In reply to this post by Ilya Kipnis
ah - i shortened the dataset for brevity, didn't think about the SMA (the
actual dataset is far larger). I also see that in the add.indicator call i
used n=SMA where it should have been n=nSMA.

Thanks so much for your quick reply. I actually had a couple other bits
missing but I've got it up and running now (or at least I have it posting
transaction data on applystrategy() which is a massive step forward).

Much appreciated!!

On Mon, Oct 24, 2016 at 3:07 PM, Ilya Kipnis <[hidden email]> wrote:

> Hi Jon,
>
> First off, check the parameters on your add.indicator call for your SMA
> function.
>
> Secondly, your data is only 37 observations long and you have a setting of
> 200.
>
> Please fix these two issues.
>
> -Ilya
>
> On Mon, Oct 24, 2016 at 2:55 PM, Jon Golenbock <[hidden email]>
> wrote:
>
>> Hi folks,
>>
>> new to this mailing list and not very proficient with R in general yet, so
>> apologies in advance.
>>
>> all of the demos I could see were using stock data pulled from
>> yahoo/google, etc -- mine is coming from bloomberg. I did my best to
>> replicate the type of object that getsymbols() seems to create.
>>
>> everything seems to be working alright until I actually get to
>> applystrategy(), where I am getting an error that I imagine, while not
>> particularly helpful to me, will be completely obvious to somebody with a
>> bit more experience. the error i'm receiving is
>>
>> Error in n < 1 :
>>   comparison (3) is possible only for atomic and list types
>>
>> code below. Any help is greatly appreciated and apologies for all the
>> rules
>> I am surely breaking, I'll plead first-timer on this one.
>>
>>
>>
>> library(quantstrat)
>> library(quantmod)
>> library(tidyverse)
>>
>>
>> ts <- structure(list(times = structure(c(1477312980, 1477313580,
>> 1477314180,
>> 1477314780, 1477315380, 1477315980, 1477316580, 1477317180, 1477317780,
>> 1477318380, 1477318980, 1477319580, 1477320180, 1477320780, 1477321380,
>> 1477321980, 1477322580, 1477323180, 1477323780, 1477324380, 1477324980,
>> 1477325580, 1477326180, 1477326780, 1477327380, 1477327980, 1477328580,
>> 1477329180, 1477329780, 1477330380, 1477330980, 1477331580, 1477332180,
>> 1477332780, 1477333380, 1477333980, 1477334580), class = c("POSIXct",
>> "POSIXt"), tzone = "UTC"), NG1.Open = c(2.954, 2.93, 2.936, 2.947,
>> 2.951, 2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,
>> 2.89, 2.88, 2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,
>> 2.864, 2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,
>> 2.851, 2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,
>> 2.937, 2.954, 2.96, 2.957, 2.941, 2.932, 2.926, 2.902, 2.893,
>> 2.898, 2.9, 2.905, 2.893, 2.883, 2.885, 2.891, 2.889, 2.884,
>> 2.877, 2.877, 2.867, 2.878, 2.881, 2.887, 2.897, 2.893, 2.891,
>> 2.884, 2.865, 2.862, 2.861, 2.859, 2.843, 2.845, 2.845, 2.842
>> ), NG1.Low = c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,
>> 2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,
>> 2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,
>> 2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,
>> 2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,
>> 2.94, 2.93, 2.924, 2.892, 2.871, 2.891, 2.892, 2.898, 2.89, 2.879,
>> 2.872, 2.884, 2.884, 2.878, 2.876, 2.876, 2.859, 2.865, 2.878,
>> 2.865, 2.886, 2.892, 2.888, 2.879, 2.862, 2.858, 2.851, 2.858,
>> 2.839, 2.836, 2.844, 2.839, 2.842), NG1.Volume = c(2347, 4491,
>> 2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506, 2084,
>> 3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206, 938,
>> 1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227, 9590,
>> 1067, 128)), row.names = c(NA, -37L), class = "data.frame", .Names =
>> c("times",
>> "NG1.Open", "NG1.High", "NG1.Low", "NG1.Close", "NG1.Volume"))
>>
>> NG1 <- xts(ts[,-1],ts[,1])
>>
>>
>> initDate <- Sys.Date()-1
>> initEq <- 5000
>> n <- 14
>> nSMA <- 200
>>
>> currency("USD")
>> Sys.setenv(TZ="UTC")
>> symbols <- "NG1"
>> stock(symbols, currency="USD", multiplier=1)
>>
>> strategy.st <- 'teststrat'
>> portfolio.st <- 'teststrat'
>> account.st <- 'teststrat'
>> initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='US
>> D')
>> initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
>> initEq=initEq, currency='USD')
>> initOrders(portfolio=portfolio.st, initDate=initDate)
>>
>>
>>
>> strategy(name = strategy.st,
>>          store = TRUE)
>>
>>
>>
>>
>>
>>
>>
>> add.indicator(
>>   strategy = strategy.st,
>>   name = 'RSI',
>>   arguments = list(price=quote(Cl(mktdata)),n=n),
>>   label = "rsi")
>>
>> add.indicator(
>>   strategy = strategy.st,
>>   name = 'SMA',
>>   arguments = list(x=quote(Cl(mktdata)),n=SMA),
>>   label = 'sma'
>> )
>>
>>
>>
>> add.rule(
>>   strategy=strategy.st,
>>   name='ruleSignal',
>>   arguments=list(
>>     sigcol='RSI_long',
>>     sigval = TRUE,
>>     orderside = 'long',
>>     ordertype='market',
>>     orderqty=1,
>>     replace=FALSE
>>   ),
>>   type='enter',
>>   label='Enterlong',
>>   path.dep = TRUE
>> )
>>
>> add.rule(
>>   strategy=strategy.st,
>>   name='ruleSignal',
>>   arguments=list(
>>     sigcol='RSI_short',
>>     sigval = TRUE,
>>     orderside = 'short',
>>     ordertype='market',
>>     orderqty=1,
>>     replace=TRUE
>>   ),
>>   type='exit',
>>   label='Exitlong',
>>   path.dep = TRUE
>>
>> )
>>
>>
>> t1<-Sys.time()
>> out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
>> t2<-Sys.time()
>> print(t2-t1)
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> -- Subscriber-posting only. If you want to post, subscribe first.
>> -- Also note that this is not the r-help list where general R questions
>> should go.
>>
>
>

        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.
Reply | Threaded
Open this post in threaded view
|

Re: using quantstrat with custom data

Jon Golenbock
In reply to this post by Kevin Dhingra
Thanks Kevin. I actually had just failed to copy-paste the add.signal calls
and figured that out pretty quickly after fixing the previous error.

What I have below is what I've got now (and it runs). probably
unsurprisingly, the data is a 1 minute continous front-month natural gas
contract.

Thank you again.


ts <- structure(list(times = structure(c(1477315440, 1477315500,
1477315560,
1477315620, 1477315680, 1477315740, 1477315800, 1477315860, 1477315920,
1477315980, 1477316040, 1477316100, 1477316160, 1477316220, 1477316280,
1477316340, 1477316400, 1477316460, 1477316520, 1477316580, 1477316640,
1477316700, 1477316760, 1477316820, 1477316880, 1477316940, 1477317000,
1477317060, 1477317120, 1477317180, 1477317240, 1477317300, 1477317360,
1477317420, 1477317480, 1477317540, 1477317600, 1477317660, 1477317720,
1477317780, 1477317840, 1477317900, 1477317960, 1477318020, 1477318080,
1477318140, 1477318200, 1477318260, 1477318320, 1477318380, 1477318440,
1477318500, 1477318560, 1477318620, 1477318680, 1477318740, 1477318800,
1477318860, 1477318920, 1477318980, 1477319040, 1477319100, 1477319160,
1477319220, 1477319280, 1477319340, 1477319400, 1477319460, 1477319520,
1477319580, 1477319640, 1477319700, 1477319760, 1477319820, 1477319880,
1477319940, 1477320000, 1477320060, 1477320120, 1477320180, 1477320240,
1477320300, 1477320360, 1477320420, 1477320480, 1477320540, 1477320600,
1477320660, 1477320720, 1477320780, 1477320840, 1477320900, 1477320960,
1477321020, 1477321080, 1477321140, 1477321200, 1477321260, 1477321320,
1477321380, 1477321440, 1477321500, 1477321560, 1477321620, 1477321680,
1477321740, 1477321800, 1477321860, 1477321920, 1477321980, 1477322040,
1477322100, 1477322160, 1477322220, 1477322280, 1477322340, 1477322400,
1477322460, 1477322520, 1477322580, 1477322640, 1477322700, 1477322760,
1477322820, 1477322880, 1477322940, 1477323000, 1477323060, 1477323120,
1477323180, 1477323240, 1477323300, 1477323360, 1477323420, 1477323480,
1477323540, 1477323600, 1477323660, 1477323720, 1477323780, 1477323840,
1477323900, 1477323960, 1477324020, 1477324080, 1477324140, 1477324200,
1477324260, 1477324320, 1477324380, 1477324440, 1477324500, 1477324560,
1477324620, 1477324680, 1477324740, 1477324800, 1477324860, 1477324920,
1477324980, 1477325040, 1477325100, 1477325160, 1477325220, 1477325280,
1477325340, 1477325400, 1477325460, 1477325520, 1477325580, 1477325640,
1477325700, 1477325760, 1477325820, 1477325880, 1477325940, 1477326000,
1477326060, 1477326120, 1477326180, 1477326240, 1477326300, 1477326360,
1477326420, 1477326480, 1477326540, 1477326600, 1477326660, 1477326720,
1477326780, 1477326840, 1477326900, 1477326960, 1477327020, 1477327080,
1477327140, 1477327200, 1477327260, 1477327320, 1477327380, 1477327440,
1477327500, 1477327560, 1477327620, 1477327680, 1477327740, 1477327800,
1477327860, 1477327920, 1477327980, 1477328040, 1477328100, 1477328160,
1477328220, 1477328280, 1477328340, 1477328400, 1477328460, 1477328520,
1477328580, 1477328640, 1477328700, 1477328760, 1477328820, 1477328880,
1477328940, 1477329000, 1477329060, 1477329120, 1477329180, 1477329240,
1477329300, 1477329360, 1477329420, 1477329480, 1477329540, 1477329600,
1477329660, 1477329720, 1477329780, 1477329840, 1477329900, 1477329960,
1477330020, 1477330080, 1477330140, 1477330200, 1477330260, 1477330320,
1477330380, 1477330440, 1477330500, 1477330560, 1477330620, 1477330680,
1477330740, 1477330800, 1477330860, 1477330920, 1477330980, 1477331040,
1477331100, 1477331160, 1477331220, 1477331280, 1477331340, 1477331400,
1477331460, 1477331520, 1477331580, 1477331640, 1477331700, 1477331760,
1477331820, 1477331880, 1477331940, 1477332000, 1477332060, 1477332120,
1477332180, 1477332240, 1477332300, 1477332360, 1477332420, 1477332480,
1477332540, 1477332600, 1477332660, 1477332720, 1477332780, 1477332840,
1477332900, 1477332960, 1477333020, 1477333080, 1477333140, 1477333200,
1477333260, 1477333320, 1477333380, 1477333440, 1477333500, 1477333560,
1477333620, 1477333680, 1477333740, 1477333800, 1477333860, 1477333920,
1477333980, 1477334040, 1477334100, 1477334160, 1477334220, 1477334280,
1477334340, 1477334400, 1477334460, 1477334520, 1477334580, 1477334640,
1477334700, 1477334760, 1477334820, 1477334880, 1477334940, 1477335000,
1477335060, 1477335120, 1477335180, 1477335240, 1477335300, 1477335360,
1477335420, 1477335480, 1477335540, 1477335600, 1477335660, 1477335720,
1477335780, 1477335840, 1477335900, 1477335960, 1477336020, 1477336080,
1477336140, 1477336200, 1477336260, 1477336320, 1477336440, 1477336500,
1477336560, 1477336620, 1477336680, 1477336740, 1477336800, 1477336860,
1477336920, 1477336980), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
    NG1.Open = c(2.953, 2.952, 2.954, 2.953, 2.95, 2.946, 2.94,
    2.938, 2.936, 2.941, 2.938, 2.937, 2.936, 2.929, 2.927, 2.927,
    2.927, 2.928, 2.93, 2.929, 2.93, 2.928, 2.927, 2.927, 2.929,
    2.928, 2.929, 2.928, 2.925, 2.924, 2.919, 2.911, 2.911, 2.913,
    2.914, 2.905, 2.892, 2.893, 2.887, 2.893, 2.894, 2.897, 2.897,
    2.897, 2.893, 2.893, 2.873, 2.878, 2.883, 2.871, 2.864, 2.865,
    2.872, 2.877, 2.88, 2.884, 2.886, 2.889, 2.887, 2.891, 2.894,
    2.894, 2.885, 2.884, 2.885, 2.889, 2.886, 2.89, 2.891, 2.892,
    2.892, 2.891, 2.893, 2.89, 2.896, 2.892, 2.892, 2.897, 2.893,
    2.898, 2.903, 2.902, 2.898, 2.898, 2.899, 2.902, 2.898, 2.893,
    2.892, 2.89, 2.891, 2.891, 2.891, 2.887, 2.887, 2.873, 2.89,
    2.889, 2.889, 2.88, 2.877, 2.879, 2.882, 2.876, 2.877, 2.88,
    2.873, 2.873, 2.872, 2.872, 2.871, 2.868, 2.872, 2.879, 2.883,
    2.881, 2.882, 2.883, 2.883, 2.885, 2.886, 2.887, 2.885, 2.885,
    2.89, 2.887, 2.887, 2.885, 2.884, 2.884, 2.883, 2.885, 2.884,
    2.884, 2.885, 2.879, 2.877, 2.875, 2.875, 2.879, 2.881, 2.881,
    2.884, 2.882, 2.882, 2.881, 2.878, 2.879, 2.877, 2.876, 2.875,
    2.873, 2.874, 2.875, 2.875, 2.873, 2.874, 2.875, 2.877, 2.876,
    2.876, 2.874, 2.873, 2.872, 2.874, 2.871, 2.863, 2.861, 2.86,
    2.859, 2.855, 2.853, 2.851, 2.854, 2.857, 2.86, 2.861, 2.862,
    2.862, 2.864, 2.865, 2.868, 2.867, 2.869, 2.869, 2.873, 2.872,
    2.873, 2.873, 2.878, 2.879, 2.875, 2.874, 2.869, 2.867, 2.865,
    2.867, 2.867, 2.865, 2.866, 2.865, 2.867, 2.866, 2.867, 2.867,
    2.871, 2.877, 2.876, 2.881, 2.886, 2.889, 2.892, 2.895, 2.896,
    2.893, 2.889, 2.89, 2.89, 2.89, 2.892, 2.89, 2.888, 2.89,
    2.889, 2.888, 2.889, 2.888, 2.888, 2.887, 2.889, 2.888, 2.889,
    2.888, 2.882, 2.883, 2.883, 2.885, 2.883, 2.881, 2.878, 2.879,
    2.88, 2.883, 2.875, 2.87, 2.865, 2.86, 2.862, 2.864, 2.861,
    2.863, 2.858, 2.855, 2.852, 2.854, 2.858, 2.856, 2.858, 2.86,
    2.859, 2.859, 2.861, 2.86, 2.861, 2.86, 2.86, 2.858, 2.856,
    2.853, 2.851, 2.851, 2.852, 2.853, 2.852, 2.851, 2.856, 2.858,
    2.857, 2.86, 2.859, 2.856, 2.854, 2.853, 2.85, 2.85, 2.843,
    2.837, 2.838, 2.84, 2.84, 2.84, 2.839, 2.838, 2.84, 2.832,
    2.832, 2.833, 2.832, 2.832, 2.836, 2.838, 2.837, 2.833, 2.836,
    2.834, 2.832, 2.835, 2.84, 2.842, 2.844, 2.843, 2.841, 2.839,
    2.838, 2.837, 2.838, 2.838, 2.839, 2.839, 2.839, 2.844, 2.843,
    2.844, 2.843, 2.845, 2.845, 2.846, 2.847, 2.848, 2.848, 2.846,
    2.847, 2.848, 2.846, 2.847, 2.846, 2.845, 2.844, 2.848, 2.848,
    2.849, 2.847, 2.847, 2.847, 2.846, 2.846, 2.847, 2.846, 2.846,
    2.846, 2.846, 2.846, 2.845, 2.844, 2.841, 2.84, 2.841, 2.842,
    2.841), NG1.High = c(2.953, 2.957, 2.955, 2.953, 2.951, 2.947,
    2.94, 2.939, 2.941, 2.941, 2.94, 2.937, 2.936, 2.929, 2.928,
    2.928, 2.93, 2.933, 2.932, 2.93, 2.93, 2.928, 2.927, 2.93,
    2.929, 2.931, 2.932, 2.928, 2.925, 2.926, 2.92, 2.912, 2.914,
    2.914, 2.914, 2.905, 2.894, 2.895, 2.892, 2.898, 2.898, 2.898,
    2.902, 2.898, 2.894, 2.893, 2.881, 2.884, 2.883, 2.871, 2.87,
    2.872, 2.879, 2.882, 2.885, 2.889, 2.89, 2.889, 2.893, 2.898,
    2.895, 2.894, 2.887, 2.887, 2.89, 2.889, 2.891, 2.892, 2.893,
    2.892, 2.893, 2.894, 2.893, 2.897, 2.896, 2.892, 2.897, 2.897,
    2.9, 2.905, 2.903, 2.902, 2.9, 2.9, 2.902, 2.902, 2.898,
    2.893, 2.892, 2.892, 2.891, 2.891, 2.891, 2.891, 2.888, 2.891,
    2.89, 2.893, 2.889, 2.882, 2.88, 2.883, 2.882, 2.878, 2.881,
    2.882, 2.876, 2.873, 2.873, 2.875, 2.871, 2.871, 2.88, 2.884,
    2.884, 2.882, 2.883, 2.884, 2.885, 2.887, 2.888, 2.887, 2.886,
    2.891, 2.891, 2.889, 2.887, 2.887, 2.885, 2.884, 2.885, 2.886,
    2.884, 2.889, 2.886, 2.879, 2.877, 2.876, 2.878, 2.882, 2.882,
    2.884, 2.884, 2.884, 2.882, 2.881, 2.879, 2.879, 2.877, 2.877,
    2.876, 2.874, 2.874, 2.875, 2.875, 2.875, 2.875, 2.877, 2.877,
    2.877, 2.876, 2.874, 2.873, 2.874, 2.874, 2.872, 2.864, 2.864,
    2.862, 2.86, 2.856, 2.853, 2.858, 2.861, 2.862, 2.863, 2.862,
    2.863, 2.867, 2.867, 2.867, 2.868, 2.868, 2.869, 2.875, 2.874,
    2.873, 2.873, 2.878, 2.881, 2.879, 2.875, 2.874, 2.87, 2.869,
    2.867, 2.868, 2.867, 2.865, 2.866, 2.867, 2.869, 2.867, 2.869,
    2.875, 2.877, 2.878, 2.881, 2.887, 2.891, 2.896, 2.895, 2.897,
    2.896, 2.893, 2.892, 2.892, 2.89, 2.895, 2.893, 2.89, 2.89,
    2.89, 2.89, 2.89, 2.89, 2.888, 2.888, 2.889, 2.89, 2.888,
    2.89, 2.889, 2.891, 2.886, 2.884, 2.886, 2.883, 2.881, 2.879,
    2.88, 2.884, 2.883, 2.875, 2.871, 2.865, 2.864, 2.865, 2.864,
    2.863, 2.865, 2.858, 2.855, 2.855, 2.858, 2.859, 2.858, 2.859,
    2.86, 2.86, 2.86, 2.861, 2.861, 2.862, 2.861, 2.86, 2.858,
    2.856, 2.853, 2.852, 2.853, 2.855, 2.853, 2.852, 2.857, 2.861,
    2.86, 2.86, 2.86, 2.859, 2.856, 2.856, 2.853, 2.852, 2.85,
    2.843, 2.839, 2.84, 2.841, 2.843, 2.84, 2.839, 2.84, 2.84,
    2.833, 2.835, 2.835, 2.834, 2.838, 2.838, 2.841, 2.838, 2.836,
    2.836, 2.835, 2.836, 2.842, 2.844, 2.845, 2.845, 2.844, 2.842,
    2.839, 2.838, 2.838, 2.839, 2.839, 2.84, 2.841, 2.844, 2.844,
    2.844, 2.845, 2.846, 2.846, 2.847, 2.847, 2.849, 2.849, 2.848,
    2.847, 2.847, 2.848, 2.847, 2.848, 2.847, 2.845, 2.847, 2.849,
    2.85, 2.849, 2.848, 2.847, 2.848, 2.847, 2.847, 2.847, 2.846,
    2.847, 2.847, 2.846, 2.847, 2.845, 2.844, 2.841, 2.841, 2.842,
    2.842, 2.841), NG1.Low = c(2.951, 2.952, 2.952, 2.95, 2.945,
    2.939, 2.937, 2.935, 2.935, 2.936, 2.937, 2.93, 2.927, 2.926,
    2.924, 2.925, 2.926, 2.928, 2.929, 2.928, 2.928, 2.925, 2.926,
    2.927, 2.924, 2.927, 2.928, 2.924, 2.924, 2.919, 2.91, 2.902,
    2.91, 2.911, 2.903, 2.891, 2.888, 2.887, 2.886, 2.891, 2.894,
    2.895, 2.896, 2.893, 2.891, 2.872, 2.872, 2.878, 2.871, 2.852,
    2.864, 2.863, 2.872, 2.876, 2.876, 2.883, 2.886, 2.885, 2.887,
    2.891, 2.892, 2.886, 2.883, 2.878, 2.884, 2.884, 2.885, 2.89,
    2.89, 2.89, 2.89, 2.891, 2.889, 2.889, 2.893, 2.89, 2.891,
    2.893, 2.893, 2.897, 2.901, 2.896, 2.896, 2.898, 2.899, 2.898,
    2.893, 2.886, 2.89, 2.889, 2.89, 2.89, 2.887, 2.879, 2.87,
    2.87, 2.886, 2.888, 2.878, 2.877, 2.877, 2.879, 2.877, 2.874,
    2.876, 2.871, 2.87, 2.87, 2.87, 2.87, 2.866, 2.867, 2.872,
    2.879, 2.881, 2.881, 2.882, 2.882, 2.882, 2.885, 2.886, 2.884,
    2.884, 2.885, 2.887, 2.887, 2.885, 2.883, 2.882, 2.883, 2.881,
    2.883, 2.882, 2.883, 2.878, 2.875, 2.875, 2.875, 2.875, 2.879,
    2.879, 2.881, 2.882, 2.881, 2.881, 2.877, 2.876, 2.877, 2.875,
    2.874, 2.874, 2.872, 2.873, 2.874, 2.872, 2.871, 2.872, 2.875,
    2.876, 2.876, 2.873, 2.871, 2.872, 2.871, 2.871, 2.861, 2.857,
    2.86, 2.859, 2.854, 2.848, 2.85, 2.851, 2.854, 2.857, 2.86,
    2.861, 2.86, 2.862, 2.864, 2.865, 2.866, 2.867, 2.868, 2.868,
    2.872, 2.871, 2.872, 2.873, 2.876, 2.872, 2.872, 2.869, 2.866,
    2.863, 2.863, 2.866, 2.864, 2.864, 2.865, 2.864, 2.866, 2.866,
    2.866, 2.867, 2.87, 2.875, 2.875, 2.879, 2.884, 2.887, 2.892,
    2.891, 2.892, 2.887, 2.888, 2.89, 2.89, 2.889, 2.89, 2.888,
    2.888, 2.889, 2.887, 2.888, 2.887, 2.887, 2.887, 2.886, 2.889,
    2.886, 2.888, 2.879, 2.882, 2.883, 2.883, 2.883, 2.88, 2.878,
    2.878, 2.879, 2.88, 2.875, 2.868, 2.859, 2.86, 2.86, 2.862,
    2.86, 2.861, 2.856, 2.855, 2.852, 2.851, 2.854, 2.855, 2.856,
    2.858, 2.858, 2.857, 2.859, 2.86, 2.859, 2.86, 2.86, 2.856,
    2.857, 2.849, 2.851, 2.85, 2.849, 2.851, 2.851, 2.85, 2.851,
    2.854, 2.856, 2.857, 2.857, 2.857, 2.851, 2.853, 2.849, 2.849,
    2.842, 2.836, 2.835, 2.838, 2.838, 2.84, 2.838, 2.838, 2.838,
    2.83, 2.829, 2.83, 2.831, 2.832, 2.832, 2.834, 2.837, 2.831,
    2.83, 2.831, 2.827, 2.83, 2.835, 2.84, 2.842, 2.843, 2.84,
    2.839, 2.837, 2.837, 2.836, 2.838, 2.838, 2.837, 2.838, 2.836,
    2.843, 2.843, 2.843, 2.843, 2.845, 2.845, 2.846, 2.846, 2.846,
    2.845, 2.846, 2.847, 2.847, 2.845, 2.845, 2.845, 2.843, 2.844,
    2.848, 2.848, 2.847, 2.847, 2.846, 2.846, 2.846, 2.846, 2.846,
    2.846, 2.846, 2.846, 2.846, 2.844, 2.844, 2.84, 2.84, 2.84,
    2.84, 2.84, 2.84), NG1.Close = c(2.951, 2.955, 2.953, 2.95,
    2.946, 2.94, 2.939, 2.935, 2.94, 2.937, 2.937, 2.936, 2.929,
    2.926, 2.926, 2.927, 2.928, 2.93, 2.93, 2.93, 2.928, 2.927,
    2.926, 2.928, 2.928, 2.929, 2.928, 2.925, 2.924, 2.919, 2.911,
    2.911, 2.912, 2.913, 2.904, 2.892, 2.894, 2.887, 2.892, 2.894,
    2.896, 2.896, 2.898, 2.893, 2.893, 2.872, 2.878, 2.884, 2.871,
    2.864, 2.867, 2.872, 2.878, 2.88, 2.885, 2.887, 2.889, 2.887,
    2.891, 2.893, 2.893, 2.886, 2.884, 2.886, 2.89, 2.886, 2.889,
    2.89, 2.892, 2.891, 2.891, 2.894, 2.89, 2.897, 2.893, 2.891,
    2.897, 2.893, 2.898, 2.902, 2.901, 2.899, 2.898, 2.899, 2.901,
    2.898, 2.893, 2.893, 2.89, 2.892, 2.89, 2.891, 2.887, 2.886,
    2.874, 2.889, 2.888, 2.888, 2.879, 2.877, 2.879, 2.883, 2.877,
    2.877, 2.881, 2.872, 2.873, 2.873, 2.872, 2.87, 2.868, 2.871,
    2.879, 2.883, 2.882, 2.881, 2.883, 2.883, 2.884, 2.885, 2.887,
    2.884, 2.885, 2.89, 2.887, 2.887, 2.885, 2.885, 2.884, 2.884,
    2.885, 2.883, 2.884, 2.885, 2.88, 2.876, 2.876, 2.875, 2.878,
    2.881, 2.88, 2.884, 2.882, 2.882, 2.881, 2.877, 2.878, 2.877,
    2.876, 2.875, 2.874, 2.874, 2.874, 2.874, 2.872, 2.873, 2.875,
    2.877, 2.876, 2.876, 2.874, 2.873, 2.872, 2.873, 2.872, 2.862,
    2.861, 2.86, 2.859, 2.855, 2.853, 2.851, 2.854, 2.857, 2.859,
    2.862, 2.861, 2.863, 2.865, 2.865, 2.867, 2.867, 2.868, 2.869,
    2.874, 2.873, 2.872, 2.873, 2.878, 2.878, 2.874, 2.873, 2.87,
    2.867, 2.863, 2.867, 2.868, 2.865, 2.865, 2.865, 2.867, 2.866,
    2.866, 2.866, 2.871, 2.876, 2.875, 2.881, 2.886, 2.888, 2.892,
    2.894, 2.896, 2.893, 2.888, 2.891, 2.89, 2.89, 2.892, 2.891,
    2.888, 2.889, 2.889, 2.889, 2.89, 2.888, 2.888, 2.888, 2.888,
    2.889, 2.888, 2.889, 2.882, 2.883, 2.883, 2.884, 2.883, 2.88,
    2.879, 2.879, 2.88, 2.883, 2.876, 2.87, 2.865, 2.86, 2.862,
    2.865, 2.862, 2.863, 2.858, 2.856, 2.852, 2.854, 2.857, 2.856,
    2.857, 2.859, 2.858, 2.859, 2.86, 2.86, 2.86, 2.86, 2.86,
    2.858, 2.857, 2.853, 2.851, 2.852, 2.852, 2.854, 2.851, 2.851,
    2.856, 2.859, 2.857, 2.86, 2.858, 2.857, 2.854, 2.853, 2.85,
    2.85, 2.843, 2.836, 2.838, 2.839, 2.839, 2.841, 2.84, 2.838,
    2.84, 2.832, 2.832, 2.834, 2.831, 2.832, 2.836, 2.838, 2.838,
    2.833, 2.836, 2.835, 2.831, 2.835, 2.841, 2.841, 2.844, 2.843,
    2.84, 2.839, 2.838, 2.837, 2.838, 2.838, 2.839, 2.839, 2.839,
    2.843, 2.844, 2.844, 2.843, 2.845, 2.845, 2.846, 2.847, 2.847,
    2.848, 2.845, 2.847, 2.847, 2.847, 2.847, 2.847, 2.846, 2.843,
    2.847, 2.849, 2.85, 2.847, 2.848, 2.847, 2.847, 2.847, 2.847,
    2.846, 2.846, 2.847, 2.846, 2.846, 2.845, 2.844, 2.841, 2.841,
    2.84, 2.842, 2.841, 2.841), NG1.Volume = c(24, 249, 57, 48,
    203, 515, 228, 78, 163, 142, 99, 362, 182, 228, 233, 227,
    142, 142, 107, 80, 18, 312, 66, 122, 248, 98, 179, 245, 278,
    654, 1055, 934, 203, 141, 704, 1052, 637, 510, 607, 452,
    107, 71, 252, 136, 105, 928, 586, 288, 700, 2230, 562, 412,
    517, 174, 288, 503, 302, 292, 290, 335, 166, 177, 316, 383,
    267, 119, 233, 70, 165, 60, 143, 94, 222, 259, 84, 77, 297,
    69, 201, 647, 87, 283, 161, 110, 87, 65, 215, 365, 64, 78,
    110, 19, 88, 461, 1188, 1024, 204, 119, 152, 100, 144, 76,
    129, 94, 50, 148, 315, 79, 237, 305, 327, 64, 171, 256, 73,
    15, 35, 51, 167, 85, 70, 60, 86, 259, 68, 40, 36, 161, 66,
    18, 147, 19, 43, 169, 205, 138, 55, 67, 45, 78, 98, 66, 15,
    56, 57, 59, 68, 31, 29, 105, 93, 258, 158, 86, 87, 231, 153,
    69, 26, 35, 106, 170, 24, 332, 141, 664, 324, 110, 141, 246,
    1005, 138, 389, 307, 115, 170, 104, 98, 449, 179, 127, 69,
    66, 196, 363, 52, 69, 29, 56, 199, 78, 48, 85, 71, 224, 78,
    70, 73, 12, 35, 78, 92, 49, 69, 212, 259, 78, 184, 319, 471,
    552, 130, 269, 55, 179, 62, 14, 23, 173, 117, 87, 116, 16,
    85, 39, 43, 21, 25, 33, 75, 75, 119, 319, 243, 57, 13, 52,
    140, 110, 33, 51, 84, 126, 290, 548, 325, 152, 87, 114, 47,
    338, 191, 182, 142, 147, 72, 88, 58, 44, 40, 17, 45, 112,
    41, 77, 139, 23, 222, 87, 94, 326, 51, 119, 130, 204, 204,
    139, 39, 62, 52, 140, 179, 686, 319, 558, 607, 217, 81, 302,
    175, 105, 60, 104, 653, 393, 145, 63, 86, 443, 376, 438,
    666, 272, 639, 2668, 3012, 917, 430, 172, 76, 169, 225, 119,
    26, 95, 49, 82, 121, 105, 157, 37, 55, 201, 73, 40, 96, 46,
    193, 88, 35, 46, 60, 36, 102, 95, 45, 52, 210, 60, 63, 60,
    28, 33, 57, 47, 36, 110, 8, 12, 48, 8, 87, 112, 105, 99,
    57, 64, 52, 11)), row.names = c(NA, -359L), class = "data.frame",
.Names = c("times",
"NG1.Open", "NG1.High", "NG1.Low", "NG1.Close", "NG1.Volume"))


NG1 <- xts(ts[,-1],ts[,1])


initDate <- Sys.Date()-1
initEq <- 5000
n <- 14
nSMA <- 200

currency("USD")
Sys.setenv(TZ="UTC")
symbols <- "NG1"
stock(symbols, currency="USD", multiplier=1)

strategy.st <- 'teststrat'
portfolio.st <- 'teststrat'
account.st <- 'teststrat'
initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='USD')
initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
initEq=initEq, currency='USD')
initOrders(portfolio=portfolio.st, initDate=initDate)



strategy(name = strategy.st,
         store = TRUE)







add.indicator(
  strategy = strategy.st,
  name = 'RSI',
  arguments = list(price=quote(Cl(mktdata)),n=n),
  label = "rsi")

add.indicator(
  strategy = strategy.st,
  name = 'SMA',
  arguments = list(x=quote(Cl(mktdata)),n=nSMA),
  label = 'sma'
)


add.signal(
  strategy = strategy.st,
  name = 'sigThreshold',
  arguments=list(
    threshold = 30,
    column = "rsi",
    relationship="lt",
    cross = TRUE),
  label = "RSI_long"
)

add.signal(
  strategy = strategy.st,
  name = 'sigThreshold',
  arguments=list(
    threshold = 70,
    column = "rsi",
    relationship="gt",
    cross = TRUE),
  label = "RSI_short"
)



add.rule(
  strategy=strategy.st,
  name='ruleSignal',
  arguments=list(
    sigcol='RSI_long',
    sigval = TRUE,
    orderside = 'long',
    ordertype='market',
    orderqty=1,
    replace=FALSE
  ),
  type='enter',
  label='Enterlong',
  path.dep = TRUE
)

add.rule(
  strategy=strategy.st,
  name='ruleSignal',
  arguments=list(
    sigcol='RSI_short',
    sigval = TRUE,
    orderside = 'short',
    ordertype='market',
    orderqty=1,
    replace=TRUE
  ),
  type='exit',
  label='Exitlong',
  path.dep = TRUE

)


t1<-Sys.time()
out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
t2<-Sys.time()
print(t2-t1)



On Mon, Oct 24, 2016 at 3:19 PM, Kevin Dhingra <
[hidden email]> wrote:

> Hi Jon,
>
> As mentioned by Ilya, your arguments to SMA are incorrect. Also your
> program is missing the signal function. You need to convert your indicator
> into a signal using add.signal function before passing it to a rule. Try
> running the modified code -
>
> library(quantstrat)
> library(quantmod)
> library(tidyverse)
>
>
> ts <- structure(list(times = structure(c(1477312980, 1477313580,
>                                          1477314180,
>                                          1477314780, 1477315380,
> 1477315980, 1477316580, 1477317180, 1477317780,
>                                          1477318380, 1477318980,
> 1477319580, 1477320180, 1477320780, 1477321380,
>                                          1477321980, 1477322580,
> 1477323180, 1477323780, 1477324380, 1477324980,
>                                          1477325580, 1477326180,
> 1477326780, 1477327380, 1477327980, 1477328580,
>                                          1477329180, 1477329780,
> 1477330380, 1477330980, 1477331580, 1477332180,
>                                          1477332780, 1477333380,
> 1477333980, 1477334580), class = c("POSIXct",
>
>                           "POSIXt"), tzone = "UTC"), NG1.Open = c(2.954,
> 2.93, 2.936, 2.947,
>
>                                                                   2.951,
> 2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,
>
>                                                                   2.89,
> 2.88, 2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,
>
>                                                                   2.864,
> 2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,
>
>                                                                   2.851,
> 2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,
>
>
>                                              2.937, 2.954, 2.96, 2.957,
> 2.941, 2.932, 2.926, 2.902, 2.893,
>
>
>                                              2.898, 2.9, 2.905, 2.893,
> 2.883, 2.885, 2.891, 2.889, 2.884,
>
>
>                                              2.877, 2.877, 2.867, 2.878,
> 2.881, 2.887, 2.897, 2.893, 2.891,
>
>
>                                              2.884, 2.865, 2.862, 2.861,
> 2.859, 2.843, 2.845, 2.845, 2.842
>
>                                                                   ),
> NG1.Low = c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,
>
>
>      2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,
>
>
>      2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,
>
>
>      2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,
>
>
>      2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,
>
>
>                                          2.94, 2.93, 2.924, 2.892, 2.871,
> 2.891, 2.892, 2.898, 2.89, 2.879,
>
>
>                                          2.872, 2.884, 2.884, 2.878, 2.876,
> 2.876, 2.859, 2.865, 2.878,
>
>
>                                          2.865, 2.886, 2.892, 2.888, 2.879,
> 2.862, 2.858, 2.851, 2.858,
>
>
>                                          2.839, 2.836, 2.844, 2.839,
> 2.842), NG1.Volume = c(2347, 4491,
>
>
>
>                 2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506,
> 2084,
>
>
>
>                 3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206,
> 938,
>
>
>
>                 1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227,
> 9590,
>
>
>
>                 1067, 128)), row.names = c(NA, -37L), class = "data.frame",
> .Names =
>                   c("times",
>                     "NG1.Open", "NG1.High", "NG1.Low", "NG1.Close",
> "NG1.Volume"))
>
> NG1 <- xts(ts[,-1],ts[,1])
>
>
> initDate <- index(NG1)[1]
> initEq <- 5000
> n <- 14
>
> currency("USD")
> Sys.setenv(TZ="UTC")
> symbols <- "NG1"
> stock(symbols, currency="USD", multiplier=1)
>
> strategy.st <- 'teststrat'
> portfolio.st <- 'teststrat'
> account.st <- 'teststrat'
> initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='
> USD')
> initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
>          initEq=initEq, currency='USD')
> initOrders(portfolio=portfolio.st, initDate=initDate)
>
>
>
> strategy(name = strategy.st,
>          store = TRUE)
>
> add.indicator(
>   strategy = strategy.st,
>   name = 'RSI',
>   arguments = list(price=quote(Cl(mktdata)),n=n),
>   label = "rsi")
>
>
>
> add.signal(strategy.st, name="sigThreshold",
>            arguments=list(column="rsi", threshold= 40,
>                           relationship="lt", cross=FALSE),
>            label="RSI_long")
>
> add.rule(
>   strategy=strategy.st,
>   name='ruleSignal',
>   arguments=list(
>     sigcol='RSI_long',
>     sigval = TRUE,
>     orderside = 'long',
>     ordertype='market',
>     orderqty=1,
>     replace=FALSE
>   ),
>   type='enter',
>   label='Enterlong',
>   path.dep = TRUE
> )
>
>
>
>
> t1<-Sys.time()
> out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
> t2<-Sys.time()
> print(t2-t1)
>
> On Mon, Oct 24, 2016 at 3:07 PM, Ilya Kipnis <[hidden email]>
> wrote:
>
>> Hi Jon,
>>
>> First off, check the parameters on your add.indicator call for your SMA
>> function.
>>
>> Secondly, your data is only 37 observations long and you have a setting of
>> 200.
>>
>> Please fix these two issues.
>>
>> -Ilya
>>
>> On Mon, Oct 24, 2016 at 2:55 PM, Jon Golenbock <[hidden email]>
>> wrote:
>>
>> > Hi folks,
>> >
>> > new to this mailing list and not very proficient with R in general yet,
>> so
>> > apologies in advance.
>> >
>> > all of the demos I could see were using stock data pulled from
>> > yahoo/google, etc -- mine is coming from bloomberg. I did my best to
>> > replicate the type of object that getsymbols() seems to create.
>> >
>> > everything seems to be working alright until I actually get to
>> > applystrategy(), where I am getting an error that I imagine, while not
>> > particularly helpful to me, will be completely obvious to somebody with
>> a
>> > bit more experience. the error i'm receiving is
>> >
>> > Error in n < 1 :
>> >   comparison (3) is possible only for atomic and list types
>> >
>> > code below. Any help is greatly appreciated and apologies for all the
>> rules
>> > I am surely breaking, I'll plead first-timer on this one.
>> >
>> >
>> >
>> > library(quantstrat)
>> > library(quantmod)
>> > library(tidyverse)
>> >
>> >
>> > ts <- structure(list(times = structure(c(1477312980, 1477313580,
>> > 1477314180,
>> > 1477314780, 1477315380, 1477315980, 1477316580, 1477317180, 1477317780,
>> > 1477318380, 1477318980, 1477319580, 1477320180, 1477320780, 1477321380,
>> > 1477321980, 1477322580, 1477323180, 1477323780, 1477324380, 1477324980,
>> > 1477325580, 1477326180, 1477326780, 1477327380, 1477327980, 1477328580,
>> > 1477329180, 1477329780, 1477330380, 1477330980, 1477331580, 1477332180,
>> > 1477332780, 1477333380, 1477333980, 1477334580), class = c("POSIXct",
>> > "POSIXt"), tzone = "UTC"), NG1.Open = c(2.954, 2.93, 2.936, 2.947,
>> > 2.951, 2.941, 2.929, 2.924, 2.893, 2.871, 2.891, 2.892, 2.898,
>> > 2.89, 2.88, 2.872, 2.885, 2.884, 2.879, 2.876, 2.876, 2.859,
>> > 2.864, 2.878, 2.866, 2.886, 2.892, 2.889, 2.878, 2.861, 2.859,
>> > 2.851, 2.859, 2.84, 2.836, 2.844, 2.839), NG1.High = c(2.959,
>> > 2.937, 2.954, 2.96, 2.957, 2.941, 2.932, 2.926, 2.902, 2.893,
>> > 2.898, 2.9, 2.905, 2.893, 2.883, 2.885, 2.891, 2.889, 2.884,
>> > 2.877, 2.877, 2.867, 2.878, 2.881, 2.887, 2.897, 2.893, 2.891,
>> > 2.884, 2.865, 2.862, 2.861, 2.859, 2.843, 2.845, 2.845, 2.842
>> > ), NG1.Low = c(2.929, 2.916, 2.931, 2.946, 2.935, 2.924, 2.924,
>> > 2.886, 2.871, 2.852, 2.878, 2.889, 2.886, 2.87, 2.87, 2.866,
>> > 2.882, 2.875, 2.875, 2.871, 2.857, 2.848, 2.864, 2.863, 2.864,
>> > 2.884, 2.886, 2.878, 2.859, 2.851, 2.849, 2.849, 2.835, 2.829,
>> > 2.827, 2.836, 2.836), NG1.Close = c(2.93, 2.936, 2.947, 2.951,
>> > 2.94, 2.93, 2.924, 2.892, 2.871, 2.891, 2.892, 2.898, 2.89, 2.879,
>> > 2.872, 2.884, 2.884, 2.878, 2.876, 2.876, 2.859, 2.865, 2.878,
>> > 2.865, 2.886, 2.892, 2.888, 2.879, 2.862, 2.858, 2.851, 2.858,
>> > 2.839, 2.836, 2.844, 2.839, 2.842), NG1.Volume = c(2347, 4491,
>> > 2793, 1124, 1624, 1864, 1646, 6497, 3625, 5570, 2231, 1506, 2084,
>> > 3443, 1372, 1464, 931, 906, 557, 1266, 2047, 3021, 1206, 938,
>> > 1375, 1928, 582, 1203, 1810, 1309, 803, 1368, 3141, 2227, 9590,
>> > 1067, 128)), row.names = c(NA, -37L), class = "data.frame", .Names =
>> > c("times",
>> > "NG1.Open", "NG1.High", "NG1.Low", "NG1.Close", "NG1.Volume"))
>> >
>> > NG1 <- xts(ts[,-1],ts[,1])
>> >
>> >
>> > initDate <- Sys.Date()-1
>> > initEq <- 5000
>> > n <- 14
>> > nSMA <- 200
>> >
>> > currency("USD")
>> > Sys.setenv(TZ="UTC")
>> > symbols <- "NG1"
>> > stock(symbols, currency="USD", multiplier=1)
>> >
>> > strategy.st <- 'teststrat'
>> > portfolio.st <- 'teststrat'
>> > account.st <- 'teststrat'
>> > initPortf(portfolio.st, symbols = symbols, initDate=initDate,currency='
>> > USD')
>> > initAcct(account.st, portfolios=portfolio.st, initDate=initDate,
>> > initEq=initEq, currency='USD')
>> > initOrders(portfolio=portfolio.st, initDate=initDate)
>> >
>> >
>> >
>> > strategy(name = strategy.st,
>> >          store = TRUE)
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > add.indicator(
>> >   strategy = strategy.st,
>> >   name = 'RSI',
>> >   arguments = list(price=quote(Cl(mktdata)),n=n),
>> >   label = "rsi")
>> >
>> > add.indicator(
>> >   strategy = strategy.st,
>> >   name = 'SMA',
>> >   arguments = list(x=quote(Cl(mktdata)),n=SMA),
>> >   label = 'sma'
>> > )
>> >
>> >
>> >
>> > add.rule(
>> >   strategy=strategy.st,
>> >   name='ruleSignal',
>> >   arguments=list(
>> >     sigcol='RSI_long',
>> >     sigval = TRUE,
>> >     orderside = 'long',
>> >     ordertype='market',
>> >     orderqty=1,
>> >     replace=FALSE
>> >   ),
>> >   type='enter',
>> >   label='Enterlong',
>> >   path.dep = TRUE
>> > )
>> >
>> > add.rule(
>> >   strategy=strategy.st,
>> >   name='ruleSignal',
>> >   arguments=list(
>> >     sigcol='RSI_short',
>> >     sigval = TRUE,
>> >     orderside = 'short',
>> >     ordertype='market',
>> >     orderqty=1,
>> >     replace=TRUE
>> >   ),
>> >   type='exit',
>> >   label='Exitlong',
>> >   path.dep = TRUE
>> >
>> > )
>> >
>> >
>> > t1<-Sys.time()
>> > out<-applyStrategy(strategy=strategy.st,portfolios = portfolio.st)
>> > t2<-Sys.time()
>> > print(t2-t1)
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > [hidden email] mailing list
>> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> > -- Subscriber-posting only. If you want to post, subscribe first.
>> > -- Also note that this is not the r-help list where general R questions
>> > should go.
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> -- Subscriber-posting only. If you want to post, subscribe first.
>> -- Also note that this is not the r-help list where general R questions
>> should go.
>>
>
>

        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.