Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

• ## Welcome Guests

Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

# EasyLanguage Convolution Indicator by John F. Ehlers

## Recommended Posts

In John F Ehlers Book " Cycle-Analytics-for-Traders "

The EasyLanguage code to compute the Convolution indicator is given in

Code Listing 13-1.

EasyLanguage Code to Compute and Display Convolution

/////////////////////////////////////////////////////////////////////////////

the line in the book and below is incomplete

i.e.

<<< If Filt[intPortion(.5*N)] < Filt Convolution[N] = (1 + (ExpValue Blank >>>

To get Indicator to run inserted the line below

<<< If (IntPortion(.5*N))>Filt then Convolution[N]=(1+ExpValue(N)); >>>

Could someone please correct this effort

///////////////////////////////////////////////////////////////////////////

See attached pdf " Ehlers Convolution Indicator" for the original code

Derek

```The EasyLanguage code to compute the Convolution
indicator is given in Code Listing 13-1.
Code Listing 13-1.
EasyLanguage
Code to Compute
and Display
Convolution
{ Convolution Indicator
(c) 2013 John F. Ehlers

}
Inputs:
ShortestPeriod(40),
LongestPeriod(80);
Vars:
alpha1(0),
HP(0),
a1(0),
b1(0),
c1(0),
c2(0),
c3(0),
Filt(0),
N(0),
II(0),
X(0),
Y(0),
Sx(0),
Sy(0),
Sxx(0),
Syy(0),
Sxy(0),
Color1(0),
Color2(0),
Color3(0);
Arrays:

Corr[48](0),
Slope[48](0),
Convolution[48](0);
//HighPass filter cyclic component
alpha1 = (Cosine(1.414*360 / Longe
HP = (1 - alpha1 / 2)*
(1 - alpha1 / 2)*
(Close - 2*Close[1] + Close[2]) +
(1 - alpha1)*HP[1] - (1 - alpha1)*
(1 - alpha1)*HP[2];
//Smooth with a Super Smoother Fil
a1 = expvalue(-1.414*3.14159 / Sho
b1 = 2*a1*Cosine(1.414*180 / Short
c2 = b1;
c3 = -a1*a1;
c1 = 1 - c2 - c3;
Filt = c1*
(HP + HP[1]) / 2 + c2*Filt[1] + c3

For N = 1 to 48 Begin
Sx = 0;
Sy = 0;
Sxx = 0;
Syy = 0;
Sxy = 0;
For II = 1 to N Begin
X = Filt[iI - 1];
Y = Filt[N - II];
Sx = Sx + X;
Sy = Sy + Y;
Sxx = Sxx + X*X;
Sxy = Sxy + X*Y;
Syy = Syy + Y*Y;
End;
If (N*Sxx - Sx*Sx)*
(N*Syy - Sy*Sy) > 0 Then Corr[N] =
(N*Syy - Sy*Sy));
Slope[N] = 1;

{//////////////////////////////////////////////////////////////////////////////////////////

In John  F Ehlers Book  " Cycle-Analytics-for-Traders"
The EasyLanguage code to compute the Convolution indicator is given in Code Listing 13-1.

the line in the book and below is incomplete
i.e.
<<<  If Filt[intPortion(.5*N)] < Filt Convolution[N] = (1 + (ExpValue  >>>

To get Indicator to run   substitued the line below

<<<  If (IntPortion(.5*N))>Filt then Convolution[N]=(1+ExpValue(N));  >>>
Could someone please correct this effort

/////////////////////////////////////////////////////////////////////////////////////////////}

If (IntPortion(.5*N))>Filt then Convolution[N]=(1+ExpValue(N));
End;
//Plot as a Heatmap
For N = 3 to 48 Begin
If Slope[N] > 0 Then Begin

Color1 = 255*Convolution[N];
Color2 = 0;
End;
If Slope[N] < 0 Then Begin
Color1 = 0;
Color2 = 255*Convolution[N];
End;
Color3 = 0;
If N = 2 Then Plot2[4]
(2, “S2”, RGB(Color1, Color2, Colo
If N = 3 Then Plot3[4]
(3, “S3”, RGB(Color1, Color2, Colo
If N = 4 Then Plot4[4]
(4, “S4”, RGB(Color1, Color2, Colo
If N = 5 Then Plot5[4]
(5, “S5”, RGB(Color1, Color2, Colo
If N = 6 Then Plot6[4]
(6, “S6”, RGB(Color1, Color2, Colo
If N = 7 Then Plot7[4]
(7, “S7”, RGB(Color1, Color2, Colo
If N = 8 Then Plot8[4]
(8, “S8”, RGB(Color1, Color2, Colo
If N = 9 Then Plot9[4]
(9, “S9”, RGB(Color1, Color2, Colo
If N = 10 Then Plot10[4]
(10, “S10”, RGB(Color1, Color2, Co
If N = 11 Then Plot11[4]
(11, “S11”, RGB(Color1, Color2, Co
If N = 12 Then Plot12[4]

(12, “S12”, RGB(Color1, Color2, Co
If N = 13 Then Plot13[4]
(13, “S13”, RGB(Color1, Color2, Co
If N = 14 Then Plot14[4]
(14, “S14”, RGB(Color1, Color2, Co
If N = 15 Then Plot15[4]
(15, “S15”, RGB(Color1, Color2, Co
If N = 16 Then Plot16[4]
(16, “S16”, RGB(Color1, Color2, Co
If N = 17 Then Plot17[4]
(17, “S17”, RGB(Color1, Color2, Co
If N = 18 Then Plot18[4]
(18, “S18”, RGB(Color1, Color2, Co
If N = 19 Then Plot19[4]
(19, “S19”, RGB(Color1, Color2, Co
If N = 20 Then Plot20[4]
(20, “S20”, RGB(Color1, Color2, Co
If N = 21 Then Plot21[4]
(21, “S21”, RGB(Color1, Color2, Co
If N = 22 Then Plot22[4]
(22, “S22”, RGB(Color1, Color2, Co
If N = 23 Then Plot23[4]
(23, “S23”, RGB(Color1, Color2, Co
If N = 24 Then Plot24[4]
(24, “S24”, RGB(Color1, Color2, Co
If N = 25 Then Plot25[4]
(25, “S25”, RGB(Color1, Color2, Co
If N = 26 Then Plot26[4]
(26, “S26”, RGB(Color1, Color2, Co

If N = 27 Then Plot27[4]
(27, “S27”, RGB(Color1, Color2, Co
If N = 28 Then Plot28[4]
(28, “S28”, RGB(Color1, Color2, Co
If N = 29 Then Plot29[4]
(29, “S29”, RGB(Color1, Color2, Co
If N = 30 Then Plot30[4]
(30, “S30”, RGB(Color1, Color2, Co
If N = 31 Then Plot31[4]
(31, “S31”, RGB(Color1, Color2, Co
If N = 32 Then Plot32[4]
(32, “S32”, RGB(Color1, Color2, Co
If N = 33 Then Plot33[4]
(33, “S33”, RGB(Color1, Color2, Co
If N = 34 Then Plot34[4]
(34, “S34”, RGB(Color1, Color2, Co
If N = 35 Then Plot35[4]
(35, “S35”, RGB(Color1, Color2, Co
If N = 36 Then Plot36[4]
(36, “S36”, RGB(Color1, Color2, Co
If N = 37 Then Plot37[4]
(37, “S37”, RGB(Color1, Color2, Co
If N = 38 Then Plot38[4]
(38, “S38”, RGB(Color1, Color2, Co
If N = 39 Then Plot39[4]
(39, “S39”, RGB(Color1, Color2, Co
If N = 40 Then Plot40[4]
(40, “S40”, RGB(Color1, Color2, Co
If N = 41 Then Plot41[4]

(4 , “S4 ”, RGB(Color1, Color2, Co
If N = 42 Then Plot42[4]
(4 , “S4 ”, RGB(Color1, Color2, Co
If N = 43 Then Plot43[4]
(4 , “S4 ”, RGB(Color1, Color2, Co
If N = 44 Then Plot44[4]
( 4, “S 4”, RGB(Color1, Color2, Co
If N = 45 Then Plot45[4]
(4 , “S4 ”, RGB(Color1, Color2, Co
If N = 46 Then Plot46[4]
(4 , “S4 ”, RGB(Color1, Color2, Co
If N = 47 Then Plot47[4]
(4 , “S4 ”, RGB(Color1, Color2, Co
If N = 48 Then Plot48[4]
(4 , “S4 ”, RGB(Color1, Color2, Co
End;

```

Ehlers Convolution.pdf

Edited by derek2209

##### Share on other sites

Derek,

I think you may have to buy the book. The PDF you posted is cropped on the right after ~30 chars so who knows what else may be missing...

What happens when you run your

"If (IntPortion(.5*N))>Filt then Convolution[N]=(1+ExpValue(N));"

version?

'Filt' is a function call. You'd have to have the code for that to get this working...

Have you found complete .pla code for this? Your missing code and the Filt function might be an easy translation

Here is a contact who may be able to get you all the original code... He no longer uses TS so emphasis on may be

hth

zdo

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×

• 1
• 2
• 1
• 4
• 0
• ### Posts

• In general I agree. But how can we explain stagnation in those econimic areas where public policies are more proactive?
• NASDAQ 100 PRICE ANALYSIS — DECEMBER 1 The Nasdaq 100 (NDX) has rounded off November on a positive note, after the month up by more than 11%. This surge was mainly stimulated by the recently-concluded US Presidential election and the discovery of potential COVID-19 vaccines. These themes were the major dominating fundamental factors through November, as hopes for things to go back to normal (pre-covid) ignited some sectoral rotation. The rotation occurred mainly between work-from-home stocks and traditional businesses, which helped indexes like the Dow Jones (DJIA) and Russell 2000 take the lead from the Nasdaq 100. Nonetheless, the NDX remains in a favorable position as markets enter the close of 2020. That said, stimulus hopes and potential political stalemate in Washington over most of President-elect Biden’s policies could cause the Federal Reserve to maintain its dovish outlook, which would be very beneficial for NDX bulls. That said, it is likely that there are tailwinds present in the equity market ahead of December and 2021. However, there’s the possibility that the NDX could fall into consolidation before we see a continuation to the upside, as the US Presidential election-induced volatility has now been weaned out of the market. Nasdaq 100 (NDX) Value Forecast — December 1 NDX Major Bias: Bullish Supply Levels: 12300, 12370, and 12439. Demand Levels: 12220, 12000, and 11890. The NDX is on an aggressive bullish rally as it inches closer to its all-time high at 12439. At the moment, the 12220 support will likely prevent any sustained decline given the confluence of indicators (ascending trendline and 12220 crucial support) at that level. We expect the NDX to break its previous all-time high and record new peaks in the coming days before consolidation likely sets in.   Source: https://learn2.trade
• GERMANY 30 (DE30EUR) IS IN A DOWNWARD MOVE, MAY FALL TO LEVEL 13153.70 Key Resistance Zones: 13600, 14000, 14400 Key Support Zones: 11200, 10800, 10400 Germany 30 (DE30EUR) Long-term Trend: Bullish The index is an upward move but it is facing resistance at level 13200. It must have reached bullish exhaustion as it faces rejection. On November 10, a retraced candle body tested the 88.6% Fibonacci retracement. This indicates that the index will rise to level 1.1129 and perhaps reversed. DE30EUR – Daily Chart Daily Chart Indicators Reading: Presently, the SMAs are sloping upward indicating the uptrend. The index is at level 64 of the Relative Strength Index period 14. This indicates that it is in the uptrend zone and above the centerline 50. Germany 30 (DE30EUR) Medium-term Trend: Bullish On the 4- hour chart, the index is in a downward move. On November 30 downtrend, a retraced candle body tested the 61.8% Fibonacci retracement level. This implies that the index will fall and reach level 1.618 Fibonacci extension. DE30EUR – 2 Hour Chart 4-hour Chart Indicators Reading The market is below the 80% range of the daily stochastic. It indicates that the index is in a bearish momentum. Meanwhile, the 50-day SMA and the 21-day SMA are sloping upward indicating the uptrend. General Outlook for Germany 30 (DE30EUR) DE30EUR is likely to take a downward movement. The index has been trading in the overbought region. Sellers may emerge to push prices down. However, in a trending market, the overbought condition may not hold. That is the pair will continue to rise. Source: https://learn2.trade