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

Confluence(function)



PureBytes Links

Trading Reference Links

Seems some people are having problems with this function.
This was written for ts4.

Indicator coming next;;;

Robert




{Function: Confluence
  Returns a value from -9 to +9.
  -9 to -1:  bearish
  -0.9 to +0.9:  "yellow"
  1 to 9:  bullish

 Written by Dale Legan <dlegan@xxxxxxxxx>
}

Input: price(Numeric),Harmonic(Numeric);

vars: STL(0),ITL(0),LTL(0),HOFF(0),SOFF(0),IOFF(0),LTOFF(0),Phase(1);
vars: mtl(0),momsig(0),mom(0),HT(0),HTA(0);
vars:
ST(0),STA(0),IT(0),ITA(0),SUM(0),ERR(0),ERRSUM(0),ERRSIG(0),TC(0),TCSIG(0);
vars: ERRNUM(0),MOMNUM(0),TCNUM(0);
Vars: Havg(0), Savg(0), Iavg(0), Lavg(0);

{Calculate Lengths}
if (BarNumber = 1) then begin
  MTL=harmonic/2;
  STL= IntPortion((harmonic*2)-1);  {11}
  ITL= IntPortion((STL*2)-1);             {21}
  LTL= IntPortion((ITL*2)-1);              {41}

  HOFF=intportion(harmonic/2);     {3}
  SOFF=intportion(STL/2);               {5}
  IOFF=intportion(ITL/2);                 {10}
  LTOFF=intportion(LTL/2);             {20}
  end;

{ Averages }

Havg = average(price, Harmonic);
Savg = average(price, STL);
Iavg = average(price, ITL);
Lavg = average(price, LTL);

{Cycle Momentum}

value2 = Savg - Havg[HOFF];
value3 = Iavg - Savg[SOFF];
value12 = Lavg - Iavg[IOFF];

momsig = value2 + value3 + value12;  {Momentum Signal Line}

value5= ((summation(price,harmonic-1) +
derivativema(price,harmonic))/harmonic);
value6= ((summation(price,STL-1) + derivativema(price,STL))/STL);
value7= ((summation(price,ITL-1) + derivativema(price,ITL))/ITL);
value13=((summation(avgprice,LTL-1) + derivativema(price,LTL))/LTL);

value9 = value6 - value5[HOFF];
value10=value7 - value6[SOFF];
value14=value13 - value7[IOFF];
mom = value9 + value10 + value14; 

{ harmonic =6 was 5 may use harmonic -1 }
{
HT=
sine((summation(price,(harmonic-1))+derivativema(price,harmonic))/harmonic)
+
cosine((summation(price,(harmonic-1))+derivativema(price,harmonic))/harmonic);
}
HT = sine(value5) + cosine(value5);
HTA= sine(Havg) + cosine(Havg);

{
ST=  sine((summation(price,(STL-1))+derivativema(price,STL))/ STL) +
cosine((summation(Price,(STL-1))+derivativema(Price,STL))/STL);
}
ST = sine(value6) + cosine(value6);
STA = sine(Savg) + cosine(Savg);

{
IT= sine((summation(price,(ITL-1))+derivativema(c,ITL))/ITL) +
cosine((summation(price,(ITL-1))+derivativema(Price,ITL))/ITL);
}
IT = sine(value7) + cosine(value7);
ITA=sine(Iavg)+ cosine(Iavg);

Sum= HT+ST+IT; {Est in Cyc Estimator/ Cycle Est Err = Sum - Err }
Err =HTA + STA +ITA;

{phase detect}

Condition2=  (Sum > Sum[SOFF] 
              and Havg < Havg[SOFF]) 
          OR (Sum < Sum[SOFF] 
              and Havg > Havg[SOFF]) ;
Phase=1;
if Condition2 then Phase=-1;

ErrSum = (Sum - Err)*phase;  { ERROR OF THE CYCLE}
ErrSig=average(ErrSum,SOFF);   { ERROR SIGNAL LINE}

{Trend Catcher}

value68=value5;  
  {( (summation(price,(harmonic-1)) + derivativema(price,harmonic)) /
harmonic );}
value69=value13;
  {( (summation(avgprice,(LTL-1)) + derivativema(price,LTL)) / LTL );}

value70 = value68-value69; { EST W Der}
value71 = average(value70,Harmonic); 

TC =value70;
TCSig=value71;

{Begin Counting Bars}

If ErrSum > 0 then begin
if Errsum < ErrSum[1] and ErrSum < ErrSig then ErrNum=1;  
If ErrSum <ErrSum[1] and ErrSum >ErrSig then ErrNum=2;
If ErrSum>ErrSum[1] and ErrSum<ErrSig then ErrNum=2;
If ErrSum > ErrSum[1] and ErrSum> ErrSig then ErrNum=3;
End;
If ErrSum < 0 then begin
if Errsum > ErrSum[1] and ErrSum > ErrSig then ErrNum=-1;  
If ErrSum <ErrSum[1] and ErrSum >ErrSig then ErrNum=-2;
If ErrSum>ErrSum[1] and ErrSum<ErrSig then ErrNum=-2;
If ErrSum < ErrSum[1] and ErrSum< ErrSig then ErrNum=-3;
End;

If Mom > 0 THEN begin
if mom < mom[1] and mom < momsig then momNum=1;  
If mom <mom[1] and mom >momsig then momNum=2;
If mom>mom[1] and mom<momsig then momNum=2;
If mom > mom[1] and mom> momSig then momNum=3;
End;
If mom < 0 then begin
if mom > mom[1] and mom > momSig then momNum=-1;  
If mom <mom[1] and mom >momSig then momNum=-2;
If mom>mom[1] and mom<momSig then momNum=-2;
If mom < mom[1] and mom< momSig then momNum=-3;
End;

If TC > 0 THEN begin
if TC < TC[1] and TC < TCsig then TCNum=1;  
If TC <TC[1] and TC >TCsig then TCNum=2;
If TC>TC[1] and TC<TCsig then TCNum=2;
If TC > TC[1] and TC> TCSig then TCNum=3;
End;
If  TC < 0 then begin
if TC > TC[1] and TC > TCSig then TCNum=-1;  
If TC <TC[1] and TC >TCSig then TCNum=-2;
If TC>TC[1] and TC<TCSig then TCNum=-2;
If TC < TC[1] and TC< TCSig then TCNum=-3;
End;

value42= ErrNum + MomNum+TCNum;


Confluence = 0;
IF value42 >0 and TC >0 THEN Confluence = Value42;  { Bullish }
IF value42<0 and TC < 0 THEN Confluence = Value42;  { Bearish }
If (value42 > 0 and tc <0) or (value42 <0 and tc>0) then Confluence =
Value42 / 10;