Stepper motor BYJ48

I want it to start from an initial position (very important)

Arduino has no way of knowing the position of the motor when it starts, you will either have to set the motor to the start position manually (by hand) or use a limit switch or other sensor and run the motor to the switch (home position) in your setup() routine.
Also, your motor has 2048 steps per shaft revolution, so you cannot get exactly 300 degrees, 1707 steps is close. (300.05859375 degrees).