Spent another day on this problem. Very frustrated at this point. Even when I reduce the whole thing down to just the trailing stop portion on the buy side only it still does not work. Has anyone been able to get this code from the Pyramiding section of the website to work? Are there things missing in the code or has it been updated recently? Does this code need to follow or precede the normal "Buy", "Sell", "Short", "Cover" instructions in the code?
Any tidbit of advice on this would be very appreciated. thx, Fred --- In [email protected], "jjj_98" <[EMAIL PROTECTED]> wrote: > > Hi, > > Trying to scale out of a position in my code and used the code from > one of the articles on the AB website. What is happening is that the > program does not recognize the profit targets or trailing stops that > have been set up in the code. At one point it was recognizing it, > but not correctly and when it scaled out it scaled out 100% rather > than 50%. > > I've spent a few hours trying to make this work. I'd really > appreciate it if anyone could take a look at the portion of the code > in question below and let me know if they see any obvious problems. > Yes, I have defined TrailingStop and FirstProfitTarget parameters. > > thx, > > PriceatBuy = 0; > PriceatShort = 0; > HighSinceBuy = 0; > LowSinceShort = 0; > Exit = 0; > > for( i = 0; i < BarCount; i++) > { > if(PriceAtBuy == 0 AND Buy[i]) > { > PriceAtBuy = BuyPrice[i]; > } > if(PriceAtBuy > 0) > { > HighSinceBuy = Max(High[i] , HighSinceBuy); > if(Exit == 0 AND High[i] >= (FirstProfitTarget + > PriceAtBuy)) > { > // first profit target hit - Scale Out > Exit = 1; > Buy[i] = sigScaleOut; > SellPrice[i] = FirstProfitTarget + PriceAtBuy; > > } > if(Low[i] <= (HighSinceBuy - TrailingStop)) > { > // trailing stop hit - exit > Exit = 2; > SellPrice[i] = (HighSinceBuy - TrailingStop); > } > if(Exit == 2) > { > Buy[i] = 0; > Exit = 0; > PriceAtBuy = 0; > HighSinceBuy = 0; > } > } > > if(PriceatShort == 0 AND Short[i]) > { > PriceatShort = ShortPrice[i]; > } > if(PriceatShort > 0) > { > LowSinceShort = Min(Low[i] , LowSinceShort); > if(Exit == 0 AND Low[i] <= (PriceatShort - > FirstProfitTarget)) > { > // first profit target hit - Scale Out > Exit = 1; > Short[i] = sigScaleOut; > } > if(High[i] >= (LowSinceShort + TrailingStop)) > { > // trailing stop hit - exit > Exit = 2; > BuyPrice[i] = (LowSinceShort + TrailingStop); > } > if(Exit == 2) > { > Short[i] = 0; > Exit = 0; > PriceatShort = 0; > LowSinceShort = 0; > } > > } > > } > SetPositionSize(50,spsPercentOfPosition*((Buy == sigScaleOut)+ (Short > == sigScaleOut))); > //scale out of 50% of position >
