Here is something I have done in the past and I think will help you retrieve your product ids without having to loop through every single product.
You can use VBO to load a list of entity IDs to your view that you can loop through. You can read how to do that here: http://nodeone.se/sv/node/777
This will allow you to create two views to return the entity ids for your products enabling today and disabling today.
Then create your RULE to fire during cron or something, as long as its once a day.
Add your Action to load a list of entity objects through a VBO display.
Add a loop based on that loop parameter List. It defaults to "entity_list"
Add an Action for the Loop to iterate over your entity list which is your product entity to either disable or enable the product. Select Data -> Set a value
Once you are in the set a value part you will see your "entity-list" data selector pop up and you can set the value for enabling or disabling to w/e you need it to be.
Hopefully this will get you where you need to be, let me know if you get stuck.
Just a slight followup, you can add both VBO views to the single rule. One VBO display pulls all the products that need to be enabled today that you loop through, and then you can create another action to pull the VBO display that turns off the products for today. So this will run every day turning on/off your products and you never have to worry about scheduling anything.