Instead of using min(Value) and max(value) for the color, use your expression for the color option (selected in blue in my screenshot).
if(sum([Compras Preço Custo])>0,Green(),Red()) // sum([Compras Preço Custo]) is my expression for the graph below).
In my case, it gives me
Since your expression is if(min(Value)<0,Red(),Green()), its always evaluating true, because your min value for the dataset is lower than 0 (zero) giving all bars the red color.
The thing is my chart is created with 2 columns of data united: a list of values that I want to see below the line (I gave them the minimum function) and a list of values that I want to display above the line (I gave them Maximum function).
That's why the syntax doesn't work in my case because I have 2 stacked measures and your syntax works with a measure (sum([Compras Preço Custo]) and 2 colors .
Maybe you have another idea how to display my data above and below the line O without the trick of Min and Max function. All values are on the same dimension.