# ______

### [Original Article]

Probably, you have already met the problem, when you tried to use `highest()`  or `lowest()` functions in TradingView PineScript using the dynamic/calculated variable, i.e.:

`length = close > open ? 2 : 3my_value = highest(close, length )`

So, you will get the error:

Cannot call `highest` with arguments (series, series); available overloads: highest(series, integer) => series; highest(integer) => series;
Cannot call `lowest` with arguments (series, series); available overloads: lowest(series, integer) => series; lowest(integer) => series;
Cannot call `rising` with arguments (series, series); available overloads: lowest(series, integer) => series; lowest(integer) => series;
Cannot call `falling` with arguments (series, series); available overloads: lowest(series, integer) => series; lowest(integer) => series;

As always (this is generic rule in most platforms), the platform developers just ignore users’ requests for years, even for simple things (So, don’t hope your request-topic, opened years ago, will be ever fixed in near future). Instead, you should find a custom solution. So, we had to create a custom solution for that, and finally did:

# highest / lowest:

`highest_(values, length) =>	h_val = values	h_indx = 0	if length >= 1		for i = 0 to length-1			if ( not na(values[i]) and values[i] > h_val  )				h_indx := i				h_val := values[i]	h_val	lowest_(values, length) =>	l_val = values	l_indx = 0	if length >= 1		for i = 0 to length-1			if ( not na(values[i]) and values[i] < l_val )				l_indx := i				l_val := values[i]	l_val`

You can use now:

`hVal = highest_(high, length)`

# falling / rising:

`rising_(values, length) =>	current_ = values	ok_ = false	if length>0 and length<=bar_index	    ok_ := true		for i = 1 to length			if ( not na(values[i]) and current_ <= values[i] )				ok_ := false				break	ok_falling_(values, length) =>	current_ = values	ok_ = false	if length>0 and length<=bar_index	    ok_ := true		for i = 1 to length			if ( not na(values[i]) and current_ >= values[i] )				ok_ := false				break	ok_`

You can use:

`myVar = rising_(close, length)`