stratMACROSS <- add.indicator(strategy = stratMACROSS, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=50),
label= "ma50" )
stratMACROSS <- add.indicator(strategy = stratMACROSS, name = "SMA",
arguments = list(x=quote(Cl(mktdata)[,1]), n=200),
label= "ma200")
stratMACROSS <- add.signal(strategy = stratMACROSS, name="sigCrossover",
arguments = list(columns=c("ma50","ma200"),
relationship="gte"),
label="ma50.gt.ma200")
stratMACROSS <- add.signal(strategy = stratMACROSS, name="sigCrossover",
arguments = list(column=c("ma50","ma200"),
relationship="lt"),
label="ma50.lt.ma200")
stratMACROSS <- add.rule(strategy = stratMACROSS, name='ruleSignal',
arguments = list(sigcol="ma50.gt.ma200", sigval=TRUE,
orderqty=100, ordertype='market',
orderside='long'),
type='enter')
stratMACROSS <- add.rule(strategy = stratMACROSS, name='ruleSignal',
arguments = list(sigcol="ma50.lt.ma200", sigval=TRUE,
orderqty='all', ordertype='market',
orderside='long'),
type='exit')
上記は、移動平均(MV) 50 が MV200 を超えたときに株を買い、MV50 が MV200 を下回ったときに売ります。このコードでは、さらに 2 つの条件を追加したいと思います。
Buy
(MV 50 Crosses above MV200) and (close price is above MV50 and MV200)
Sell
(MV 200 Crosses above MV50) and (close price is below MV50 and MV200)
これを行う方法?