I've been moving more and more to the dark side of automated trading lately, undergoing a big learning phase for programming. In this spirit, I wanted to write my own properly object-oriented backtester to test some models I've been playing with lately. Can any of you veterans give me some guidelines on the general architecture? Obviously, there will be some sort of base data structure, either representing a bar or a tick, depending on how fine-grained I want it, and I can certainly write all the individual algorithm methods, but I was more concerned with the big picture. In particular, what is the best object-oriented way to represent a trading system, a set of buy and sell rules, an optimizer? Maybe a trading system should be an interface, and an optimizer should be a class with a TradingSystem instance variable? Just looking for some general guidelines on the class structure and the sort of methods and IVs that should be housed in each. Thanks very much in advance.