file attachment doesn't seem to work at the
moment.
here is the code:
procedure
buySellShortCover_proc(Buy,BuyPrice,Sell,SellPrice,Short,ShortPrice,Cover,CoverPrice,timearr,endtime) {
global BuyAdjusted;
global BuyPriceAdjusted;
global ShortAdjusted;
global ShortPriceAdjusted;
global SellAdjusted;
global SellPriceAdjusted;
global CoverAdjusted;
global CoverPriceAdjusted;
BuyAdjusted = 0; BuyPriceAdjusted =
0; ShortAdjusted = 0; ShortPriceAdjusted = 0; SellAdjusted = 0; SellPriceAdjusted = 0; CoverAdjusted = 0; CoverPriceAdjusted = 0;
delay = 1; slip = 0.0;
for( i = 1; i < BarCount; i++ ) {
if (Buy[ i ])
{
// inside a long trade:
BuyAdjusted[ i ] =
1;
BuyPriceAdjusted[ i ] = O[ i ] + slip;
for (j = i + delay; j <
BarCount; j++)
{
// exit at end of day
if (timearr[ j ] >= endtime)
{
SellAdjusted[
j ] = 1;
SellPriceAdjusted[
j ] = O[ j ] - slip;
i =
j;
break;
}
// exit at sell / short signal
else if (Sell[ j ])
{
SellAdjusted[
j ] = 1;
SellPriceAdjusted[
j ] = O[ j ] - slip;
i =
j - 1;
break;
}
// to avoid problems at the end of the
array
else if (j == BarCount - 1) {
i =
BarCount;
}
} }
else if
(Short[ i ])
{
// inside a
short trade:
ShortAdjusted[ i ] =
1;
ShortPriceAdjusted[ i ] = O[ i ] + slip;
for (j = i + delay; j <
BarCount; j++)
{
// exit at end of day
if (timearr[ j ] >= endtime)
{
CoverAdjusted[
j ] = 1;
CoverPriceAdjusted[
j ] = O[ j ] + slip;
i =
j;
break;
}
// exit at cover / buy signal
else if (Cover[ j ])
{
CoverAdjusted[
j ] = 1;
CoverPriceAdjusted[
j ] = O[ j ] + slip;
i =
j - 1;
break;
}
// to avoid problems at the end of the
array
else if (j == BarCount - 1) {
i =
BarCount;
}
} }
}
}
SetBarsRequired(10000,10000); SetTradeDelays(0,0,0,0); SetOption("CommissionMode", 3); SetOption("FuturesMode",True); NumContracts = 1; PositionSize = NumContracts * MarginDeposit; SetOption("MaxOpenPositions", 6); SetOption("CommissionAmount", 2.4);
starttime =
093000; // true exchange opening time endtime = 160000; //
true exchange closing time per = 15;
timecond = TimeNum() >= starttime AND TimeNum() <= endtime;
Buy = (C > Ref(HHV(H,per),-1)) * timecond; Buy = Ref(Buy,-1); BuyPrice = O; Short = (C < Ref(LLV(L,per),-1)) * timecond; Short = Ref(Short,-1); ShortPrice = O; Sell = Short; SellPrice = ShortPrice; Cover = Buy; CoverPrice = BuyPrice;
buySellShortCover_proc(Buy,BuyPrice,Sell,SellPrice,Short,ShortPrice,Cover,CoverPrice,TimeNum(),endtime);
Buy = BuyAdjusted; BuyPrice = BuyPriceAdjusted; Short = ShortAdjusted; ShortPrice = ShortPriceAdjusted;
Sell = SellAdjusted;
SellPrice = SellPriceAdjusted;
Cover = CoverAdjusted;
CoverPrice = CoverPriceAdjusted;
GraphXSpace
= 5; SetChartOptions(0, chartShowDates); Plot(C,"\nLast",colorWhite,64);
Plot(Ref(HHV(H,per),-1),"\nhhv",colorGreen,styleDashed); Plot(Ref(LLV(L,per),-1),"\nllv",colorRed,styleDashed);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15); PlotShapes(IIf(Buy,shapeHollowUpArrow,shapeNone),colorWhite,0,L,-15); PlotShapes(IIf(Buy,shapeHollowSmallCircle,shapeNone),colorWhite,0,BuyPrice,0);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15); PlotShapes(IIf(Sell,shapeHollowDownArrow,shapeNone),colorWhite,0,H,-15); PlotShapes(IIf(Sell,shapeHollowSmallCircle,shapeNone),colorWhite,0,SellPrice,0);
PlotShapes(IIf(Short,shapeDownTriangle,shapeNone),colorYellow,0,H,IIf(Short AND Sell,-30,-15)); PlotShapes(IIf(Short,shapeHollowDownTriangle,shapeNone),colorWhite,0,H,IIf(Short AND
Sell,-30,-15)); PlotShapes(IIf(Short,shapeHollowCircle,shapeNone),colorWhite,0,ShortPrice,0);
PlotShapes(IIf(Cover,shapeUpTriangle,shapeNone),colorLightBlue,0,L,IIf(Cover AND Buy,-30,-15)); PlotShapes(IIf(Cover,shapeHollowUpTriangle,shapeNone),colorWhite,0,L,IIf(Cover AND
Buy,-30,-15)); PlotShapes(IIf(Cover,shapeHollowCircle,shapeNone),colorWhite,0,CoverPrice,0);
Plot(timecond, "", colorDarkGrey, styleArea|styleOwnScale,0,1);
----- Original Message -----
Sent: Wednesday, August 05, 2009 12:32
PM
Subject: Re: [amibroker] Re: remove all
excessive signals [1 Attachment]
hi,
I added an example where I use some constraints
of my own. The buy and short constraint contain multiple signals. Have a look
if you can figure it out. It is worth while to figure out how this works
because you can add stops or any type of exit you like in these
loops.
rgds, Ed
----- Original Message -----
Sent: Wednesday, August 05, 2009 11:51
AM
Subject: [amibroker] Re: remove all
excessive signals
Hi Ed, ok, thank you very much.
I don't have the exact code here
right now, but i can try to sum up a short version from memory. I don't
know the exact applystop rules i used. And also don't know the Dhigh and
the Dlow rules right now, but they describe a high and a low taken from a
couple hours in the morning (Dutch). I hope you can show me the loop with
this data, or else i will post the code later this
evening.
**************************************** timeopen
= 070000; timeclose = 180000; tod = TimeNum(); inRange = tod
>= timeopen AND tod <= timeclose;
Dhigh = ....; DLow =
....;
Buy = inRange AND Cross(High,Dhigh);
Sell =
0; applystop(...);
Short = inRange AND
Cross(ShortStop,Dlow);
Cover =
0; applystop(...);
Buy = ExRem(Buy,tod==180000); Sell
=
ExRem(Sell,tod==180000); **********************************************
regards
---
In amibroker@xxxxxxxxxps.com,
"Edward Pottasch" <empottasch@...> wrote: > >
simplest way to do this is using loops. If you post your problem (buy, sell,
short and cover array constraints) I can show you how, > >
rgds, Ed > > > > > > ----- Original
Message ----- > From: chaoss45 > To: amibroker@xxxxxxxxxps.com
> Sent: Wednesday, August 05, 2009 10:28 AM > Subject:
[amibroker] Re: remove all excessive signals > > > Hi
Mike, thanks. > > I am talking about one symbol, just take the
first signal that appears and remove all others. > Further i made a
mistake in my previous postings, i said "Sell" but it should be
"Short". > So for a recap: I want to take the first signal that
appears (Buy or Short) and remove all other signals for that symbol for that
day. > Right now i'm working with Exrem and got all excessive Buys and
Shorts removed, but that still leaves me with 1 Buy and 1 Short signal a
day. > > How can i remove this last excessive Buy or Short
signal? > > Your idea should work, but i'm not a great coder so
i hope there is a simpler way to do this. > > --- In amibroker@xxxxxxxxxps.com,
"Mike" <sfclimbers@> wrote: > > > >
Sorry, > > > > I think that I misread your question.
Though, the answer is laregely the same; you could use custom
backtester. > > > > Iterate through the signals at each
bar. If an open position already exists for the symbol, reset the position
size to zero for the new signal if the date of the bar is the same as the
entry date of the open position. > > > > Any attempt to
use arrays outside of the custom backtester using such approaches as flip,
exrem, etc. do not take into account that some signals simply will not get
filled due to portfolio limitations. Thus, custom backtester is the only
reliable way of knowing if a position was *actually* taken. > >
> > Mike > > > > --- In amibroker@xxxxxxxxxps.com,
"Mike" <sfclimbers@> wrote: > > > > > >
One sure fire way to do it would be to write custom backtester code that
iterated through the trade signals at each bar and simply reset the position
size to 0 for all remaining signals. > > > > > >
Regardless of how you accomplish your task, if you are trading more than a
single symbol you are at risk of getting highly biased results. How do you
determine which signal occured first? If you get 3 Buys from 3 symbols on
the same bar, which one do you take? Whatever logic you use to make that
determination will bias your results. You would likely be best to select
from the 3 at random. > > > > > > Mike > >
> > > > --- In amibroker@xxxxxxxxxps.com,
"chaoss45" <chaoss45@> wrote: > > > > > > >
> > > > > Hello all, > > > > > >
> > I'm trying to write code for a breakout system. > > >
> Right now i have my system working (demo) but i'm having trouble
to > > > > remove all excessive signals. > > >
> I want to take the first Buy or Sell signal of the day, and all
other > > > > signals for the day removed. > > >
> For example: if the first signal is a buy signal, all other buy and
sell > > > > signals should be removed (or ignored) but i
cannot do it. > > > > I tried Exrem and that is working fine
only for removing the other buy > > > > or sell signals, but
not for removing all the other buy and sell > > > >
signals. > > > > I think it is something simple, but for some
reason i do not see it. > > > > Could somebody help me with
the code? > > > > > > > >
> >
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|