You're
testing curr_trade_dir for identity, not equality. When you write
curr_trade_dir == "Down", you're testing whether they are exactly the same two objects in memory, not whether they mean the same thing. The lesson is simple: Don't use
== where you should use
equals().
Another thing, doubles can not represent certain values exactly. Doing comparisons like
myCurrPositionValue == 0.2 is asking for trouble. If you really must use floating point arithmetic, you need to introduce a tolerance when you want to compare two values.
Finally, don't use variable names such as
curr_trade_dir. Use
currentTradeDirection. Strings are also a poor substitute for expressive data types. Use an enum for your directions: