抱歉造成任何不便:我从 r-sig-finance 交叉发布,因为我没有收到关于以下问题的任何意见。
++++
大家好,
我正在测试一个简单的布林线突破:
if Close > UpperBand Then Long
if Close < LowerbandBand Then Short
如果 Close 跨越 MidBand 然后退出
这是发生的事情:
- 我按预期在收盘价低于下限时进入空头头寸
- 进入空头头寸后,在订单簿中我可以看到正在创建止损限价单:低于我的空头头寸的入场价格
- 价格进一步下跌,止损被触发,我的空头在止损阈值处平仓,但低于入场价
我希望:
a) 在我的空头入场价之上创建的止损 b) 在亏损时触发,而不是在做空时触发。我在这里做错了什么?
我不确定我的代码的哪些部分会有所帮助,在向您充斥订单簿、交易等之前。我将从我的信号和规则开始(如下)。非常感谢您的意见。谢谢!
add.indicator(strat.st, name = "BBands",
arguments = list(HLC = quote(HLC(mktdata)), maType='SMA'), label='BBands')
add.signal(strat.st, name="sigCrossover",
arguments=list(columns=c("Close","up"),relationship="gt"),
label="Cl.gt.UpperBand")
add.signal(strat.st, name="sigCrossover",
arguments=list(columns=c("Close","dn"),relationship="lt"),
label="Cl.lt.LowerBand")
add.signal(strat.st, name="sigCrossover",
arguments=list(columns=c("Close","mavg"),relationship="gt"),
label="Cross.Mid.GT")
add.signal(strat.st, name="sigCrossover",
arguments=list(columns=c("Close","mavg"),relationship="lt"),
label="Cross.Mid.LT")
add.rule(strat.st, name='ruleSignal',
arguments=list(sigcol="Cl.gt.UpperBand",sigval=TRUE, orderqty=1,
ordertype='market', orderside=NULL, threshold=NULL, osFUN=osFixedDollar,
orderset='ocolong'),
type='enter',label="LE")
add.rule(strat.st, name='ruleSignal',
arguments=list(sigcol="Cl.lt.LowerBand",sigval=TRUE, orderqty= -1,
ordertype='market', orderside=NULL, threshold=NULL, osFUN=osFixedDollar,
orderset='ocoshort'),
type='enter',label="SE")
add.rule(strat.st, name='ruleSignal',
arguments=list(sigcol="Cross.Mid.GT",sigval=TRUE, orderqty= 'all',
ordertype='market', orderside=NULL, threshold=NULL),
type='exit', label="midCrossGT")
add.rule(strat.st, name='ruleSignal',
arguments=list(sigcol="Cross.Mid.LT",sigval=TRUE, orderqty= 'all',
ordertype='market', orderside=NULL, threshold=NULL),
type='exit', label="midCrossLT")
add.rule(strat.st, name = 'ruleSignal',
arguments=list(sigcol='Cl.gt.UpperBand' , sigval=TRUE,
replace=FALSE,
orderside=NULL,
ordertype='limit',
tmult=TRUE,
threshold=quote(.stoploss),
orderqty='all',
orderset='ocolong'
),
type='chain', parent='LE',
label='StopLossLONG',
enabled=FALSE
)
add.rule(strat.st, name = 'ruleSignal',
arguments=list(sigcol='Cl.lt.LowerBand' , sigval=TRUE,
replace=FALSE,
orderside=NULL,
ordertype='limit',
tmult=TRUE,
threshold=quote(.stoploss),
orderqty='all',
orderset='ocoshort'
),
type='chain', parent='SE',
label='StopLossSHORT',
enabled=FALSE
)