[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [amibroker] Re: ExRem



PureBytes Links

Trading Reference Links

You have to design your system so that it doesn't give you two simultaneous opposing signals at the same time :-) It is not the backtester that is the problem. i suggest stepping through the code and see if everything is logical.
 
If you maintain a position variable then you could only accept a short signal when in a long position and only accept a long signal when in a short position. You would alternate. In real time you would have to use a StaticVariable to maintain position status but they would occur before the other and you get whipsawed unless you write pretective code.
 
take care,
herman
 
 
-----Original Message-----
From: qweds_560 [mailto:qweds_560@xxxxxxxxx]
Sent: Wednesday, January 19, 2005 12:24 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: [amibroker] Re: ExRem


Hi Herman,

Yes, I see the logic of defining the buy, short etc first and then
modifying the exits later on. I will be doing this from now on.

I appear to have found a problem with not using exRem on when
backtesting a simple buy and reverse system on bar data. If there
are both buy and short signals on a bar, then the backtester doesn't
take the short signal, only the long signal. (This then means that
you may have two (or more) long trades in a row rather than
alternating). The next short trade is then on a different bar.

This problem also occurs when using Equity(1).

The problem does not seem to occur when using exRem.

The settings in the "Settings" box were the same for both. All four
boxes were checked.

Any thoughts?

Sam


--- In amibroker@xxxxxxxxxxxxxxx, "Herman van den Bergen"
<psytek@xxxx> wrote:
> Hi Sam,
>
> Yes you could do it that way. Not that it is any better, but i
normally
> early in my code define:
>
> Buy = Long Entry Rule...
> Short = ShortEntry rule...
> Sell = Short;
> Cover = Buy;
>
> At this stage the system is 100% reversal and trades alternate
from Long to
> Short, same as you require. Later down the code however I can
modify the
> exits, for example with ApplyStop(), this would add an extra exit
signal
> when a stop occurs. However the entry signals are untouched so the
system is
> still a reversal system however now there is a cash position
between the
> stop exit and the next entry. At this point I use Equity(1) which
removes
> all redundant signals, cleans it up nicely. No exRem() is needed
in this
> procedure.
>
> Now, if I wanted to reverse on Stops I could add
>
> Short = Sell;
> Buy = Cover;
>
> after the ApplyStop(). This would then add an extra entry signal
which again
> could be cleaned up with Equity(1). Note that Equity(1) is only
needed if
> you need clean signals (say for plotShapes) because the backtester
will
> remove redundant signals anyway.
>
> As always there are a million ways to write code and one way is not
> necessarily better than the other.
>
> take care,
> herman.
>
>
>
>   -----Original Message-----
>   From: qweds_560 [mailto:qweds_560@xxxx]
>   Sent: Tuesday, January 18, 2005 5:56 PM
>   To: amibroker@xxxxxxxxxxxxxxx
>   Subject: [amibroker] Re: ExRem
>
>
>
>   Herman,
>
>   I think I understand re: position. Essentially this returns a
value
>   of 1 or 0 which may be of use if you need the system to know if
you
>   are long or short.
>
>   The reason why I have been using:
>
>   Buy = ExRem( Buy, Short);
>   Sell = ExRem( Sell, Buy );
>   Short=ExRem(Short,Buy);
>   Cover=ExRem(Cover,Short);
>
>   is because I do not want to take a long position unless my last
>   trade was a short position and vice versa (the first trade can be
>   either short or long). If I implement your way, the backtester
may
>   go long, stop me out and then go long again and stop me out and
so
>   on before it comes to a short signal. I only want to go long
once,
>   sell at my stop and then monitor for a short signal.
>
>   Hope this makes some sense (hope that i am using exrem correctly
as
>   well!)
>
>   Best regards
>
>   Sam
>
>
>
>
>
>   --- In amibroker@xxxxxxxxxxxxxxx, "Herman van den Bergen"
>   <psytek@xxxx> wrote:
>   > [Sam] I didn't understand...these don't appear to do anything
>   since they are
>   > not predefined variables:
>   >
>   > > Position = exRem(Buy,Short);
>   >
>   > You were using Buy and Short in you initial code so they were
>   > defined...Position here is simply a custom variable that
assumes
>   the value
>   > of 1 when you are Long and 0 when you are Short - useful for a
>   variety of
>   > purposes; for example plotting a Position Ribbon:
>   > Position = exRem(Buy,Short);
>   > Plot(1,"Position",iif
>   (Position,colorGreen,colorRed),styleArea|styleownscale,
>   > 0,30);
>   >
>   > > LongPosition = exRem(Buy,Sell);
>   > > ShortPosition = exRem(Short,Cover);
>   >
>   > The above can be used similarly for non-reversal systems or
when
>   you use
>   > stops.
>   >
>   > [Sam] However, I essentially want to alternate between going
long
>   and
>   > going short.
>   >
>   > Not sure how you generate your signals... the way you toggle
your
>   positions
>   > is new to me... my systems always define all four signals
>   logically and
>   > rigidly. I do this also so that if I add stops the system will
>   continue to
>   > behave as expected.  I am not sure if exRem is intended
to "add"
>   anything in
>   > the area of signal generation...but perhaps i misunderstand
what
>   you are
>   > doing.
>   >
>   > best regards,
>   > herman
>   >
>   >
>   >
>   >
>   >
>   >
>   >
>   >
>   >
>   >   -----Original Message-----
>   >   From: qweds_560 [mailto:qweds_560@xxxx]
>   >   Sent: Tuesday, January 18, 2005 2:41 PM
>   >   To: amibroker@xxxxxxxxxxxxxxx
>   >   Subject: [amibroker] Re: ExRem
>   >
>   >
>   >
>   >   Many thanks Herman,
>   >
>   >   However, I essentially want to alternate between going long
and
>   >   going short.
>   >
>   >   > Buy = exRem(Buy,Sell);
>   >   > Sell = exRem(Sell,Buy);
>   >   > Short = exRem(Short,Cover);
>   >   > Cover = exRem(Cover,Short);
>   >
>   >   the above means that I have more than 1 short or more than 1
long
>   >   position in a sequence.
>   >
>   >   Using:
>   >
>   >   Buy = ExRem( Buy, Short);
>   >   Sell = ExRem( Sell, Buy );
>   >
>   >   Short=ExRem(Short,Buy);
>   >   Cover=ExRem(Cover,Short);
>   >
>   >   seems to alternate between long and short positions.
>   >
>   >   I didn't understand:
>   >
>   >   > Position = exRem(Buy,Short);
>   >
>   >   > LongPosition = exRem(Buy,Sell);
>   >   > ShortPosition = exRem(Short,Cover);
>   >
>   >   these don't appear to do anything since they are not
predefined
>   >   variables.
>   >
>   >   Could you explain?
>   >
>   >   Thanks
>   >
>   >   Sam
>   >
>   >
>   >
>   >
>   >
>   >
>   >   --- In amibroker@xxxxxxxxxxxxxxx, "Herman van den Bergen"
>   >   <psytek@xxxx> wrote:
>   >   > Assuming you are trading a reversal system, perhaps a more
>   logical
>   >   way would
>   >   > be:
>   >   >
>   >   > Buy = exRem(Buy,Sell);
>   >   > Sell = exRem(Sell,Buy);
>   >   > Short = Sell;
>   >   > Cover = Buy;
>   >   >
>   >   > In some case you can use
>   >   >
>   >   > Position = exRem(Buy,Short);
>   >   >
>   >   > but this assumes that you are not using any other exits
>   (stops),
>   >   if your
>   >   > system include other exits you might want to use this
after the
>   >   stops have
>   >   > been processed:
>   >   >
>   >   > Buy = exRem(Buy,Sell);
>   >   > Sell = exRem(Sell,Buy);
>   >   > Short = exRem(Short,Cover);
>   >   > Cover = exRem(Cover,Short);
>   >   >
>   >   > of course you can simply use
>   >   >
>   >   > Equity(1);
>   >   > LongPosition = exRem(Buy,Sell);
>   >   > ShortPosition = exRem(Short,Cover);
>   >   >
>   >   > best regards,
>   >   > herman
>   >   >   -----Original Message-----
>   >   >   From: qweds_560 [mailto:qweds_560@xxxx]
>   >   >   Sent: Tuesday, January 18, 2005 7:10 AM
>   >   >   To: amibroker@xxxxxxxxxxxxxxx
>   >   >   Subject: [amibroker] ExRem
>   >   >
>   >   >
>   >   >
>   >   >   Hello,
>   >   >
>   >   >   I am a little bit confused by the Exrem function. I have
the
>   >   >   following:
>   >   >
>   >   >   Buy = ExRem(Buy, Short);
>   >   >
>   >   >   Short=ExRem(Short,Buy);
>   >   >
>   >   >
>   >   >   In English, this means to me that the backtester
>   >   >
>   >   >   i) will go long on a buy signal and then will not buy
again
>   till
>   >   it
>   >   >   has gone short
>   >   >
>   >   >   ii) will short on a short signal and then not go short
again
>   >   till it
>   >   >   has gone long
>   >   >
>   >   >   Is this correct? Do I need to define something for SELL
and
>   for
>   >   >   COVER?
>   >   >
>   >   >   Thanks
>   >   >
>   >   >   Sam
>   >   >
>   >   >
>   >   >
>   >   >
>   >   >
>   >   >
>   >   >
>   >   >   Check AmiBroker web page at:
>   >   >   http://www.amibroker.com/
>   >   >
>   >   >   Check group FAQ at:
>   >   > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>   >   >
>   >   >
>   >   >
>   >   > -----------------------------------------------------------
----
>   ----
>   >   ---------
>   >   > --
>   >   >   Yahoo! Groups Links
>   >   >
>   >   >     a.. To visit your group on the web, go to:
>   >   >     http://groups.yahoo.com/group/amibroker/
>   >   >
>   >   >     b.. To unsubscribe from this group, send an email to:
>   >   >     amibroker-unsubscribe@xxxxxxxxxxxxxxx
>   >   >
>   >   >     c.. Your use of Yahoo! Groups is subject to the Yahoo!
>   Terms
>   >   of Service.
>   >
>   >
>   >
>   >
>   >
>   >   Check AmiBroker web page at:
>   >   http://www.amibroker.com/
>   >
>   >   Check group FAQ at:
>   > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>   >
>   >
>   >
>   > ---------------------------------------------------------------
----
>   ---------
>   > --
>   >   Yahoo! Groups Links
>   >
>   >     a.. To visit your group on the web, go to:
>   >     http://groups.yahoo.com/group/amibroker/
>   >
>   >     b.. To unsubscribe from this group, send an email to:
>   >     amibroker-unsubscribe@xxxxxxxxxxxxxxx
>   >
>   >     c.. Your use of Yahoo! Groups is subject to the Yahoo!
Terms
>   of Service.
>
>
>
>
>
>   Check AmiBroker web page at:
>   http://www.amibroker.com/
>
>   Check group FAQ at:
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>
>
>
> -------------------------------------------------------------------
---------
> --
>   Yahoo! Groups Links
>
>     a.. To visit your group on the web, go to:
>     http://groups.yahoo.com/group/amibroker/
>
>     b.. To unsubscribe from this group, send an email to:
>     amibroker-unsubscribe@xxxxxxxxxxxxxxx
>
>     c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms
of Service.





Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html




Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html




Yahoo! Groups Links