Eigentlich Sie haben nur einen kleinen Fehler gemacht - wahrscheinlich ein Copy-Paste-Fehler.
Die folgende Zeile benötigt 8 statt 4 Parameter, weil Sie Fragezeichen an Stellen gesetzt haben, an denen Sie Spaltennamen hätten setzen sollen.
insert into `stocks`(?,?,?,?) values (?,?,?,?);";
Wenn Sie es wie folgt ändern (die Spaltennamen durch Ihre echten Namen aus der Aktientabelle ersetzen), sollte es so funktionieren, wie Sie es erwartet haben.
insert into stocks(ColumnNameOne, ColumnNameTwo, ColumnNameThree, ColumnNameFour)
values (?, ?, ?, ?);