Monday, November 21, 2005

Been there, done that

From time to time you need to stop and think about what you are doing, what the results are and if the time invested is worth it, considering the results.

If the resumee isn’t: I’m doing 150% of what I reasonably can expect, and the results I get are just unreal, then maybe you should think back, take a look at your trading journal and look for times, where things went good, really good and pleasant. Where you had nice streaks of winning trades, with just one or two losers in between.

Being long enough in this business, I’m sure there are times like this for everyone of us. And now comes the difficult part:

  • What did you do then, what you are no longer doing today.
  • What changed in your trading,
  • in your chart-setup,
  • in the way you managed your trades.

Take a look at your charts from 3, 6 or 12 months ago.

  • What has changed,
  • do they speak to you in a way, your current charts don’t?

There are a lot of additional questions you might ask yourself, but leave out one:

  • Have the markets changed?

Yes, sure they have. Every moment is unique and we might not see the ranges we saw 1 year ago in the contracts we trade. But be honest with yourself: 12 months ago you did not see the ranges you saw 24 months ago. Markets are changing and it’s your job to adapt, to adjust your trading to the now. And actually that’s the next step.

Once you have identified a time, when you did good, not because you had 1 extraordinary good trade, but when you where one with the market and you have identified things, which worked then, but which you abandoned over time, then you have to take these things and adapt them for today’s markets.

Don’t discard everything you do today. You had valid reasons to change the things you did then to the state you are in now. There was for sure a reason, why you left something aside, which worked then. Still, say you look at an old chartsetup and you instantly feel in tune with it. Don’t take it 1:1 and replace your current charts. Identify, what it is, what makes them speak to you and integrate it in your current charts, as if you would add a new feature, a new study to them.

It’s like someone you respect as a trader told you: Hey Chris, did you ever try this or that study, that setting? You never did, so you take your current chart and add the study. You eventually remove something instead, as it is suddenly redundant and you come up with a new chart-setup.

Often it changes nothing, the new study is usually no more or less valid, than the one you currently use instead.But sometimes there is something new to it, something, which instantly speaks to you. Chances are, that your own voice from the past has something important to say to you today. Something which can instantly improve your trading, if you choose to listen to this voice.

Sunday, November 13, 2005

Oh Shit...maybe I really need another job!

Having a losing day is part of the job description and should be compensated by your winning days.

Having a green day is fine and will let you feel good. But my new Add-On to the Backtest Module gave me the answer I maybe knew in my heart, if only I  looked deep enough, something I avoided sofar.

I have a good discretionary system, my entries are fine and I have a positive edge.

BUT, but I screw up totally, when it comes to trade-management. Something about 300$ for the day is nothing big, but green is green I always thought. But the same entries, no additional trades, no trade not taken, just the same trades managed differently could have given me + 2,000$. And these results are not extremly optimized. Optimizing can make the results look even better, if I accept the price to accept bigger losses, if the trades go against me.

Globetrader_142

In the Trading frame you see 2 new buttons S and L (Short and Long), which will let you open a trade manually. Once in the trade a click on the then visible Cover button will cover the trade.

To monitor your trading, you select the TWS Real/Playback datafeed, you select Tradesignals as tradesystem and then enter the trade in the backtest module at the same time as you take the trade in real.

For registered users this is done automatically once you select the new “Monitor real trades” Tradesystem. (Start FT and click ?/about to request a trial) A trade is taken in the Backtest module, the moment you open a real/demo trade in the Tower or the Tradedesk for the symbol selected in the Backtest module. The trade is covered (if still open), once you reverse the trade direction in real trading.

At the end of the day, click Stop and switch to the Tickpool datafeed using the Tradesignals Tradesystem. This way you can easily replay the day using different parameter. You might also save the Tickpool data for later use.

Globetrader_144

Of course this works as well over the weekend, when you decide to invest some time in trading a playback from Ensign or ESignal. I have added ticktime information to the Playback datafeed, so FT is now able to display the Playbacktime instead of the current Realtime. (You will need to update the FTlink.spt file in Ensign with the new one provided in the current release)

Globetrader_136

It might be just me, but I found myself adjusting the Start and Stoptimes quite often, so I added 3 buttons to preset different times.

Globetrader_140

Set the time, right click a button to save it and left click on it, to retrieve the information later.

If you want to share your Backtest settings, there is now a faster way than sending pictures: Right of the Backtest-Strategy there is an I(mport), E(xport) button, which will Import an existing Strategy or Export it to be send by mail to someone else. Globetrader_143

The Backtest-Strategy files are saved in the \program files\Futures-trader\Backtest subfolder. Be aware, that Outlook will not allow you to receive a Registry file. So you will have to compress them first or use a different extension, if you mail them to someone using Outlook.

