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.

# What Am I Missing with My Slope Calculation Code ?

## Recommended Posts

I seem to be having a little bit of an issue with my slope calculation and was hoping someone could double check that I had written it properly.

The issue is basically that even with the slope degree input adjusted to extremes, some of these flat spots still trigger differently. If working properly the small transition in the middle should have stayed magenta as opposed to going green for 2-3 bars and back to magenta. Am I missing something in my code ?

Here is a snippet of the EasyLanguage code in question.

Inputs:
SlopeAv(5);

Vars;
Slope(0);

Avg = average( Close, length) ;
Slope =(TLSlopeEasy(Avg,1,SlopeAv));

if colorMode = 1
then setplotcolor[1](1, iff( Avg <Avg [1] and (Slope < .01 ), magenta, green ) );
plot1 (Avg , "Avg ");

Below is a snippet from the diagnostics file (area highlighted in blue is where the color shift occurs). Am I missing something ...seems like just the type of scenario I was trying to smooth. The answer could be staring me in the face and I might not be seeing it.

------------------------------------------------------------------------------

1111214 1419Avg 3.48Avg[1] 3.51|slope -0.04|condition FALSE

1111214 1419Avg 3.45Avg[1] 3.48|slope -0.03|condition FALSE

1111214 1420Avg 3.42Avg[1] 3.45|slope -0.03|condition FALSE

1111214 1420Avg 3.40Avg[1] 3.42|slope -0.03|condition FALSE

1111214 1420Avg 3.38Avg[1] 3.40|slope -0.03|condition FALSE

1111214 1420Avg 3.37Avg[1] 3.38|slope -0.02|condition FALSE

1111214 1420Avg 3.36Avg[1] 3.37|slope -0.02|condition FALSE

1111214 1420Avg 3.35Avg[1] 3.36|slope -0.02|condition FALSE

1111214 1421Avg 3.34Avg[1] 3.35|slope -0.01|condition FALSE

1111214 1421Avg 3.34Avg[1] 3.34|slope -0.01|condition FALSE

1111214 1423Avg 3.35Avg[1] 3.34|slope -0.01|condition FALSE

1111214 1424Avg 3.35Avg[1] 3.35|slope -0.00|condition FALSE

1111214 1426Avg 3.35Avg[1] 3.35|slope 0.00| condition FALSE

1111214 1429Avg 3.36Avg[1] 3.35|slope 0.00| condition FALSE

1111214 1429Avg 3.36Avg[1] 3.36|slope 0.00| condition FALSE

1111214 1429Avg 3.36Avg[1] 3.36|slope 0.00| condition FALSE

1111214 1430Avg 3.36Avg[1] 3.36|slope 0.00| condition FALSE

1111214 1430Avg 3.36Avg[1] 3.36|slope 0.00| condition FALSE

1111214 1430Avg 3.36Avg[1] 3.36|slope 0.00| condition FALSE

1111214 1431Avg 3.35Avg[1] 3.36|slope -0.00|condition FALSE

Any help would be much appreciated

##### Share on other sites

The code you posted is not the code that produced the chart you posted. When asking for help it is best if your chart includes the symbol name in the picture. The symbol should be set to exchange time. This enables calibrating a test case to the aproximately 14:30 time (on this unknown symbol) using some code other than the code you posted.

##### Share on other sites
the middle should have stayed magenta as opposed to going green for 2-3 bars and back to magenta. Am I missing something in my code ?

if colorMode = 1

then setplotcolor[1](1, iff( Avg <Avg [1] and (Slope < .01 ), magenta, green ) );

plot1 (Avg , "Avg ");

The color is controlled by 'Avg' being up or down since the last bar. Avg <Avg [1]. If you wanted it delayed, wouldn't you need to check multiple bars?

To change color down it would need to pass this test:

Avg <Avg [1] and Avg[1] < Avg [2] and Avg[2] < Avg [3]

otherwise stay the same color, or display a neutral color.

var: ChangeDown(False), ChangeUp(False);

ChangeDown = Avg <Avg [1] and Avg[1] < Avg [2] and Avg[2] < Avg [3];

ChangeUp = Avg >Avg [1] and Avg[1] > Avg [2] and Avg[2] > Avg [3];

if ChangeDown then

setplotcolor[1](1, magenta )

else if ChangeUp then

setplotcolor[1](1, Green );

##### Share on other sites

LOL, just curious as onesmith, how does the software actually calculates slope.

##### Share on other sites

The formula for slope is slope=(endprice-startprice)/length; A threshold can be optimized to filter out undesirable slope levels.

input: threshold(.1);
var: avg(0), slope(0);

avg=average(c,10);
slope=(avg-avg[10])/10;

if slope > threshold then setplotcolor(1,green)
else if slope < -threshold then setplotcolor(1,red);

plot1(avg,"avg");

##### Share on other sites

Thanks for confirming, that is the classical definition. Many people use the regression line slope also.

##### Share on other sites
Thanks for confirming, that is the classical definition. Many people use the regression line slope also.

another effective (and more robust) way to determine direction (actually a form of "slope") can be the SDX - signed direction index

