There is no definitive answer to this but I believe most recording systems measure the open and close as the first and last traded price, respectively, irrespective of the bid and ask.
If you only have bid and ask prices and not a list of traded prices then you cannot ascertain this information, and I would be inclined to model it systematically as the unweighted average, with some mechanism for dealing with prices at open or close that are missing bids or offers.
Incidentally, I disagree with your 'sense' statements. I would use the highest bid as the high and the lowest offer as the low, for the reason that this is robustly stable and also corresponds to a sensible executable level. In an illiquid market where there is no ask price I might offer to sell a single share in 'Complete Dog Plc.' for a bazillion dollars, and for that period of time it would be the best (and highest) ask price of the day, but completely useless for analysis. On the other hand I suspect no one would ever bid higher that some competitive price, e.g $0.01, for 'Complete Dog Plc.' and therein lies your robustness.