You have to take care of the conditions before the first buy/sell signal. So try something like this which will result in intrade == 0 before the first signal and then your 1, -1 thereafter:
buybar = iif(barindex() == 0, 0, valuewhen(buy, barindex(), 1)); sellbar = iif(barindex() == 0, 0, valuewhen(sell, barindex, 1)); intrade = iif(barbuy > barsell, 1, iif(barsell > barbuy, -1, 0)): Bill ----- Original Message ----- From: Alain Baur To: [email protected] Sent: Thursday, March 22, 2007 3:48 AM Subject: [amibroker] In Trade Index Hi I would like to create an index ( "InTrade") which indicates if i am On the market or no. This formula works well but only after the two first trades (Buy then sell or sell then Buy) SetChartOptions(1,chartShowDates); GraphXSpace = 10 ; Plot(Close, "C", colorBlack, styleCandle); X = BarIndex(); MA10 = MA(C, 10) ; MA50 = MA(C, 50); Plot(MA10, "MA10", colorBlue, styleLine); Plot(MA50, "MA50", colorRed, styleLine); Buy = Cross(MA10, MA50); Sell = Cross(MA50, MA10); BarBuy = ValueWhen(Buy, X, 1); BarSell = ValueWhen(Sell, X, 1); PlotShapes(IIf(Buy, shapeUpArrow, shapeNone), colorGreen, 0, L, -12); PlotShapes(IIf(Sell, shapeDownArrow, shapeNone), colorRed, 0, H, -12); intrade = IIf( BarBuy > BarSell , 1, -1); Title = " " + Name() + " - " + Date() + " - BarBuy = " + BarBuy + " - BarSell = " + BarSell + " - Intrade = " + intrade + " " ; Is it possible to write an other formula which works since the beginning of the Array ? Thank's for your response ------------------------------------------------------------------------------ No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.14/727 - Release Date: 3/19/2007 11:49 AM