Tom

##### Share on other sites
another effective (and more robust) way to determine direction (actually a form of "slope") can be the SDX - signed direction index

Tom

Tom, I'm trying to translate sdx. Please post source code. From the formula, I understand S=Speed but I don't understand the line below.

S(i) = P(i) - P(i-1) i= 1, ... , k-1

If i represents an index from 1 to 10 what does k represent? ... a 1 point increment in grid? Can you help me visualize k in the code below?

for i=1 to 10 begin
s(i)=p(i)-p(i-1);
end;

##### Share on other sites

Hi onesmith

Since you are interested in a recent value of the "direction", you limit your computations to a recent number of price variations ("moves" from a gridline to another). The (k-1) would represent how many latest distinct price changes you are considering to assess the recent "direction".

When you use equispaced gridlines (and do not use weighting), you can just simplify as follows (which is immediately intuitive to visualize):

Number of "UpMoves" - Number of "DownMoves"
sdx =     --------------------------------------------------------------------   *  100
Number of all "Moves"

intending here "UpMoves", "DownMoves", "Moves" as the distinct price "moves" from a gridline to the adjacent one.

[ The distance between gridlines depends on your "timeframe" (similar to when you measure time, you may be interested in microseconds variations, or you may just be intested in minutes, depending on what you are doing).

(I often use a distance between gridlines equal to 0.1% of the price.) ]

Let me know if something unclear here.

Tom

Tom, I'm trying to translate sdx.

[...]

If i represents an index from 1 to 10 what does k represent? ... a 1 point increment in grid? Can you help me visualize k in the code below?

for i=1 to 10 begin
s(i)=p(i)-p(i-1);
end;

Edited by tommaso

## 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
• 5
• 0
• 0
• 0
• ### Posts

• re racISM Seek the truth. Confront the lies.   Any white people who are racist are racist out of fear ... any 'supremacy' beliefs are compensatory.  Same with blacks... Seek the truth. Confront the lies.   Contrary to what you've been taught in school and now in culture, white people did not invent slavery.  Nor have they applied the most consistently horrific practices of slave owners, historically or currently.   Contrary to what you've been taught in school and now in culture, in fact, white people have done more to eradicate slavery / humans as property from the face of the earth than any other race - ever.   Seek the truth.  Confront the lies.  If you're white, don’t allow yourself to be guilted.   That just compounds the issues and divisions.   You are not individually or collectively responsible for the exploitation of minorities by a small percentage of psychopaths who happen to also be the same ‘race’ as you are ...  just because black people’s ‘self esteem’  generally needs to rise - especially those ‘trapped’ on the concrete plantations - is no reason your’s needs to fall ... don’t play into ivory tower false dialectic psyops designed to enslave EVERYBODY!   “A man’s rights rest in three boxes: the ballot box, the jury box, and the cartridge box.”  Frederick Douglass, 1867  civil rights leader in response to post-Civil War segregation laws... my god was that boy and this boy unwoke or what
• The intent of this post is to divert your attn. from the lie campaign about the appearance of improprieties by Hunter and Joe Biden...“The emails are Russian” is going to be the official dominant narrative in mainstream political discourse, and there’s nothing you can do to stop it. Resistance is futile. It will likely be too deep for most ‘millennials’  racISM https://www.realclearpolitics.com/articles/2020/10/12/the_civil_rights_legend_who_opposed_critical_race_theory_144423.html marxISM https://ammo.com/articles/cultural-marxism-gramsci-how-disciples-of-gramscian-marxism-subverted-america
• EURJPY UPSIDE TRACTION OVERPOWERS BEARS, EYES 124.00 LEVEL   EURJPY Price Analysis – October 16 EURJPY is accelerating from a low of around 123.00 as upside potential prevails over sellers for another session on Friday. The cross has so far managed to hold above the 123.00 level. Given the uncertainty, it would be a mistake to set an end date for the response to the pandemic, European Central Bank (ECB) governing board member said on Friday. Key Levels Resistance Levels: 127.07, 126.46, 125.00 Support Levels: 123.00, 122.37, 119.31 EURJPY Long term Trend: Ranging As noted on the daily chart, if selling momentum picks up additional pace, then the pair is expected to continue to the next relevant area around 123.00, where it sits low in October. Further south, there is critical horizontal support just above the 122.37 level. While the RSI recovery from the near oversold area suggests a further recovery in the pair, a clear break of the 124.00 marks becomes necessary for the EURJPY bulls ahead of the 124.43 level and the weekly high near the 125.00 level. EURJPY Short term Trend: Bearish EURJPY intraday bias remains bearish, with 38.2% retracement from 114.39 to 127.07 at 122.37. A solid break there would confirm a resumption of the entire corrective fall from 127.07 and aim a 61.8% correction at 119.25, close to the pivotal support at 119.31. On the other hand, however, a break of the 125.00 level will bring the upward trend back to retest the 127.07 level. Conversely, a clear dip below the 123.00 level could plummet towards the 120.00 psychological magnets.   Source: https://learn2.trade