Oh yeah?
My loss history with SGD was like below.

Never went down after 0.5 
My code in Octave has several files so I uploaded on the github 3.
ex2.m is main file and it proceeds the logic using ex2data1.txt.
In costFunction.m I implemented the BCE function.
And I used fminunc library function for training.
As you can see in ex2.m line 94, the number of iter is only 400 and it works well.