Just curious what data did you use when you tested your system. Was it an uptrend market? Right now the volatility is relatively high with big two way swings, it looks like your system was not desiged to handle this "type" of market. Personally, I would shut her down. Momentum is high, roll out something which captures the current character of the market.
Frosty: I've been reading this thread and its predecessor and perhaps the info is there but I don't remember it. What I think I read - 1) Your are trading with IB using their API 2) Your are using their datafeed to trade 3) You originally backtested using 4 months of purchased data. Here is a possible source of your problem. I don't remember seeing this possibility discussed in your threads. When you are "live" you are getting a sample of trades from IB. The sample is every 200 to 300 milliseconds (3 to 5 samples a second). The samples are not exactly time slices as they always contain the current price at the time of the slice but you do not get all trades. You may miss the high and\or low for the slice. Volume is always correct as the change in volume is sent and the local PC software does the addition or maybe IB sends the total and the local software subtracts to get the change and thus the volume for that slice. (whatever) When you backfill from IB you get all trades, not the time-sliced stuff. This is true for ( I think) 10 days, then it degrades to 1 minute data. IB changes this from time-to-tme. Thus, if you tested on data you got from the backfill function (or an outside vendor) you are not developing and testing on the same data you are trading on. It probably makes little difference on some strategies, but it could affect yours. If what I stated is correct I'd suggest you set up to capture the IB data stream without using the backfill function. Then do your development and backtest. This could delay you a few months as you accumulate the data but it might save you much anguish and a couple of bucks. Jack
JackR, The data used to develop the strategies are 4 years of purchased 1 minute bar data. Also they have been developed using almost a full year of data captured from IB. Will be a full year in August. This data was IB streaming data and not backfill data. To further remove potential errors, the data is stored the way it comes in. For example when data from IB comes in, they may send a bid price update.. then next through the socket may come a last trade price update and so forth.... instead of storing this data aggregated into like minute bars, I save the data in files just like it came in. I have codes such as 1 means bid price update, 2 ask price update, 3 last trade update 4 bid volume update... etc..... I then save it in a file that may look something like this: 1 23.22 1 23.23 3 23.25.... etc... that is now how my file is actually set up, but its that is the simpliest way to explain it. So when I read the data back out of the file, it mimics EXACTLY how the data came in... it essentially completly duplicates the communication from the server. I did this to make it so that there would be no surprises... Creates very big database files for each day.. but its worth it...
Do you not timestamp data changes as they come in and reproduce executions using the stored timestamps?
Yes, I attach timestamps.. I was simplifying the concept of how it works. There were a few things I left out that wasn't needed to explain the concept.
Hey Frost, Out of curiosity... What was your largest historical drawdown? Did you run a monte carlo analysis on your trade results? If so, what is your drawdown in the 85, 90, and 95 percentile? Good luck bud!
either 1) the bot works perfectly and statistically makes money 2) there is a serious logial problem that you have overlooked somewhere which is causing you to loose money I would say keep the bot running and do everything exactly the same for now EXCEPT actually placing the trades for a couple weeks. If the bot works you will miss out on money that you would have made but have peice of mind to proceed. If the bot does not work then you will continue to loose money. It is up to you to decide which is more valuable: (money you might make) or (time)
I run my bot with a strategy that was derived from yours (entering and exiting when there is a large diversion between the short term and long term trends). Today, the bot is up $630. Just as yours, it's trading the ER2 contract, but off the 5 minute chart. Below is the performance chart for today (the "S" label stands for "short", and the "F" label stands for "Flat"). I think there is a validity in the overall theme of your strategy, but the time frames and the exit conditions are very critical. I optimized mine for the maximum profit factor and the lowest drawdown, and as far as I remember, your bot is optimized for the maximum net gain, so this could be a problem. Given a choice between strategy A that made $10,000 with a 20% drawdown and strategy B that made $5,000 with a 5% drawdown, I'd happily pick B. Which one did you pick?
Frost has already tried everything that has been mentioned on this thread previously. He's done everything he needed to do, except to actually learn how to trade. Once he does that, he will be a success. But until then it will be a long Sisyphean (of or relating to an endless and ineffective task) journey of constantly repeating the same cycle(s) over and over again, but never achieving the success he desires. I'd recommend he take a couple of years to learn what he needs about trade setup, entry, exit, position sizing, money management, risk management, etc., and then try programming a trading bot to do it. Good trading all, Jimmy Jam