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 ----- 
  From: cagigas00 
  To: [email protected] 
  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);


   

Reply via email to