hi,
another Email .... the original problem you have
has to do with the fact that at some bars there is a buy and a sell signal at
the same bar. For some reason using exrem it is not treated properly it seems ..
did not figure out what exactly is the problem.
I find it pretty hard to put all your rules inside
1 sell statement. Therefore I show you how to solve your problem using a
additional procedure. Basicly once you are in a trade you have
- a stoploss (sort of a trailing stop) defined by
Ref(LLV(L,5),-1) and you have
- a profit stop defined by Ref(2*ATR(10),-1).
Below I show how you could code your idea, rgds,
Ed
procedure sell_proc(Buy,BuyPrice,stopLoss,profitTarget) {
global Sell; global SellPrice;
global BuyAdjusted; global BuyPriceAdjusted;
Sell = 0; SellPrice = 0;
BuyAdjusted =
0; BuyPriceAdjusted = 0;
global stopLossLine; global profitTargetLine;
stopLossLine =
Null; profitTargetLine =
Null;
for( i = 0; i < BarCount; i++ ) {
if ( Buy[ i ] )
{
BuyAdjusted[ i ] = 1; BuyPriceAdjusted[ i ] =
BuyPrice[ i ];
stopLossLine[ i ] = stopLoss[ i ];
profitTargetLine[ i ] = BuyPrice[ i ] + profitTarget[ i ];
for (j = i + 1; j < BarCount; j++)
{
stopLossLine[ j ] =
stopLossLine[ i ];
profitTargetLine[ j ]
= profitTargetLine[ i ];
if( L[ j ] <= stopLossLine[ j ] )
{
Sell[ j ] = 1;
SellPrice[ j ] = Min(O[ j ],stopLossLine[ j ]);
i =
j;
break;
}
else if( H[ j ] > profitTargetLine[ j ] )
{
Sell[ j ] = 1;
SellPrice[ j ] = Max(O[ j ],profitTargetLine[ j ]);
i =
j;
break;
}
else if (j == BarCount - 1) {
i =
BarCount;
}
} } }
}
SetBarsRequired(10000,10000);
Entrypt=HHV(H,3);
Buy= Cross(H,Ref(Entrypt,-1)); BuyPrice=Max(O,Ref(Entrypt,-1));
sell_proc(Buy,BuyPrice,Ref(LLV(L,5),-1),Ref(2*ATR(10),-1) );
Buy = BuyAdjusted; BuyPrice = BuyPriceAdjusted;
Plot(stopLossLine,"stopLossLine",colorBlue,styleThick); Plot(profitTargetLine,"profitTargetLine",colorLightBlue,styleThick); Plot(Ref(Entrypt,-1),"EntryLevel",colorYellow,styleDashed);
SetChartOptions(0, chartShowDates); Plot(C,"Last=",colorBlack,64);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15); PlotShapes(IIf(Buy,shapeHollowCircle,shapeNone),colorGreen,0,BuyPrice,0); PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15); PlotShapes(IIf(Sell,shapeHollowCircle,shapeNone),colorRed,0,SellPrice,0);
----- Original Message -----
Sent: Friday, July 11, 2008 11:08
AM
Subject: [amibroker] Buyprice changes
while long
The following code replicates the problem I am having with a system. The
buyprice is suppossed to be constant while the system is long, however it
keeps changing. How can I make the Buyprice a constant?
Thanks
Oscar
//COND//
Entrypt=HHV(H,3);
//ENTRY SIGNAL//
Buy = H > Ref(Entrypt,-1);
BuyPrice= ValueWhen(Buy,Ref(Entrypt,-1));
//EXIT SIGNAL//
MaxTRADECLOSE= Ref(HighestSince(Buy,C),-1);
Sell = L < Ref(LLV(L,5),-1) OR (Maxtradeclose-BuyPrice) > 2*ATR(10);
//REMOVE EXCESIVE SIGNALS//
Buy = ExRem(Buy,Sell);
Sell= ExRem(Sell,Buy);
// PLOT BUY AND SELL
POINTS//
Plot (C,"Last=",colorBlack,styleBar|styleThick);
PlotShapes (IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15);
PlotShapes (IIf(Buy,shapeHollowCircle,shapeNone),colorGreen,0,BuyPrice,0);
PlotShapes (IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15);
PlotShapes (IIf(Sell,shapeHollowCircle,shapeNone),colorRed,0,SellPrice,0);
//AUX//
Plot (Buy,"buy",colorRed,styleLine|styleOwnScale);
Plot (BuyPrice,"buyprice",colorBlue,styleLine);
Plot (Maxtradeclose,"maxtradeclose",colorGreen,styleLine);
__._,_.___
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
__,_._,___
|