The function definition clearly shows that it takes only 3 arguments - table, field, condition. In your second call you are passing 5 so the final 2 are ignored.
Try
$count_long_trades_pos = $db->getQueryCount('tbl_trades','lg_short_trade',' AND lg_short_trade="Long" AND pnl_trade > 0 AND num_bot_trade="'.$_REQUEST['editId'].'"');
Secondly, I don't know what the other functions in your database class are like but that one should be consigned to the trash bin...
Incorrect use of prepared statements
The query will wil return one row with one column (the count), so
why return fetchAll() which is for multiple rows?, and
why not just return the record count?
The if() condition in the middle is waste of code