It analyses moving averages in a channel and their momentum according to the channel width.
On each bar it creates a channel by highest/lowest point of a MA. highest point is upper point and lowest point is lower point of the MA channel.
It gets highest and lowest point of last 300 bars, (say Price Channel )
If the width of MA channel is greater than certain rate of price channel then it decides there is trend.
After it decided there is trend, it calculates the rate between channel and MA. Bigger result means stronger trend.
According to rate of MA channel and the price channel , bar color becomes lighter/darker. so when you look at the bar color you can see the trend strength.
The darker the colour, the weeker the trend is.
Upon a request from user denmar (https://www.prorealcode.com/topic/help-converting-trend-follower-indicator-from-trading-view/) I converted this indicator written by LonesomeTheBlue.
// Trend Follower
//
// https://it.tradingview.com/script/o0ZOSVHj-Trend-Follower/
//
//MAtype = 1 //1=Ema
//TrendP = 20 //20 periods to check trend
//MAperiods = 20 //20 periods for MA
//TrendRate = 1 //1% trend channel rate
//UseLR = 1 //1=use Linear Regression, 0=do not use LR
//LRperiods = 5 //5 periods for Linear Regression
//RangeP = 300 //300 period for the range
MAtype = max(0,min(8,MAtype))
TrendP = max(1,min(999,TrendP))
MAperiods = max(1,min(999,MAperiods))
TrendRate = max(0.00001,min(99,TrendRate))
RangeP = max(1,min(999,RangeP))
//
RateMult = TrendRate / 100
PriceRange= highest[RangeP](high) - lowest[RangeP](low)
MyChannel = PriceRange * RateMult
MyMA = average[MAperiods,MAtype](close)
IF UseLR THEN
MyMA = LinearRegression[LRperiods](close)
ENDIF
hh = highest[TrendP](MyMA)
ll = lowest[TrendP](MyMA)
diff = abs(hh - ll)
x = 0
IF diff > MyChannel THEN
IF MyMA > (ll + MyChannel) THEN
x = 1
ELSE
IF MyMA < (hh - MyChannel) THEN
x = -1
ENDIF
ENDIF
ENDIF
Trend = x * diff / MyChannel
IF Trend > 0 THEN
r = 0
g = 255
b = 0
t = 255
IF Trend < Trend[1] THEN
g = 128
t = 180
ENDIF
ELSE
r = 255
g = 0
b = 0
t = 255
IF Trend > Trend[1] THEN
r = 139
g = 0
b = 0
t = 255
ENDIF
ENDIF
RETURN Trend coloured(r,g,b,t) style(histogram,2) AS "Trend",0 coloured(0,0,255,32) style(dottedline,2) AS "Zero"
You must be logged in to post a comment.
Please start a new topic in ProOrder support.
Hi Roberto, sorry for my confusing previous posts (forget them). My request is very simple, I just want to enter/exit by using TREND signal from your indicator. I want entry long when trend > 0 then exit when trend 0 and exit long is not when trend < 0 (same at the opposite for short signal). It's why I wondered if you can test by your own and then share with me the last lines of your ProOrder code? Thanks for you help. // Trend Follower // // https://it.tradingview.com/script/o0ZOSVHj-Trend-Follower/ // MAtype = 1 //1=Ema TrendP = 20 //20 periods to check trend MAperiods = 20 //20 periods for MA TrendRate = 1 //1% trend channel rate UseLR = 1 //1=use Linear Regression, 0=do not use LR LRperiods = 5 //5 periods for Linear Regression RangeP = 1 //300 period for the range MAtype = max(0,min(8,MAtype)) TrendP = max(1,min(999,TrendP)) MAperiods = max(1,min(999,MAperiods)) TrendRate = max(0.00001,min(99,TrendRate)) RangeP = max(1,min(999,RangeP)) // RateMult = TrendRate / 100 PriceRange= highest[RangeP](high) - lowest[RangeP](low) MyChannel = PriceRange * RateMult MyMA = average[MAperiods,MAtype](close) IF UseLR THEN MyMA = LinearRegression[LRperiods](close) ENDIF hh = highest[TrendP](MyMA) ll = lowest[TrendP](MyMA) diff = abs(hh - ll) x = 0 IF diff > MyChannel THEN IF MyMA > (ll + MyChannel) THEN x = 1 ELSE IF MyMA < (hh - MyChannel) THEN x = -1 ENDIF ENDIF ENDIF Trend = x * diff / MyChannel IF Trend > 0 THEN r = 0 g = 255 b = 0 t = 255 IF Trend < Trend[1] THEN g = 128 t = 180 ENDIF ELSE r = 255 g = 0 b = 0 t = 255 IF Trend > Trend[1] THEN r = 139 g = 0 b = 0 t = 255 ENDIF ENDIF // Long Entry if not onmarket and trend > 0 then BUY 1 CONTRACTS AT MARKET ENDIF // Long Exit if longonmarket and trend < 0 then SELL AT MARKET ENDIF // Short Entry if not onmarket and trend < 0 then SELLSHORT 1 CONTRACTS AT MARKET endif // Short Exit if shortonmarket and trend > 0 then EXITSHORT AT MARKET ENDIF
I can't understand when you want to enter/exit. Please start a new topic in ProOrder support and attach the ITF file of your strategy + screenshot (showing also the instrument and timeframe used).
It seems I had some difficulties to copy paste the complete code correctly. The overall code is just your indicator + the following conditions at the end: Read trend > 0 instead of g = 255 and trend < 0 instead of r = 255 // Conditions pour ouvrir une position acheteuse if not onmarket and g = 255 then BUY 1 CONTRACTS AT MARKET ENDIF // Conditions pour fermer une position acheteuse if longonmarket and r = 255 then SELL AT MARKET ENDIF // Conditions pour ouvrir une position en vente à découvert if not onmarket and r = 255 then SELLSHORT 1 CONTRACTS AT MARKET ENDIF // Conditions pour fermer une position en vente à découvert if shortonmarket and g = 255 then EXITSHORT AT MARKET ENDIF
Please find herein after / Trend Follower // MAtype = 1 //1=Ema TrendP = 20 //20 periods to check trend MAperiods = 20 //20 periods for MA TrendRate = 1 //1% trend channel rate UseLR = 1 //1=use Linear Regression, 0=do not use LR LRperiods = 5 //5 periods for Linear Regression RangeP = 1 //300 period for the range MAtype = max(0,min(8,MAtype)) TrendP = max(1,min(999,TrendP)) MAperiods = max(1,min(999,MAperiods)) TrendRate = max(0.00001,min(99,TrendRate)) RangeP = max(1,min(999,RangeP)) // RateMult = TrendRate / 100 PriceRange= highest[RangeP](high) - lowest[RangeP](low) MyChannel = PriceRange * RateMult MyMA = average[MAperiods,MAtype](close) IF UseLR THEN MyMA = LinearRegression[LRperiods](close) ENDIF hh = highest[TrendP](MyMA) ll = lowest[TrendP](MyMA) diff = abs(hh - ll) x = 0 IF diff > MyChannel THEN IF MyMA > (ll + MyChannel) THEN x = 1 ELSE IF MyMA 0 THEN r = 0 g = 255 b = 0 t = 255 IF Trend Trend[1] THEN r = 139 g = 0 b = 0 t = 255 ENDIF ENDIF // Conditions pour ouvrir une position acheteuse if not onmarket and trend > 0 then BUY 1 CONTRACTS AT MARKET endif // Conditions pour fermer une position acheteuse if longonmarket and trend < 0 then SELL AT MARKET ENDIF // Conditions pour ouvrir une position en vente à découvert if not onmarket and trend 0 then EXITSHORT AT MARKET ENDIF
Post the complete code you used.
Don’t use colours as a signal, use TREND instead. If it’s > 0 it’s a Long signal, otherwise it’s a Short signal.
Hi Roberto, Thanks for this indicator which is very helpful. I tried to use this indicator into a very simple strategy based on g > 0 --> BUY and r SELL. The strategy runs however entry in call and put position don't follow the indicator. Unfortunately I can't put sceenshot to show Do you have any idea why? FYI I run with PRTV11 Thank you I share only the end of the code + position entries: Trend = x * diff / MyChannel IF Trend > 0 THEN r = 0 g = 255 b = 0 t = 255 IF Trend Trend[1] THEN r = 139 g = 0 b = 0 t = 255 ENDIF ENDIF // Conditions pour ouvrir une position acheteuse if not onmarket and g = 255 then BUY 1 CONTRACTS AT MARKET ENDIF // Conditions pour fermer une position acheteuse if longonmarket and r = 255 then SELL AT MARKET ENDIF // Conditions pour ouvrir une position en vente à découvert if not onmarket and r = 255 then SELLSHORT 1 CONTRACTS AT MARKET ENDIF // Conditions pour fermer une position en vente à découvert if shortonmarket and g = 255 then EXITSHORT AT MARKET ENDIF
OK