[R-SIG-Finance] Long Enter Position do not "block" Short Enter Orders

Ilya Kipnis ilya.kipnis at gmail.com
Mon Apr 11 17:13:19 CEST 2016


I see your question. If you want short orders not to fire when you have a
long position, you should create a custom order sizing function that
returns 0 if your current position isn't zero for both long and short
positions.

On Mon, Apr 11, 2016 at 11:07 AM, Diego Peroni <diegoperoni at vodafone.it>
wrote:

> Thank you Ilya,
>
> I've placed orderset='ocoall' in both ENTER orders (named "LE" and "SE")
> as in the following code but testing them I have the same problem: long
> positions are closed by short (enter) positions...
> Can you please tell me what I'm doing wrong?
>
> Diego
>
>
> #################################
> # MAX POSITION (1 future)
> #################################
> addPosLimit(portfolio = qs.strategy, symbol = symbol, timestamp =
> initDate, maxpos = 1)
>
> #################################
> # LONG STRATEGY
> #################################
> add.rule(qs.strategy, name='ruleSignal',
>          arguments = list(sigcol="upTrend", sigval=TRUE,
>                           replace=TRUE,
>                           prefer='Open',
>                           orderside='long',
>                           ordertype='stoplimit',
>
> order.price=quote(mktdata$price.enter.long[timestamp]),
>                           orderqty=1,
>                           osFUN='osMaxPos',
>                           orderset='ocoall',
>
>                           time.in.force=quote(timeInForceLong)),
>          type='enter',
>          label='LE')
>
> add.rule(qs.strategy, name='ruleSignal',
>          arguments=list(sigcol='exitLong', sigval=TRUE,
>                         replace=FALSE,
>                         orderside='long',
>                         ordertype='market',
>                         orderqty='all',
>                         prefer='Open'
>          ),
>          type='exit',
>          label='ExitLong',
>          enabled=TRUE)
>
> #################################
> # SHORT STRATEGY
> #################################
> add.rule(qs.strategy, name='ruleSignal',
>          arguments=list(sigcol="downTrend", sigval=TRUE,
>                         replace=TRUE,
>                         prefer='Open',
>                         orderside='short',
>                         ordertype='stoplimit',
>
> order.price=quote(mktdata$price.enter.short[timestamp]),
>                         orderqty=-1,
>                         osFUN='osMaxPos',
>                         orderset='ocoall',
>                         time.in.force=quote(timeInForceShort)),
>          type='enter',
>          label='SE')
>
> add.rule(qs.strategy, name='ruleSignal',
>          arguments=list(sigcol='exitShort', sigval=TRUE,
>                         replace=FALSE,
>                         orderside='short',
>                         ordertype='market',
>                         orderqty='all',
>                         prefer='Open'
>          ),
>          type='exit',
>          label='ExitShort',
>          enabled=TRUE)
>
>
>
>
>
> On 11/04/2016 15:05, Ilya Kipnis wrote:
>
> Short orders do not by default cancel long orders. You need to have them
> in the same order set.
>
> On Mon, Apr 11, 2016 at 6:39 AM, Diego Peroni <diegoperoni at vodafone.it>
> wrote:
>
>> Hi all,
>>
>> my simple strategy sets long/short ENTER orders and relative long/short
>> EXIT orders.
>>
>> I don't understand why, if I have an open LONG position, SHORT enter
>> order triggers (wrongly closing open position...).
>>
>> My desire is that if I already have an OPEN position (long) "opposite"
>> orders (short enter) do not triggers.
>>
>> Thanks in advance for your help
>>
>> Diego
>>
>>
>> #################################
>> # MAX POSITION (1 future)
>> #################################
>> addPosLimit(portfolio = qs.strategy, symbol = symbol, timestamp =
>> initDate, maxpos = 1)
>>
>> #################################
>> # LONG STRATEGY
>> #################################
>> add.rule(qs.strategy, name='ruleSignal',
>>          arguments = list(sigcol="upTrend", sigval=TRUE,
>>                           replace=TRUE,
>>                           prefer='Open',
>>                           orderside='long',
>>                           ordertype='stoplimit',
>> order.price=quote(mktdata$price.enter.long[timestamp]),
>>                           orderqty=1,
>>                           osFUN='osMaxPos',
>>                           time.in.force=quote(timeInForceLong)),
>>          type='enter',
>>          label='LE')
>> add.rule(qs.strategy, name='ruleSignal',
>>          arguments=list(sigcol='exitLong', sigval=TRUE,
>>                         replace=FALSE,
>>                         orderside='long',
>>                         ordertype='market',
>>                         orderqty='all',
>>                         prefer='Open'
>>          ),
>>          type='exit',
>>          label='ExitLong',
>>          enabled=TRUE)
>>
>> #################################
>> # SHORT STRATEGY
>> #################################
>> add.rule(qs.strategy, name='ruleSignal',
>>          arguments=list(sigcol="downTrend", sigval=TRUE,
>>                         replace=TRUE,
>>                         prefer='Open',
>>                         orderside='short',
>>                         ordertype='stoplimit',
>> order.price=quote(mktdata$price.enter.short[timestamp]),
>>                         orderqty=-1,
>>                         osFUN='osMaxPos',
>>                         time.in.force=quote(timeInForceShort)),
>>          type='enter',
>>          label='SE')
>> add.rule(qs.strategy, name='ruleSignal',
>>          arguments=list(sigcol='exitShort', sigval=TRUE,
>>                         replace=FALSE,
>>                         orderside='short',
>>                         ordertype='market',
>>                         orderqty='all',
>>                         prefer='Open'
>>          ),
>>          type='exit',
>>          label='ExitShort',
>>          enabled=TRUE)
>>
>> _______________________________________________
>> R-SIG-Finance at r-project.org 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]]



More information about the R-SIG-Finance mailing list