Quote from coolraz:
Wayne,
I think your idea is very interesting. There is currently something similar out there called TradeLink Suite
http://code.google.com/p/tradelink/
which has historical backtesting, live trading and works on tickdata (can create bars etc). It has the base of what you are trying to achieve, but does not have some features that you mentioned that I think would be great (such as backtesting a portfolio of customized strategies at the same time)
It's written in C# with brokerservers for interacting with IB's TWS API and Anvil (Assent) API in C++.
I have been using it for backtesting and some live trading and it works quite well. The developer is INCREDIBLE at supporting it and very helpful.
My only issues is that there are not many people using it for IB and futures trading and that there's no plans to use FIX, which is something I would like to see.
I think it might be worthwile for you to perhaps check it out, or even consider combining forces with the TradeLink developer to make an even better result.
Anyway, BEST OF LUCK to you in your project! You are doing something that will benefit a lot of people (and hopefully you in the process! : )
Thanks for the info. I'll check it out. At the moment I'm setting up the forums, web site, and stuff.
Amazing I didn't find TradeLink before. Is it relatively recent?
QUESTION: I'm just curious of you posted your suggestions of TradeLink to the TradeLink forum?
Note, I just reviewed the object graph of TradeLink.
There's one major difference in the design of order and trade handling with TickZoom.
It's a completely different philosophy. some of this may be new to many of you.
Someone on EliteTrader gave me this idea many months ago.
Basically, to achieve the mixed portfolios on a single instrument you have to handle order processing differently and much simpler.
Please think this through as it's a big and important TickZoom concept.
Replace the idea in your mind of a customer strategy placing orders with limit or market, stops, etc.
That is impossible to combine across multiple strategies on the same instrument. In fact it's highly disadvantageous in other ways as you'll see as I progress.
Instead think of each strategy simply generating a single steady signal of how many lots to be long or short and zero for flat.
Now if I have a trend and a reversion strategy. One may be generating a 1 lot signal (meaning long) and the other generates a -1 signal (meaning short).
Now a the portfolio strategy (built-in but you can extend it) can sum the two signals together. The sum result is to go flat. So it tells the broker interface to go flat.
On the other hand if they both said long, then it would go long 2 contracts. Of course, you might prefer to make it so if they agree you only go 1 contract long or short, etc.
Now, the beauty of this paradigm gets even better.
Now you can "CHAIN" strategies together to test adding on different options.
For example, every strategy by default has an ExitManager and a MoneyManager strategy.
So visualize the 1, 0, -1 signal from the strategy feeding into the exit manager.
It now handles all the stops or target profits exits you like. It has built-in defaults. But all it does is watch the bid/ask prices to see when a stop was hit LOGICALLY.
In then modifies the signal going to the MoneyManager by making it go flat to 0 (zero) if a stop is hit.
Now the built in moneymanager generates all the trade statistices. ( I need to rename it to StatisticsManager. And add a separate one specifically for MoneyManagement that comes before statistics.)
It watches all the changes in the signal and records them as entries or exits.
NOTE: I understands both signal trades and combo trades. In other words, if you it goes from 0 (flat) to 1, that starts a trade and a combo trade.
If the signal then goes to 2, then it closes on trade and starts another but keeps the combo trade open and keeps the average puchase price.
So in the end it generates statistics for all the lone trades and all the combo trades separately.
That's really powerful for analysis if you're scaling in or out.
Now the broker interface simply gets a signal of the number of contracts to do long or short.
That TREMENDOUSLY simplifies the broker interfaces.
All it has to do is take the total contracts currently ordered (but not yet filled perhaps) plus the current position size and compare that the the latest signal to adjust the order.
It makes it very simple to handle all the complexities of partial fills, etc that usually trip of automated traders.
At the moment, I don't have any stops registered with the brokers. Most skilled traders dislike having them at the broker for various reasons.
I personally intend to implement a "fail safe" or "emergency" stop parameter which is separately configurable and always entered with every trade.
I mentioned the MoneyManager earlier. I don't have this logic built in, but you can see it's simple to take the stastical current equity of the account and use a percentage or other fancy formula to again alter the signal and increase or decrease contracts before it hits the broker.
In fact this makes it possible to chain and connect any number of strategies together.
This, is the practical scalable way to implement portfolios of strategies.
That would be a major design change, I think, with TradeLink.
However, if it already interfaces with several brokers, maybe someone can leverage that code to add interfaces to TickZoom.
Sincerely,
Wayne