Saturday, November 05, 2005

Round number trading

Don’t think, that profitable systems can’t be designed. As I said, they just no longer jump into your lap, but they are there for you to exploit. If you can trade them is another question, but to answer this question, I have expanded the results section, so you get more statistics, which will tell you whether the system you found, might be something for you or not.

Globetrader_113

As you can see, I redesigned the Backtest module (again). The reason was, that I wanted to know, whether Round Number trades work or not. Space was missing and things became a bit overcrowded.

The Round Number module takes a trade, when a round number is hit. What is a round number? That’s for you to decide!

On Russel2000 eg. 640, 645, 650. That’s the basis you would put in the Basis field.
The Delta tells the system, when you want to take the trade. EG: a delta of 5 (5 ticks) means, generate a Tradesignal Long, if prices come down to 640.50, or generate a Tradesignal Short, if prices go up to 639.50.

The Inc or Increment field is used to calculate the next Round Number. Eg a setting of 50 (ticks) means, take the basis and add /substract 50 ticks, to get the next Round number. With a basis of 640, the next long trade will be taken at 635, the next short trade at 645 (assuming a Delta of 0)

The Move field is actually some kind of chop filter. It makes sure, that a Long or Shortsignal is not generated multiple times, just because prices move very near to a triggerprice. A setting of 10 ticks is usually advisable.

Have fun playing with the new module.

Answering an e-Mail

I got a few e-Mails asking similiar questions, so I thought I post my answers here

  • Can I use FT in simulation mode while trading real using another frontend. 
Yes you can. You just have to make sure, that you have IB API 8.61 (the current IB API release version) installed on your computer
 
  • Does that impair the use of the other frontend? 
    In no way the sim mode of FT should influence my real trading.
    Maybe I should trade anothert symbol in FT?
No. Sim trading in FT will send no orders to your IB TWS 
 
  • As datafeed I use Esignal. As I understand the backtest module can use playbackfiles of esignal.  Does it works this way:
    I playback the esignal tickfiles and I see a zlr signal long (woodies cci) and I take a long in FT with a certain strategy.At the end the file is stored in FT with the entering trade signals.  
No, not at the moment.
 
Right now there are 2 ways to get tradesignals from ESignal to FT
 
1. Manual
You write an ESignal Playbackfile in ESignal and save it on your harddisk.
Now you take your chart, go over the chart and make a note at what time your ZLR's occurred.
You open the ESignal Playback file with Notepad (The files are stored in the \program files\ESignal\Downloads folder)
You goto the Tick at which you got your Signal and add a Sell or Buy at the end of the line
 
Here is an excerpt of an ESignal Playbackfile. Say a Sell signal occurred at 000200, which is 2min after midnight EST.
You add Sell at the end of the line T,051005,000202,1.1965,1, 
 
; Symbol=6E #F
; Date=10/05/05-10/18/05
T,051005,000013,1.1965,1,   
T,051005,000122,1.1966,1,   
T,051005,000132,1.1965,1,   
T,051005,000132,1.1965,1,   
T,051005,000135,1.1965,1,   
T,051005,000135,1.1965,1,   
T,051005,000143,1.1965,3,   
T,051005,000143,1.1965,3,   
T,051005,000152,1.1965,2,  
T,051005,000202,1.1965,1, Sell  
T,051005,000203,1.1965,1,   
T,051005,000256,1.1966,2,   
T,051005,000256,1.1966,1,   
T,051005,000300,1.1965,3,   
T,051005,000407,1.1966,1,   
T,051005,000431,1.1966,1,   
T,051005,000446,1.1967,1,   

Do that for every signal you got in your charts and when done, save the file.
Now you can Backtest this file as often as you like in FT without using ESignal or having it open.
Assuming you have something between 5 and 20 signals a day, I think the manual method is practicable and does not warrant the development of an automatic strategy
 
2. Automatic
ESignal and FT can be linked, so that a Playback running in ESignal can be traded in FT using the “CustomFT.efs” study supplied with every copy of FT and to be found in the \program files\futures-trader folder
 
The same datalink can also transmit Tradesignals.
For this to work, you will need to add code to your charts, so automatic tradesignals are generated and display on the chart eg. in the form of arrows.
Then you would have to "enhance" the custom study "SendPricedataFT.efs", so the tradesignal is transmitted at the time you get it on the chart.
 
Here is a copy of the SendPricedataFT study
 
/********************************* 
www.futures-trader.net (c) Copyright 2004
*********************************/
var myDLL = new DLL("ESignalToFT.DLL");
 
