[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Help required for converting indicator into Automatic Analysis Scan or Exploration or both.



PureBytes Links

Trading Reference Links

Hi Mohit,

I have to admit the code makes a very pretty picture indeed. Now two things you need to do:

[1] Paste this code into formula editor. Having done that, select "Tools"------>"Check". You will get a message which is self explanatory.

[2] Now you need to consider if you wish to use signals which may not be valid after you enter the trade.


BR


Rakesh Sahgal


PS: As ALL the successful traders I have ever come across say, "The GRAIL is YOU"(caps for added emphasis and apologies for violating net etiquette and not being more helpful).



On Fri, May 16, 2008 at 11:01 AM, Stock2india.Com <mohitgupta_2001@xxxxxxxxxxx> wrote:

Hello Group Members,

 

I am an avid listener and reader to all group mails n acitivity in this group from last few years.

I need an help from some of the seniors guys out there..

I am facing a problem, as I don't have AFL coding knowledge I request group members (if possible) to convert this AFL into AA scan or exploration to find out the exact point of buy/sell thru SCAN..

This is an highly successful AFL for trading trends Intraday as well as on EOD data. for any and all market types...

This AFl I found after years of research n tracking in various online groups n forums...

Anyways hoping to het the needful..

 

Thanks in Advance!!

 

Regards

 

Mohit Gupta

 

AFL chartsindicator for automatically identifying pivots....

 

/* **********************************Code to automatically identify pivots********************************** */

// -- what will be our lookback range for the hh and ll?

farback=

Param("How Far back to go",100,50,5000,10);

nBars =

Param("Number of bars", 12, 5, 40);

// -- Title.

Title

=
Name() + " (" + StrLeft(FullName(), 15) + ") O: " + Open + ",

H

:
" + High + ", L: " + Low + ", C: " + Close;

// -- Plot basic candle chart

PlotOHLC

(Open, High, Low, Close,

"BIdx = "

+ BarIndex() +

"\n"

+ "O = " + O + "\n"+"H = "+ H + "\n"+"L = " + L

+

"\n"+"C ",

colorBlack

, styleCandle);

GraphXSpace

=
7;

// -- Create 0-initialized arrays the size of barcount

aHPivs = H - H;

aLPivs = L - L;

// -- More for future use, not necessary for basic plotting

aHPivHighs = H - H;

aLPivLows = L - L;

aHPivIdxs = H - H;

aLPivIdxs = L - L;

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);

// -- Would like to set this up so pivots are calculated back from

// last visible bar to make it easy to "go back" and see the pivots

// this code would find. However, the first instance of

// _Trace output will show a value of 0

aVisBars =

Status("barvisible");

nLastVisBar =

LastValue(Highest(IIf(aVisBars, BarIndex(), 0)));

_TRACE

("Last visible bar: " + nLastVisBar);

// -- Initialize value of curTrend

curBar = (BarCount-

1);

curTrend =

"";

if

(aLLVBars[curBar] <

aHHVBars[curBar]) {

curTrend =

"D";

}

else

{

curTrend =

"U";

}

// -- Loop through bars. Search for

// entirely array-based approach

// in future version

for

(i=0; i<farback; i++) {

curBar = (BarCount -

1) - 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

}

// -- Basic attempt to add a pivot this logic may have missed

// -- OK, now I want to look at last two pivots. If the most

// recent low pivot is after the last high, I could

// still have a high pivot that I didn't catch

// -- Start at last bar

curBar = (BarCount-

1);

candIdx =

0;

candPrc =

0;

lastLPIdx = aLPivIdxs[

0];

lastLPL = aLPivLows[

0];

lastHPIdx = aHPivIdxs[

0];

lastHPH = aHPivHighs[

0];

if

(lastLPIdx > lastHPIdx) {

// -- Bar and price info for candidate pivot

candIdx = curBar - aHHVBars[curBar];

candPrc = aHHV[curBar];

if

(

lastHPH < candPrc AND

candIdx > lastLPIdx AND

candIdx < curBar) {

 

// -- OK, we'll add this as a pivot...

aHPivs[candIdx] =

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] = candPrc ;

aHPivIdxs[

0] = candIdx;

nHPivs++;

}

}

else {

 

// -- Bar and price info for candidate pivot

candIdx = curBar - aLLVBars[curBar];

candPrc = aLLV[curBar];

if

(

lastLPL > candPrc AND

candIdx > lastHPIdx AND

candIdx < curBar) {

 

// -- OK, we'll add this as a pivot...

aLPivs[candIdx] =

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] = candPrc;

aLPivIdxs[

0] = candIdx;

nLPivs++;

}

}

// -- Dump inventory of high pivots for debugging

