|Ensign trading language|
Define your strategy in Ensign and trade it with Futures-Trader
A bit of ESPL knowledge is needed to get things going. But in the weeks to come it will be easier, as I will provide for a ESPL script doing most of what is needed to get you going.
First you need to differentiate between the action to be performed and the ordertype.
Eg. Buy Limit. The action would be Buy, the ordertype a Limitorder
How is such a tradingsystem generated?
You know the Studyalerts in Ensign?
Here you see a test for a CCI crossdown below a 21ema. If such a cross happens a star is put on the chart and an internal variable in Ensign (named IT) will, besides other information contain the value "Go short" as this is the Alert message.
In your ESPL program you just add a statement to watch for such Alerts and in case such an Alert happens
call a subroutine, which then specifically looks for such Messages contained in the IT variable
Your main program then looks like this:
if ESPL = 80 then CheckTrade;
And the routine "CheckTrade" called then looks like this:
If pos('Go Short',c)> 0 then
writeln("Go Short order");
If pos('Go Long',c)> 0 then
writeln("Go Long order");
If pos('Cover if Profit',c)> 0 then
writeln("Cover If Profit order");
Which now closes the circle, as the above routine now calls the individual routines, which then send tradeorders to Futures-Trader.
As ordertype you can choose from
Let's discuss the actiontypes first:
Buyorder and Sellorder are selfexplaining. But unfortunatly, for an automated tradingsystem, they are not very well suited. Because, if you are Short at the time a Buysignal is generated, you want to reverse instead of just going flat.
Therefore the ReverseLongorder and ReverseShortorder are the ones used in your Tradingsystems.
ReverseLongorder means, if you are Short go Long and if you are Flat go Long also, but in this case use no Reverseorder but a simple Sellorder.
ReverseShortorder means, if you are Long go Short and if you are Flat go Short also, but in this case use no Reverseorder but a simple Buyorder.
Coverorder is not interested whether you are long or short, it covers your trade. This would be used in the Tradingsystem, when an indicator alerts you that the trend is nearing it's end and it's time to take your profits.
Coverpartialorder needs the number of contracts to cover partial in case you have more contracts on, so you get something in the bank.
CoverifProfit is a Coverorder which is only executed, if you are in the green. Assume you have an early warning indicator, which can warn when a trend isa about to end. But unfortunatly they sometimes signal also during the trade. Instead of just going flat in such a case, this order makes sure, you go flat only if there is a profit in the bank. You might miss a part of the move, but atleast commissions are paid. And there will be better trades down the road as Woodie says.
CancelAllOrder means just that: Cancel all submitted orders
TakeLongTrades, TakeShortTrades. Actually it is a flag introduced because of the Alertsystem in Ensign allowing to test only for two variables.
Let's assume you want to trade only with the trend and then only when your CCI or stochastic indicator indicates a trend continuation.
Your tradesystem issues the orders TakeLongTrades, Enable and TakeShortTrades, Disable
Now Futures-Trader will only take Longtrades until your tradesystem tells Futures-Trader otherwise.
By default Long and Shorttrades are enabled
Testorder just tests the connection to Futures-Trader and confirms everything is working.
Marketorder and Limitorder are clear.
If you don't submit a Limitprice, Futures-Trader will use the current Ask to go Long and the current Bid to go Short
LimitBid, LimitAsk specify which price you want to use. Futures-Trader then uses the current Bid or Askprice
Limitjoin means go Long at the Bid or go Short at the Ask
Stoporder is a Stopmarket order
StopLimitorder is such that, a StopLimitorder.
Stoporders need to submit the Stopprice and Limitprice, in case of the StopLimitorder
The structure of an order in Ensign ESPL procedure looks like this:
The structure of the DLL call is always the same:
If you don't use a part of the order, eg don't provide a price, it's replaced with zero.
You always have to submit the action and (with the exception of the Testorder) also the ordertype.
Even if the Symbol is submitted, it is not tested for in Futures-Trader. At the moment you can trade over the link only the currently as trading symbol selected contract in Futures-Trader. You have to make sure, that your Ensignsymbol, which generates the tradesignals and Futures-Trader match.
Ensign Playback files:
Futures-Trader writes in the Ensign Playback folder Playback files from the IB ticks received during the day.
Sure, these are not real ticks, but they are good enough to test a system with the symbol you are usually trading. And as I'm trading currencies, I want to test my system on currencies not on ES, NQ or YM, which are available for download.
These playback files have not been fully tested yet, as the IB demosystem does not deliver enough tradeticks over the weekend. So there might be changes necessary to get them running. Look at them as a Beta-Version and a feature to come in the nearest future.
Please let me know, if you have ideas to add to the language.
Actually it's no problem to integrate most of the functions of Futures-Trader also in the language, as long as it makes sense for a tradingsystem.
Link to Ensign running on another computer
I added a new small program to your installation, which basically does nothing but connecting your Ensign running on one computer to FT running on another computerof your network and forwarding the Playback-feed and the tradesignals .
You need to update the ESPL.dll file in the Ensign folder with the one found in the Futures-Trader folder after doing the full installation. (It's also part of the zip-file update)
At the moment this program is "just for me". So it has no features like saving it's settings and so on. And it will remain so, unless I hear back, that you are interested in such a connection over your LAN.
enter in the IP field the IPnumber of the computer running FT, then start FT on the other comuter
After startup, you need to manually select File/start server
(It's not yet automatically started.)
Now click Connect and it will turn green
(If you forget to start the server, you get a messagebox telling you, that you forgot to start it.)
Enabling FT for trading EnsignTradesignals is a 2-Step process:
First you need to enable FT to Listen to Ensign commands.
And then you Enable Ensign Order entry.
This Menuitem actually can also be toggled On/Off on the Tower or the Tradedesk.
On the tradedesk you have in addition the choice to enable/disable long or short trades, forcing FT to take only the trendtrade or the countertrend trade signal.
The last menuitem (Reset after each Ensign Signal) is for those (like me) who still like to decide alone, which signal is a valid one and which will be passed for any reason whatsoever.
I use the system in semiautomatic mode.
Meaning: I decide I will take the next signal and then I click the "Take next signal" button on the Tradedesk. Once I'm out, I need to set the button again. This in effect uses my Ensign Chartsignal to finetune my entry. When I get the signal I'm in. But I'm still deciding which signal I take and which I pass.
(Maybe in a year I will think, you idiot, you should have trusted your system and played golf, while the system does what it is designed to do. But today the trust is not there.)
|© Christian Czirnich 2002, contact me at: firstname.lastname@example.org or look for me in Paltalk under my nick: croc1964|