if there is repainting then I suggest to go to lower time frame and graph of 1 hour or half hour then it will not repaint. the issue i think exist only in 24 hours time frame when you build it on shorter graph
still the results will be great (test it in strategy that i put before this one)
Use variance(price, lookback) as a filter.
When the signal is fired and variance is below some threshold- wait for the rise of the variance and enter in the direction of the signal.
X = input(hlc3)
p = input(2)
mult = input(1., minval=.01, step=.1)
mean(x, p) => sum(x, p) / p
mean_price = mean(X, p) // OR sma et al.
var = variance(mean_price, p)
iv = inverse_fisher(var*100) * mult // this is the case for BTCUSD. Ex. in EUR the variance is very small, so stddev is better. To be tested.