As you are importing an object for each frame, you want to keyframe the visibility of each object so that it is only visible on the frame that it is made for.
You can use the following script to import each obj and keyframe it's visibility.
import bpy
scn = bpy.context.scene
for f in range(scn.frame_start, scn.frame_end):
fpath = bpy.path.abspath('//sim_data_{}.obj'.format(f))
bpy.ops.import_scene.obj(filepath=fpath)
obj = bpy.context.selected_objects[0]
# key as visible on the current frame
obj.keyframe_insert('hide',frame=f)
obj.keyframe_insert('hide_render',frame=f)
# hide it
obj.hide = True
obj.hide_render = True
# key as hidden on the previous frame
obj.keyframe_insert('hide',frame=f-1)
obj.keyframe_insert('hide_render',frame=f-1)
# key as hidden on the next frame
obj.keyframe_insert('hide',frame=f+1)
obj.keyframe_insert('hide_render',frame=f+1)
If you have the option to export in .mdd or .pc2 format, you could look at using the mesh cache modifier.
Depending on how much the "particles" in the simulation deform, you may also want to look at exporting a location and size of each item per frame. This way you could just use the exported data to keyframe the location of each object.