--- In amibroker@yahoogroups.com, "Alpha" <[EMAIL PROTECTED]> wrote:
>
> Does anybody know what happened to the TTM trend indicator that was referred 
> to in a 
> previous post and linked to the library?
> 
> thanks
>
I found some other code.
This is a very useful indicator for trend.
Please would a kind soul code for AFL.

Basically using Hiken Ashi bars if the 5th bar of the last 5 bars closes above 
the 50% line of 
the previous 5 bar average, it stays the same color. If the 5th bar closes 
below the the 50% 
average it changes color.

Code 

{ ModHA PaintBarStudy  1/20/04

modified Heikin-Ashi technique

compares current bar open to close range
with prior bars...if current is within
prior then color remains the same

Taken from
https://www.tradestation.com/Discussions/Topic.aspx?Topic_ID=22399

}
inputs: CompBars(6), UpColor(Blue), DnColor(Red), BarWidth(1);

vars:   haClose(0), haOpen(0), color(0);

if BarNumber = 1 then
begin
        haOpen = open;
        haClose = (O+H+L+C)/4;
end;

if BarNumber > 1 then
begin
        haClose = (O+H+L+C)/4; 
        haOpen = (haOpen [1] + haClose [1])/2 ;

{ 
................................................................................
 }

        if haClose > haOpen then color = UpColor
        else color = DnColor;
        
        for value1 = 1 to CompBars
        begin
                if haOpen <= MaxList(haOpen[value1],haClose[value1]) and
                        haOpen >= MinList(haOpen[value1],haClose[value1]) and
                        haClose <= MaxList(haOpen[value1],haClose[value1]) and
                        haClose >= MinList(haOpen[value1],haClose[value1]) then
                                color = color[value1];          
        end;

{ 
................................................................................
 }


//      plotPB(haOpen,haClose,"heikin-ashi",color);
        plotPB(High,Low,"heikin-ashi",color);
        SetPlotWidth(1,BarWidth);
        SetPlotColor(1,color);

end;
{ 
................................................................................
 }
                

Here is the code in C++

BaseDataIn 0 is open, 1 is high, 2 is low and 3 is close:

int pos, updn=0;
float jO=0, jH, jL, jC=0, jHm1, jLm1;
sg.DataStartIndex=15;

jL=sg.BaseDataIn[4][0]; jO=jL; jC=jL; jH=jL;
for (pos=5; pos < sg.ArraySize; pos++)
{
jHm1=jH;
jLm1=jL;
jO=(jO+jC)/2;
jC=(sg.BaseDataIn[0][pos]+sg.BaseDataIn[1][pos]+sg.BaseDataIn[2][pos]+sg.BaseDataIn[3]
[pos])/4;

if(jO>sg.BaseDataIn[1][pos] && jO>jC) jH=jO; else if(jC>sg.BaseDataIn[1][pos]) 
jH=jC; else 
jH=sg.BaseDataIn[1][pos];
if(jO<sg.BaseDataIn[2][pos] && jO<jC) jL=jO; else if(jC<sg.BaseDataIn[2][pos]) 
jL=jC; else 
jL=sg.BaseDataIn[2][pos];

if(jH>jHm1 && jL>=jLm1) {updn=1;} else
if(jL<jLm1 && jH<=jHm1) {updn=-1;};

if((sg.Input[2].FloatValue!=1 && sg.Input[2].FloatValue!=-1) || 
(sg.Input[2].FloatValue==1 
&& updn==1) || (sg.Input[2].FloatValue==-1 && updn==-1))
{
sg.Subgraph[0].Data[pos]=jO;
sg.Subgraph[1].Data[pos]=jH;
sg.Subgraph[2].Data[pos]=jL;
sg.Subgraph[3].Data[pos]=jC;
};
}

Reply via email to