1

抱歉造成任何不便:我从 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
)
4

0 回答 0