/*

for (k=0; k<nHPivs; k++) {

_TRACE("High pivot no. " + k

+ " at barindex: " + aHPivIdxs[k] + ", "

+ WriteVal(ValueWhen(BarIndex()==aHPivIdxs[k],

DateTime(), 1), formatDateTime)

+ ", " + aHPivHighs[k]);

}

*/

// -- OK, let's plot the pivots using arrows

PlotShapes

(

IIf

(aHPivs==1, shapeDownArrow, shapeNone), colorRed, 0,

High

, Offset=-
15);

PlotShapes

(

IIf

(aLPivs==1, shapeUpArrow , shapeNone), colorGreen, 0,

Low

, Offset=-
15);

 

 

// -- what will be our lookback range for the hh and ll?

farback=

Param("How Far back to go",100,50,5000,10);

nBars =

Param("Number of bars", 12, 5, 40);

// -- Title.

Title

=
Name() + " (" + StrLeft(FullName(), 15) + ") O: " + Open + ",

H

:
" + High + ", L: " + Low + ", C: " + Close;

// -- Plot basic candle chart

PlotOHLC

(Open, High, Low, Close,

"BIdx = "

+ BarIndex() +

"\n"

+ "O = " + O + "\n"+"H = "+ H + "\n"+"L = " + L

+

"\n"+"C ",

colorBlack

, styleCandle);

GraphXSpace

=
7;

// -- Create 0-initialized arrays the size of barcount

aHPivs = H - H;

aLPivs = L - L;

// -- More for future use, not necessary for basic plotting

aHPivHighs = H - H;

aLPivLows = L - L;

aHPivIdxs = H - H;

aLPivIdxs = L - L;

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);

// -- Would like to set this up so pivots are calculated back from

// last visible bar to make it easy to "go back" and see the pivots

// this code would find. However, the first instance of

// _Trace output will show a value of 0

aVisBars =

Status("barvisible");

nLastVisBar =

LastValue(Highest(IIf(aVisBars, BarIndex(), 0)));

_TRACE

("Last visible bar: " + nLastVisBar);

// -- Initialize value of curTrend

curBar = (BarCount-

1);

curTrend =

"";

if

(aLLVBars[curBar] <

aHHVBars[curBar]) {

curTrend =

"D";

}

else

{

curTrend =

"U";

}

// -- Loop through bars. Search for

// entirely array-based approach

// in future version

for

(i=0; i<farback; i++) {

curBar = (BarCount -

1) - 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

}

// -- Basic attempt to add a pivot this logic may have missed

// -- OK, now I want to look at last two pivots. If the most

// recent low pivot is after the last high, I could

// still have a high pivot that I didn't catch

// -- Start at last bar

curBar = (BarCount-

1);

candIdx =

0;

candPrc =

0;

lastLPIdx = aLPivIdxs[

0];

lastLPL = aLPivLows[

0];

lastHPIdx = aHPivIdxs[

0];

lastHPH = aHPivHighs[

0];

if

(lastLPIdx > lastHPIdx) {

// -- Bar and price info for candidate pivot

candIdx = curBar - aHHVBars[curBar];

candPrc = aHHV[curBar];

if

(

lastHPH < candPrc AND

candIdx > lastLPIdx AND

candIdx < curBar) {

 

// -- OK, we'll add this as a pivot...

aHPivs[candIdx] =

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] = candPrc ;

aHPivIdxs[

0] = candIdx;

nHPivs++;

}

}

else {

 

// -- Bar and price info for candidate pivot

candIdx = curBar - aLLVBars[curBar];

candPrc = aLLV[curBar];

if

(

lastLPL > candPrc AND

candIdx > lastHPIdx AND

candIdx < curBar) {

 

// -- OK, we'll add this as a pivot...

aLPivs[candIdx] =

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] = candPrc;

aLPivIdxs[

0] = candIdx;

nLPivs++;

}

}

// -- Dump inventory of high pivots for debugging

/*

for (k=0; k<nHPivs; k++) {

_TRACE("High pivot no. " + k

+ " at barindex: " + aHPivIdxs[k] + ", "

+ WriteVal(ValueWhen(BarIndex()==aHPivIdxs[k],

DateTime(), 1), formatDateTime)

+ ", " + aHPivHighs[k]);

}

*/

// -- OK, let's plot the pivots using arrows

PlotShapes

(

IIf

(aHPivs==1, shapeDownArrow, shapeNone), colorRed, 0,

High

, Offset=-
15);

PlotShapes

(

IIf

(aLPivs==1, shapeUpArrow , shapeNone), colorGreen, 0,

Low

, Offset=-
15);

__._,_.___

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




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___