maybe this is a start. Putting the ticks inside is kind'a hard. (ps. the yellow background, is from Mathematica itself. I have to accept yellow color in place of pausing when opening any new notebook or window. So I took the yellow color. Mathematica graphic card bug on windows)

glx = Table[
If [Mod[i, 2] ==
0, {i, {Blue, Thickness[0.005]}}, {i, {Thin, Blue}}], {i, -4, 4, .5}];
gly = Table[
If [Mod[i, 16] ==
0, {i, {Blue, Thickness[0.005]}}, {i, {Thin, Blue}}], {i, -32, 32, 4}];
Plot[{x, x^2, x^3}, {x, -4, 4},
Frame -> True,
FrameTicksStyle -> Blue,
GridLines -> {glx, gly},
PlotRange -> {{-4.5, 4.5}, {-36, 36}},
ImageSize -> 500,
Axes -> False,
Epilog -> {
{Thick, Arrowheads[Small], Arrow[{{-3, 0}, {3, 0}}]},
{Thick, Arrowheads[Small], Arrow[{{0, -30}, {0, 30}}]},
Text[Style[Style["y"], Italic], {-.1, 28}],
Text[Style["x", Italic], {3, -2}]
},
PlotStyle -> {FontFamily -> "Times"},
FrameTicks -> {{Range[-32, 32, 16], Range[-32, 32, 16]}, {Range[-4, 4, 2],
Range[-4, 4, 2]}}
]