Automatic Trend Line Coloring

Questions about MultiCharts and user contributed studies.
User avatar
geizer
Posts: 375
Joined: 16 Jun 2008
Has thanked: 40 times
Been thanked: 38 times

Automatic Trend Line Coloring

Postby geizer » 22 Mar 2010

Hi,

this code is helpful if you prefer different colors for your 'Up' and 'Down' trend lines.

At first I was going to send a new feature request, but decided to implement it in PowerLanguage.

I need some help, so the code could apply the color without having to wait for a new tick (when charting offline).

Thanks,

Code: Select all

// Automatic Trend Line Coloring
//
// File name: TL_AutoColor
//
// This indicator designed to work with Multicharts and be placed
// on all your charts. The indicator detects when a new trend line
// is created or existing trend line is selected. It automatically
// applies one of three pre-defined colors to selected trend line
// depending on 'positive', 'negative', or 'neutral' slope.
// The corresponding color inputs are: 'Up', 'Down',and 'Neutral'.
//

inputs: Up(blue), Down(red), Neutral(cyan);

vars: Active_TL_ID (-1), // The ID of active TL
NewTrendlineColor(neutral);

condition1 = TL_GetActive <> (-1); // trendline is active
condition2 = TL_GetActive <> (-2); // trendline has valid ID

if condition1 AND NOT condition2 then // TL is active, and has Invalid ID
begin
// trendline has invalid ID.
// whatever happens here
end;

if condition1 AND condition2 then begin // TL is active and has valid ID
Active_TL_ID = TL_GetActive;


// Detect the slope of trendline --------------------------------------------
condition4 = TL_GetBeginTime_s(TL_GetActive) = TL_GetEndTime_s(TL_GetActive);
condition5 = TL_GetBeginDate(TL_GetActive) = TL_GetEndDate(TL_GetActive);
condition6 = TL_GetEndVal(TL_GetActive) = TL_GetBeginVal(TL_GetActive);

condition7 = (condition4 AND condition5 ) OR condition6; // slope 'neutral'
condition8 = TL_GetEndVal(TL_GetActive) < TL_GetBeginVal(TL_GetActive); // slope 'negative'
condition9 = TL_GetEndVal(TL_GetActive) > TL_GetBeginVal(TL_GetActive); // slope 'positive'

if condition9 then begin // check for 'positive' slope
NewTrendlineColor = Up;
end;
if condition8 then begin // check for 'negative' slope
NewTrendlineColor = Down;
end;
if condition7 then begin // check for 'neutral' slope
NewTrendlineColor = Neutral;
end;
// slope detected ----------------------------------------------------------

end;
TL_SetColor(Active_TL_ID, NewTrendlineColor); // Set trend line color

User avatar
TIKITRADER
Posts: 84
Joined: 17 Jun 2009
Location: USA
Has thanked: 55 times
Been thanked: 13 times

Postby TIKITRADER » 24 Mar 2010

This is great thank you works very nice. I wish I could help to get it to change color without a new tick but have no idea.
added simple input TL_Style to change trendline

TL_SetStyle(Active_TL_ID,TL_Style);


Return to “MultiCharts”