[R-SIG-Finance] Unexpected StopLoss order placed and triggered

Peter Neumaier peter.neumaier at gmail.com
Tue Mar 15 13:52:11 CET 2016


Hi all,

I am testing a simple Bollinger-Breakout:

if Close > UpperBand Then Long
if Close < LowerbandBand Then Short
if Close Crosses MidBand Then Exit

Here is what happens:

- I am entering as expected a short position on closing below the lower band
- Immediately after entering the short position, in the order book I can
see a stop loss limit order being created: BELOW the entry price of my
short position
- Price drops further, stop loss is getting triggered and my short gets
closed at the stop loss threshhold, but BELOW the entry price

I would expect the stop loss to be triggered when losing money and not when
making. What am I doing wrong here?

I am not sure which parts of my code would help, and before flooding you
with orderbook, transactions etc. I'll start with my signal and rules
(below).
Your input is greatly appreciated. Thanks!

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
)

	[[alternative HTML version deleted]]



More information about the R-SIG-Finance mailing list