I'm using the close value in the snippet below for multiple purposes.
Two examples that not related to the code below:
ema = ema(close, 200). Is there a real benefit if I use therounded closeinstead of theclose? I heard that it's mostly useful in Forex.close > ema. What about here?
What are the real benefits from the rounded tick precision?
Speaking of it, can I replace every close, open, high, low usage with its rounded version from f_roundedToTickOHLC()?
// ————— Functions rounding OHLC to tick precision
f_roundedToTickOHLC() =>
float _op = round(open / syminfo.mintick) * syminfo.mintick
float _hi = round(high / syminfo.mintick) * syminfo.mintick
float _lo = round(low / syminfo.mintick) * syminfo.mintick
float _cl = round(close / syminfo.mintick) * syminfo.mintick
[_op, _hi, _lo, _cl]
// ————— Get rounded prices
[rOpen, rHigh, rLow, rClose] = f_roundedToTickOHLC()
// ————— Pullback
ema = ema(close, i_emaPullback)
// ————— TV built-in MACD code
fastLength = 12
slowlength = 26
MACDLength = 9
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
// ————— Filter
filterLong = MACD > 0
filterShort = MACD < 0
// ————— States
var float entryPrice = na
var bool inLong = false
var bool inShort = false
bool inTrade = inLong or inShort
// ————— Entries
enterLong = doLongs and not inTrade and crossover(MACD, 0)
enterShort = doShorts and not inTrade and crossunder(MACD, 0)
// ————— Stops
atr = atr(14)
stopLong = min(lowest(5), min(close, open) - atr * 1.5)
stopShort = max(highest(5), max(close, open) + atr * 1.5)
// ————— Exits
exitLong = inLong and ((crossunder(MACD, aMACD) and MACD > 0) or close < stopLong[1])
exitShort = inShort and ((crossover(MACD, aMACD) and MACD < 0) or close > stopShort[1])
if enterLong
inLong := true
entryPrice := close
else if enterShort
inShort := true
entryPrice := close
else if exitLong
inLong := false
entryPrice := na
else if exitShort
inShort := false
entryPrice := na