PureBytes Links
Trading Reference Links
|
Hi Herman,
Thanks for this. You have written pos=flip(buy,sell). I didn't
understand why since this is not referred to by any of the other
variables and so is not used. Is this correct?
I tried your code and it did give the best exits (yes, optimizing
gives phenomenal results- wish i could see future prices!).
I then had an idea and using the previous code you gave me, I
managed to obtain output in the backtester which gave the entries
together with the BEST exits! The key seems to be adding:
SetOption("PriceBoundChecking",False);
and also setting:
Sell=SellPrice == bestSellPrice;
Cover=CoverPrice == bestcoverPrice;
The whole code I used is as follows:
SetOption("PriceBoundChecking",False);//switches off checking
high/low in bar
Buy = ..conditions;
Short = ...conditions;
Sell = Short;
Cover = Buy;
BuyPrice = ...
ShortPrice = ...
SellPrice=High;
CoverPrice=Low;
Buy = ExRem(Buy,Short);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Buy);
Cover = ExRem(Cover,Short);
Pos = Flip(Buy,Short);//returns 1 on each bar until it has a short
signal where it reverts to 0
Temp = HighestSince(Buy,H);//highest high since a buy signal
Temp = ValueWhen(Short,Temp ,0);//value of the highest buy since a
buy signal if there is a short signal
Temp = IIf(pos, Temp , Null);//if in long mode, then return value of
the highest buy since a buy signal as long as there is a short
signal, otherwise 0
BestSellPrice = Temp;
pos1 = Flip(Short,Buy);
Temp1 = LowestSince(Short,L);
Temp1 = ValueWhen(Buy,Temp1 ,0);
Temp1 = IIf(pos1, Temp1 , Null);
BestcoverPrice = Temp1;
Sell=SellPrice == bestSellPrice;//sell where sellprice becomes equal
to bestsellprice
Cover=CoverPrice == bestcoverPrice;
This has the added benefit of correct time of the best exit (I am
testing on intraday data). However, a minor inconvenience is that it
does not calculate the best exits for the first buy and first short
trade that occurs in the data (probably because there were no buys
and sells previously to reference from).
Herman, can you tell me if the comments against the code are
correct? It's just that I am not 100% sure why the code should work.
Many thanks for all your assistance
Sam
--- In amibroker@xxxxxxxxxxxxxxx, "Herman van den Bergen"
<psytek@xxxx> wrote:
> Sam,
>
> To see the difference between normal exit prices and best exit
prices you
> have to set the SellPrice and Cover price. Run the code below on,
try LLTC
> EOD, in the optimizer. You get two result lines, one using best
prices and
> one using normal prices. I think you can place some of the
variables in
> AddColumn()s to allow verification - I did not test the code
extensively.
> You must enter at the open because the MFE and MAEs can happen any
time
> during the day. I think you have to delay the best price to make it
> available at the time of the exit signal. The profit ratio is
something like
> 8000%(normal prices) to 4 billion%(BestPrices) in about ten years.
Try the
> system you might be able to improve it... it is an old one from my
files.
>
> Good luck,
> herman
>
> // BestSellPrice experiment
> // Run in Optimizer on LLTC, when Test==1 you are trading best
prices
> SetTradeDelays(1,1,1,1);
> SetOption("PriceBoundChecking",False);
> Test = Optimize("Test",0,0,1,1);
> BuyPrice = SellPrice = ShortPrice = CoverPrice = Open;
>
> //////////////// SumRSI system by herman ////////////////
> Ind=(Sum(RSI(3)-LLV(RSI(3),17),6)/Sum(HHV(RSI(3),17)-LLV(RSI
(3),17),6))*100;
> Buy=Cross(50,Ind);
> Sell=Cross(Ind,50);
> Short = Sell;
> Cover = Buy;
> E=Equity(1);
> ///////////////////////////////////////////////////////
>
> Pos = Flip(Buy,Sell);
> BestSellPrice = Ref(ValueWhen(Sell,HighestSince(Buy,H),0),-
1);
> BestCoverPrice = Ref(ValueWhen(Cover,LowestSince(Short,L),0),-1);
>
> if(Test)
> {
> SellPrice = BestSellPrice;
> CoverPrice = BestCoverPrice;
> }
> else
> {
> SellPrice = Open;
> CoverPrice = Open;
> }
>
> Plot(C,"C",1,128);
> PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),5);
> PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),4);
> Plot(BestSellPrice,"BestSellPrice",5,styleStaircase);
> Plot(BestCoverPrice,"BestCoverPrice",4,styleStaircase);
> //Plot(E,"E",2,1);
>
>
> -----Original Message-----
> From: qweds_560 [mailto:qweds_560@x...]
> Sent: Wednesday, January 19, 2005 5:55 PM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: Best exit price?
>
>
>
> Hi Herman,
>
> Yes, I did mange to plot (by creating a new indicator), many
thanks.
> It does show the best prices that could have been achieved. The ref
> function in the last line:
>
> BestSellPrice = Ref(Temp ,-1);
>
> seems redundant. I used BuySellPrice = temp and it gives the same
> results.
>
> I then pasted the whole code into Explorer and I managed to obtain
> some output. I then copied and pasted into Excel (had to do this
> twice, with different filter settings in Explorer) and then had to
> do a few manipulations in Excel to obtain something which was close
> to what I wanted. Not at all elegant, i'm afraid!!!
>
> I tried to use the code in the backtester (without the plot) but it
> didn't work there. I set SELL= bestsellprice. Any way of just using
> the code in the backtester?
>
> Any further suggestions to try and simplify would be appreciated!!
>
> Many thanks again
>
> Sam
>
>
>
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Herman van den Bergen"
> <psytek@xxxx> wrote:
> > Did you plot the code i posted [ Tue 01/18/2005 7:59 PM ]? Your
> best bet to
> > solve this problem is to visualize it.
> >
> > herman
> > -----Original Message-----
> > From: qweds_560 [mailto:qweds_560@x...]
> > Sent: Wednesday, January 19, 2005 12:34 PM
> > To: amibroker@xxxxxxxxxxxxxxx
> > Subject: [amibroker] Re: Best exit price?
> >
> >
> >
> > Many thanks Graham,
> >
> > Unfortunately, it doesn't seem to work. I may be doing
something
> > wrong:
> >
> > My code is:
> >
> > buy=...conditions
> > short=...conditions
> >
> > sell=short;
> > cover=buy;
> >
> > BestLong = valuewhen( sell, highestsince(buy,h) );
> > BestShort = valuewhen( cover, lowestsince(short,L) );
> >
> > Sell=bestlong;
> > Cover=bestshort;
> >
> > Buy = ExRem(Buy,Short);
> > Sell = ExRem(Sell,Buy);
> > Short = ExRem(Short,Buy);
> > Cover = ExRem(Cover,Short);
> >
> > The sell happens on the next bar after a buy rather than
> searching
> > for the highest high before a short signal.
> >
> > Any assistance would be appreciated,
> >
> > Cheers
> >
> > Sam
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, Graham <kavemanperth@xxxx>
> wrote:
> > > You can probably get more complex or easier solutions, here
is
> one
> > >
> > >
> > > BestLong = valuewhen( sell, highestsince(buy,h) );
> > > BestShort = valuewhen( cover, lowestsince(short,L) );
> > >
> > >
> > >
> > > On Tue, 18 Jan 2005 23:22:43 -0000, qweds_560
<qweds_560@xxxx>
> > wrote:
> > > >
> > > >
> > > > Hello,
> > > >
> > > > I have been trying to solve this problem for some time
using
> all
> > > > sorts of functions in the backtester: HHV, barssince,
> valuewhen,
> > > > barindex and so on.
> > > >
> > > > Consider a simple stop and reverse system. I want to know
> what
> > the
> > > > best exit price could have been from a long position before
> the
> > > > system reverses and what the best exit price that could be
> from a
> > > > short position before the system reverses and goes long.
> > > >
> > > > To put it another way, I would like to peek into the future
> to
> > see
> > > > what the best price I could exit my position at BEFORE I
> receive
> > a
> > > > signal in the opposite direction.
> > > >
> > > > I am trying to find out the maximum profit that could be
made
> > using
> > > > the system if you had the foresight to know exactly when to
> exit
> > > > each and every position.
> > > >
> > > > I would be grateful for any suggestions.
> > > >
> > > > Many 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
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Cheers
> > > Graham
> > > http://e-wire.net.au/~eb_kavan/
> >
> >
> >
> >
> >
> > 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
>
> To visit your group on the web, go to:
> http://groups.yahoo.com/group/amibroker/
>
> To unsubscribe from this group, send an email to:
> amibroker-unsubscribe@xxxxxxxxxxxxxxx
>
> Your use of Yahoo! Groups is subject to the Yahoo! Terms of
Service.
------------------------ Yahoo! Groups Sponsor --------------------~-->
In low income neighborhoods, 84% do not own computers.
At Network for Good, help bridge the Digital Divide!
http://us.click.yahoo.com/EpW3eD/3MnJAA/cosFAA/GHeqlB/TM
--------------------------------------------------------------------~->
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
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|