Dear Ram Vel,

Thanks  for your help, code is working fine.

Subhas Chand Mishra




________________________________
From: ram vel <[email protected]>
To: [email protected]
Sent: Monday, 31 August, 2009 12:02:59 AM
Subject: Re: [amibroker] Any AFL expert add buy/sell condition for 
Auto-analyses scan

  
hI SUBAS
 
Just add these lines and try scan
------------ --------- --------- --------- --------- -----Buy = (aLPivs==1) OR 
(aAddedLPivs= =1);
Sell =(aHPivs==1) OR (aAddedHPivs= =1); 
Filer = Buy OR Sell; 
------------ --------- --------- --------- --------- --------- --------
 
 
 
 
 
 
 
 


--- On Sun, 8/30/09, subhaschandmishra <subhaschandmishra@ yahoo.com> wrote:


>From: subhaschandmishra <subhaschandmishra@ yahoo.com>
>Subject: [amibroker] Any AFL expert add buy/sell condition for Auto-analyses 
>scan
>To: amibro...@yahoogrou ps.com
>Date: Sunday, August 30, 2009, 10:45 AM
>
>
>  
>Here is a good AFL gives Accurate buy and sell signal but it has no sufficient 
>variables for Auto-analyses of Amibroker. Can any Afl expert add buy/sell 
>variables for Auto-analyses scan.
>If any one do it, then this afl will be of great usefull.
>
>_SECTION_BEGIN( "Price");
>SetChartOptions( 0,chartShowArrow s|chartShowDates );
>_N(Title = StrFormat("{ {NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, 
>Close %g (%.1f%%) Vol " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, H, L, C, 
>SelectedValue( ROC( C, 1 )) ));
>Plot( C, "Close", ParamColor(" Color", colorBlack ), styleNoTitle | 
>ParamStyle(" Style") | GetPriceStyle( ) ); 
>if( ParamToggle( "Tooltip shows", "All Values|Only Prices" ) )
>{
>ToolTip=StrFormat( "Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.1f%%)\nVolume: 
>"+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
>}
>_SECTION_END( );
>
>_SECTION_BEGIN( "GIP-3");
>SetChartOptions( 0,chartShowArrow s|chartShowDates
> );
>_N(Title = StrFormat("{ {NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, 
>Close %g (%.1f%%) Vol " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, H, L, C, 
>SelectedValue( ROC( C, 1 )) ));
>Plot( C, "Close", ParamColor(" Color", colorBlack ), styleNoTitle | 
>ParamStyle(" Style") | GetPriceStyle( ) ); 
>if( ParamToggle( "Tooltip shows", "All Values|Only Prices" ) )
>{
>ToolTip=StrFormat( "Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.1f%%)\nVolume: 
>"+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
>}
>
>// -- what will be our lookback range for the hh and ll?
>nBars = Param("Number of bars", 12, 5, 40);
>bTrace = Param("Include trace output", 1, 0, 1);
>nNoPivsInSetup = Param("No. Pivs in Setup", 4, 3, 4, 1);
>bShowTCZ = Param("Show TCZ", 1, 0, 1); 
>nMinBarsBtwPivs = Param("Min. number of bars btw. pivots", 1, 1, 10, 1);
>nMinPctBtwPivs = Param("Min. percent diff. btw. pivots", .05, .04, .2, .01);
>bLastBarCanBePiv =
> Param("Last bar can be a pivot", 1, 0, 1); 
>retrcTolerance = .01;
>tczTolerance = .005;
>nNumBarsToScan = 120;
>
>// -- added from exploration version 20040204
>nExploreBarIdx = 0;
>nExploreDate = 0;
>nCurDateNum = 0;
>DN = DateNum();
>DT = DateTime();
>
>// -- key exploration variables
>bTCZLong = False;
>bTCZShort = False;
>nAnchorPivIdx = 0;
>
>ADX8 = ADX(8);
>
>// 1 - INDICATOR, 2 - COMMENTARY, 3 - SCAN, 
>// 4 - EXPLORATION, 5 - BACKTEST / Optimize 
>if(Status("action" )==1) {
>bDraw = True;
>bUseLastVis = Param("Use last visible bar", 1, 0, 1);
>} else {
>bDraw = False;
>bUseLastVis = False;
>bTrace = False;
>nExploreDate = Status("rangetodate ");
>for (i=LastValue( BarIndex( ));i>=0;i- -) {
>nCurDateNum = DN[i];
>if (nCurDateNum == nExploreDate) {
>nExploreBarIdx = i;
>}
>}
>// -- if(Status("action" )==1...
>}
>
>GraphXSpace= 7;
>
>// -- basic candle chart
>//
> -- if this appears inside if block, strange
>// drawing results!
>PlotOHLC(Open, High, Low, Close, 
>"BIdx = " + BarIndex() + 
>"\n" + "O = " + O + "\n"+"H = "+ H + "\n"+"L = " + L 
>+ "\n"+"C ",
>colorBlack, styleCandle) ; 
>
>// -- Create 0-initialized arrays the size of barcount
>aHPivs = H - H;
>aLPivs = L - L;
>aHPivHighs = H - H;
>aLPivLows = L - L;
>aHPivIdxs = H - H;
>aLPivIdxs = L - L;
>aAddedHPivs = H - H;
>aAddedLPivs = L - L;
>aLegVol = H - H;
>aRetrcVol = H - H;
>
>nHPivs = 0;
>nLPivs = 0;
>
>lastHPIdx = 0;
>lastLPIdx = 0;
>lastHPH = 0;
>lastLPL = 0;
>curPivBarIdx = 0;
>
>// -- looking back from the current bar, how many bars 
>// back were the hhv and llv values of the previous 
>// n bars, etc.?
>aHHVBars = HHVBars(H, nBars);
>aLLVBars = LLVBars(L, nBars);
>aHHV = HHV(H, nBars);
>aLLV = LLV(L, nBars);
>
>// -- Initialize value of curTrend
>nLastVisBar =
> LastValue(
>Highest(IIf( Status("barvisib le"), BarIndex(), 0)));
>
>curBar = IIf(nlastVisBar > 0 AND bUseLastVis, nlastVisBar, 
>IIf(Status(" action")= =4 AND nExploreBarIdx > 0, nExploreBarIdx,
>LastValue(BarIndex( ))));
>
>curTrend = "";
>if (aLLVBars[curBar] < aHHVBars[curBar] ) 
>curTrend = "D";
>else 
>curTrend = "U";
>
>// -- Loop through bars. Search for 
>// entirely array-based approach
>// in future version
>/* ************ *******
>Find main pivots
>************ ******* */
>
>// -- Make sure there are enough bars!
>if (curBar >= nNumBarsToScan) {
>for (i=0; i<nNumBarsToScan; i++) {
>
>// -- value of curBar dependent on two parameters
>curBar = IIf(nlastVisBar > 0 AND bUseLastVis, 
>nlastVisBar- i, 
>IIf(Status(" action")= =4 AND nExploreBarIdx > 0, 
>nExploreBarIdx- i,
>LastValue(BarIndex( ))-i));
>
>// -- Have we identified a pivot? If trend is down...
>if
> (aLLVBars[curBar] < aHHVBars[curBar] ) {
>
>// ... and had been up, this is a trend change
>if (curTrend == "U") {
>curTrend = "D";
>// -- Capture pivot information
>curPivBarIdx = curBar - aLLVBars[curBar] ;
>aLPivs[curPivBarIdx ] = 1;
>aLPivLows[nLPivs] = L[curPivBarIdx] ;
>aLPivIdxs[nLPivs] = curPivBarIdx;
>nLPivs++;
>}
>// -- or current trend is up
>} else {
>if (curTrend == "D") {
>curTrend = "U";
>curPivBarIdx = curBar - aHHVBars[curBar] ;
>aHPivs[curPivBarIdx ] = 1;
>aHPivHighs[nHPivs] = H[curPivBarIdx] ;
>aHPivIdxs[nHPivs] = curPivBarIdx;
>nHPivs++;
>}
>// -- If curTrend is up...else...
>} 
>
>// -- loop through bars
>} 
>}
>/* ************ *******
>Found main pivots
>************ ******* */
>
>/* ************ ********* ****
>Finding missed pivot(s)
>************ ********* **** */
>
>// -- Start at last bar. Reestablish curBar
>curBar = 
>IIf(nlastVisBar > 0 AND
> bUseLastVis, 
>nlastVisBar, 
>IIf(Status(" action")= =4 AND nExploreBarIdx > 0, 
>nExploreBarIdx,
>LastValue(BarIndex( )))
>);
>
>// -- Make sure I found at least two of each above.
>if (nHPivs >= 2 AND nLPivs >= 2) {
>
>lastLPIdx = aLPivIdxs[0] ;
>lastLPL = aLPivLows[0] ;
>
>lastHPIdx = aHPivIdxs[0] ;
>lastHPH = aHPivHighs[0] ;
>
>nLastHOrLPivIdx = Max(lastLPIdx, lastHPIdx);
>
>nAddPivsRng = curBar - nLastHOrLPivIdx;
>aLLVAfterLastPiv = LLV(L, nAddPivsRng) ; 
>nLLVAfterLastPiv = aLLVAfterLastPiv[ curBar];
>aLLVIdxAfterLastPiv = LLVBars(L, nAddPivsRng) ; 
>nLLVIdxAfterLastPiv = curBar - aLLVIdxAfterLastPiv [curBar];
>aHHVAfterLastPiv = HHV(H, nAddPivsRng) ; 
>nHHVAfterLastPiv = aHHVAfterLastPiv[ curBar];
>aHHVIdxAfterLastPiv = HHVBars(H, nAddPivsRng) ; 
>nHHVIdxAfterLastPiv = curBar - aHHVIdxAfterLastPiv [curBar];
>
>// -- Later want to add last high pivot only if
>// not in buy mode
> from last and still in trade
>
>/*
>Note - I'm only interested in adding pivots if I'm in 
>a higher-highs or lower-lows scenario
>*/
>
>
>// -- OK, let's start where the last high pivot occurs after the
>// last Low pivot
>if (lastHPIdx > lastLPIdx) {
>
>/* There are at least two possibilities here. One is that
>the previous high was higher, indicating that this is a 
>possible short retracement or one in the making.
>The other is that the previous high was lower, indicating 
>that this is a possible long retracement in the working. 
>However, both depend on opposing pivots. E.g., if I find 
>higher highs, what if I have lower lows? 
>
>If the highs are descending, then I can consider:
>- a lower low, and leave it at that
>- a higher high and higher low
>- a lower low and another lower high
>*/
>if (aHPivHighs[ 0] < aHPivHighs[1] ) {
>
>if (nLLVAfterLastPiv < aLPivLows[0] AND
> 
>(nLLVIdxAfterLastPi v - lastHPIdx - 1) >= nMinBarsBtwPivs
>AND nLLVIdxAfterLastPiv != curBar ) {
>
>// -- OK, we'll add this as a pivot. 
>// Mark it for plotting...
>aLPivs[nLLVIdxAfter LastPiv] = 1;
>aAddedLPivs[ nLLVIdxAfterLast Piv] = 1;
>
>// ...and then rearrange elements in the 
>// pivot information arrays
>for (j=0; j<nLPivs; j++) {
>aLPivLows[nLPivs- j] = aLPivLows[nLPivs- (j+1)];
>aLPivIdxs[nLPivs- j] = aLPivIdxs[nLPivs- (j+1)];
>}
>aLPivLows[0] = nLLVAfterLastPiv;
>aLPivIdxs[0] = nLLVIdxAfterLastPiv ;
>nLPivs++;
>
>// -- Test whether to add piv given last piv is high 
>// AND we have lower highs 
>}
>
>// -- Here, the last piv is a high piv, and we have 
>// higher-highs. The most likely addition is a 
>// Low piv that is a retracement.
>} else {
>
>if (nLLVAfterLastPiv > aLPivLows[0] AND 
>(nLLVIdxAfterLastPi v - lastHPIdx - 1) >= nMinBarsBtwPivs
>AND
> nLLVIdxAfterLastPiv != curBar ) {
>
>// -- OK, we'll add this as a pivot. 
>// Mark it for plotting...
>aLPivs[nLLVIdxAfter LastPiv] = 1;
>aAddedLPivs[ nLLVIdxAfterLast Piv] = 1;
>
>// ...and then rearrange elements in the 
>// pivot information arrays
>for (j=0; j<nLPivs; j++) {
>aLPivLows[nLPivs- j] = aLPivLows[nLPivs- (j+1)];
>aLPivIdxs[nLPivs- j] = aLPivIdxs[nLPivs- (j+1)];
>}
>aLPivLows[0] = nLLVAfterLastPiv;
>aLPivIdxs[0] = nLLVIdxAfterLastPiv ;
>nLPivs++;
>
>// -- Test whether to add piv given last piv is high 
>// AND we have lower highs 
>} 
>// -- The last piv is a high and we have higher highs 
>// OR lower highs
>}
>
>/* ************ ********* ********* ********* ********* ********* *******
>Still finding missed pivot(s). Here, the last piv is a low piv.
>************ ********* ********* ********* ********* ********* ******* */
>} else {
>
>// -- First case, lower highs
>if
> (aHPivHighs[ 0] < aHPivHighs[1] ) {
>
>if (nHHVAfterLastPiv < aHPivHighs[0] AND 
>(nHHVIdxAfterLastPi v - lastLPIdx - 1) >= nMinBarsBtwPivs
>AND nHHVIdxAfterLastPiv != curBar ) {
>
>// -- OK, we'll add this as a pivot. 
>// Mark that for plotting
>aHPivs[nHHVIdxAfter LastPiv] = 1;
>aAddedHPivs[ nHHVIdxAfterLast Piv] = 1;
>
>// ...and then rearrange elements in the 
>// pivot information arrays
>for (j=0; j<nHPivs; j++) {
>aHPivHighs[nHPivs- j] = aHPivHighs[nHPivs- (j+1)];
>aHPivIdxs[nHPivs- j] = aHPivIdxs[nhPivs- (j+1)];
>}
>aHPivHighs[0] = nHHVAfterLastPiv;
>aHPivIdxs[0] = nHHVIdxAfterLastPiv ;
>nHPivs++;
>
>// -- Test whether to add piv given last piv is high 
>// AND we have lower highs 
>}
>
>// -- Second case when last piv is a low piv, higher highs 
>// Most likely addition is high piv that is a retracement.
>// Considering adding a high piv as long as it is higher
>} else
> {
>
>// -- Where I have higher highs,
>if (nHHVAfterLastPiv > aHPivHighs[0] AND 
>(nHHVIdxAfterLastPi v - lastLPIdx - 1) >= nMinBarsBtwPivs
>AND nHHVIdxAfterLastPiv != curBar ) {
>
>// -- OK, we'll add this as a pivot. 
>// Mark it for plotting...
>aHPivs[nHHVIdxAfter LastPiv] = 1;
>aAddedHPivs[ nHHVIdxAfterLast Piv] = 1;
>
>// ...and then rearrange elements in the 
>// pivot information arrays
>for (j=0; j<nHPivs; j++) {
>aHPivHighs[nHPivs- j] = aHPivHighs[nHPivs- (j+1)];
>aHPivIdxs[nHPivs- j] = aHPivIdxs[nhPivs- (j+1)];
>}
>aHPivHighs[0] = nHHVAfterLastPiv;
>aHPivIdxs[0] = nHHVIdxAfterLastPiv ;
>nHPivs++;
>
>// -- Test whether to add piv given last piv is high 
>// AND we have lower highs 
>}
>
>}
>
>} 
>
>// -- If there are at least two of each
>}
>
>/* ************ ********* ********* ********* *
>// -- Done with finding pivots
>************ ********* ********* *********
> ** */ 
>
>if (bDraw) {
>
>// -- OK, let's plot the pivots using arrows
>PlotShapes(
>IIf(aHPivs== 1, shapeDownArrow, shapeNone), 
>colorRed, 0, High, Offset=-15);
>PlotShapes(
>IIf(aAddedHPivs= =1, shapeDownArrow, shapeNone),
>colorBrown, 0, High, Offset=-15);
>PlotShapes(
>IIf(aLPivs== 1, shapeUpArrow , shapeNone), 
>colorGreen, 0, Low, Offset=-15);
>PlotShapes(
>IIf(aAddedLPivs= =1, shapeUpArrow , shapeNone), 
>colorBlue, 0, Low, Offset=-15);
>}
>
>/* ************ ********* ********* ********* *
>// -- Done with discovering and plotting pivots 
>************ ********* ********* ********* ** */ 
>_SECTION_END( );
>
> 

   


      See the Web&#39;s breaking stories, chosen by people like you. Check out 
Yahoo! Buzz. http://in.buzz.yahoo.com/

Reply via email to