function preMain() {
    setPriceStudy(true);
    setStudyTitle("FT-Dataconnection");
    setShowCursorLabel(false);
    myDLL.addFunction("ConnectFT", DLL.DOUBLE, DLL.STDCALL, "ConnectToFT", DLL.STRING, DLL.INT, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE);
}
 
var nNull = 0;
var sdatastring= "";
 
function main() { 
    sdatastring="PD: ";
    var FT = myDLL.call( "ConnectFT", sdatastring, 1, nNull,nNull,nNull,nNull,nNull,nNull,nNull );
    return;
}
 
What this study originally does is sending Data to FT to be displayed in the Tower (open the study in the ESignal efs-Editor to see my comments, how you can do this)
 
But if you send a string like this to FT:
 
sdatastring="PD: AB #F: Alert: BUY"
or
sdatastring="PD: AB #F: Alert: SELL"
 
then FT will interpret this as Tradesignal to be taken in the currently running playback and at the same time the tradesignal will be executed in the backtest module.
 
Unfortunatly I can't give you an ESignal template doing this, as ESignal is not my main charting program (I just use the feed).
 
I could only help you setting up this automatic backtesting of your tradesignals in Ensign.
 
3. Monitor FT trades
I will consider your proposal to monitor trades taken in FT during a playback in the Backtest module and look to implement it in one of the next versions of FT.
 
  • It will take some time before I have mastered all the possibilities of FT.
You might join the #FuturesTrader group in IRC: Othernet, where I will be able to give you immediate answers, when I'm online (Usually during european trading hours and the US morning until noon)

Wednesday, November 02, 2005

Dreamtime is over and Reality is setting in

Important things first: IB API 8.61 has been released, so FuturesTrader from now on is available for IB API 8.61 only. Be aware that the former IB API 8.3 and IB API 8.6 are incompatible, so you need to update the IB API, if you want to use the new FuturesTrader version

Globetrader_104

The dreamresults the Backtest module gave me are behind me. They were caused by statistical and design errors, which have been fixed.
And now reality sets in: Designing a profitable tradesystem isn’t an easy task, actually it is very difficult.

But what did I expect? If it were easy, everyone would use it and make money trading.

So the first step was saying goodbye to the tradesystem implemented in the backtest module and running Playbacks in Ensign with my Tradesignals transmitted to the Backtest module.
That means waiting for about 15–30min for a Playback to complete, even if it is running at maximum speed. 
I’m not the super tradesystem designer (or I would have have no need for this Backtest module at all), you could describe me more as the Try and Error designer. I change one parameter at a time and check, if the results I get are better or worse than what I had before. But if every backtest run takes about 20min, I might find a working tradesystem in one or two years, but not within hours or days. Yes I’m a bit impatient.

So I added the Tickpool datafeed to the Backtest module.

Globetrader_100

If you run a Backtest, FT will save every tick and tradesignal received in a tickpool. Once your Test has finished, you no longer need to run a Playback in Ensign or ESignal to repeat the Test.

Instead you switch to the Tickpool datafeed, change the parameters and run the Test again and again and again, until you have a working model for the day you backtested.

Globetrader_107

The Tickpool data can be Saved and loaded back later, so you can use the dataset again. The Tickpool can also be cleared manually, as you might decide to build Tickpools going over more than 1 day. You see the number of ticks in the Tickpool in the new Statusline at the bottom of the backtest module.

Globetrader_103

Tickpool datafiles are nothing but standard ESignal Playbackfiles, which you get when you create an ESignal Playbackfile. They just have an added Buy, Sell or Cover Statement at the end of the Dataline, where you want a Tradesignal to be created.

That’s how a ESignal Playbackfile looks in the Notepad-Editor:
Globetrader_101

and here is the corresponding Tickpoolfile with a Tradesignal:
Globetrader_102

As you can see, it is simple to add the tradesignals manually, if you have no way of creating them automatically or if in fact you want to backtest your own trading and see, how trading with different strategies might have given you better or worse results as you really got.

The format is

T for Tick, Date in YYMMDD format, Time in HHMMSS format, Price, Volume (unused), Tradesignal (if any) as Buy, Sell or Cover

FT will by default save Backtest Tickpool files and Excel files in the new ..\Futures-Trader\Backtest subfolder

BTW: Don’t complain that, when running Backtests FuturesTrader now uses a lot more memory than previous versions. You can’t have it all. If you backtest a few months of tickdata, these take memory to store internally.

Globetrader_105

So if you need to watch your memory clear the tickpool from time to time by clicking the Clear Button.

. Globetrader_106

Or consider adding a new GB Ram Module. 2 – 4GB Ram on your trading computer is not too much.