Optimal order execution using hidden orders