So, here's what I'm aiming to do: I want to write a script that uses OHLC-data exclusively from UP-candles [close > open] to calculate % change from Open to High, Close to High, and Open to Low, then take a (moving) average of those values to determine dynamic take profit-, trailing deviation- and stop loss-levels. I figured that this should do the trick.
// Variables
upCandle = (close > open) and barstate.isconfirmed
MP = if upCandle
((high - open) / open) * 100
TD = if upCandle
((high - close) / close) * 100
ML = if upCandle
((low - open) / open) * 100
It gets the values of the Up-candles correctly (so that part works), but then it interpolates between the empty values it gets from Down-candles. I want to ONLY take the OHLC-data from Up-candles, not have N/A- or ZERO-values inserted if no data is available. I think I might be able to solve this using arrays, something along the lines of "if the Up-candle is confirmed, stick the appropriate value into a corresponding FIFO-array, if not then don't". Then, I could calculate the average from that array with a specified lookback period (f.x. include only the last 9 Up-candles) which I could then plot as a moving average for the array-data and a histogram for the raw Up-candle data. In other words, I think I can accomplish what I want to do by filtering out Down-candles from an array.
But how do I do that? Anyone have any ideas? :)
You can indeed use the arrays to accomplish the goal. Add an array element only if the current candle is the one you are looking for - upCandle, using the input you can control the number of elements in the array and take its average using the
array.avg()
built-in. I have also introduced the upCandleCount counter for theplot()
functions to start plotting on the chart only after 9 upCandles are found.