TDesk Manual
TDesk Manual
Version 7.3
WHAT IS TDESK? 5
Introduction 5
What TDesk can do for you 5
Key features of TDesk 7 6
Table filtering and sorting 6
Trade instruments 7
New price and cost columns 7
Enhanced columns 8
Windows and tooltips 8
Background and heartbeat 9
Alerts and screenshots 9
SPECIAL FUNCTIONS 52
TDesk’s trade advice 52
General description 52
Caveats 54
Introduction
First and foremost I want to thank Steve Hopwood and all the fantastic members in
his Forex forum for all their work over the years. Their knowledge and engagement
made me a much better trader. Now I give something back in exchange.
TDesk was developed to help in answering the three following questions: “How are my
trades performing?“, “Where is the market heading?” and “What positions should I
take now?”. Over time, it evolved from a simple dashboard enhancement for some of
Steve’s EAs – answering only the first question - to a mighty standalone dashboard
and signal computing machine answering all three. And then it took the last step to a
fully automatic trading machine and expert advisor building kit.
If you are interested in the development history and want to study the detailed feature
discussions, you might read the TDesk Release Notes and TDesk Discussion Thread.
If you want to stay up to date, subscribe to the TDesk forum by following the steps
shown at How to subscribe to the TDesk forum.
No matter which type of trader you are, be it a “naked” one, an “indicator orchestra
conductor” or an “EA tamer”, TDesk can be your ultimate dashboard showing you a
wealth of information about your trading positions as well as the current market
conditions and influencing factors at a glance.
TDesk can also be your chart management tool that lets you open and close charts
and apply your favourite templates with a few mouse clicks. No more clicking through
all your charts and applying templates. And no more errors when doing so.
TDesk can provide you with a perfect overview for indicator-based trading. It can
collect and show you all the signals from a whole universe of indicators for all your
traded instruments in one table. As soon as you see an entry or exit setup, you can
easily open the respective chart and manage your positions.
Are you tired of permanently evaluating all your indicator signals to come to a trading
decision? TDesk has a built-in logic processor and can do the heavy lifting for you.
You can define the logic in a few simple steps and from then on TDesk will permanently
monitor the signals and provide you with a resulting decision for each traded
instrument – called the “Super Signal”. TDesk can notify you in many different ways
when you need to manage your positions due to Super Signal changes.
But even this last step of manual trade management is now obsolete. Like a radio
station, TDesk broadcasts all its Super Signals for free use. Based on this, Steve has
created an absolutely fantastic “trading drone” for TDesk: Desky is a full-featured
trade management expert with all the bells and whistles we are used from Steve’s
EAs. Desky reacts solely to TDesk’s Super Signals and does all the trade management
faster and better than any of us could do manually.
With all these puzzle pieces in place, the whole project has finally evolved into
something I had always dreamed of: A full-featured expert advisor building kit.
Never has it been easier to pick a set of promising indicators, combine them by some
entry and exit logic, define appropriate trade management rules and instantly forward-
test this new expert in demo trading.
The more traders will make use of this huge potential and publish their findings, the
more profitable trading systems we will have over time. One very profitable is
already available with “Slopey Peaky Desk”, the TDesk adaption of Steve’s famous
“Slopey Peaky Bob” expert advisor. Read on to find out more.
Here are the key features of TDesk 7 just to water your mouth.
TDesk can filter the data shown in the dashboard by different views. Examples for such
views are “All open trades”, “All closed trades”, “All instruments with active signals”
and so forth. Now there are two new views: “New trades” shows all trades recently
opened and “Money Taken Off Table” shows all recently closed trades with their overall
profit/loss. In addition to the cycle-through selection, there is now also an option to
select the view from a pop-up window with much more details.
Some data in the table can now be filtered by two user-definable time frames (or
none). This applies to recently opened trades, closed trades, cash and pips profit/loss
and cost columns. The filter can easily be switched by clicking a button and allows
lightning-fast checking (for instance) your daily, weekly and overall performance.
The dashboard is now sortable by any column. This sorting is dynamic and updates
every refresh cycle. It can be frozen by a click. The sophisticated sort algorithm groups
and sorts data for any column meaningful by considering up to 3 additional columns.
Trade instruments
All your trade instruments are shown as rows in the dashboard. Entering the list of
instruments is now easier than ever before by automatic combination of currencies
and prefixes/suffixes.
The currencies in trade pairs can be coloured according to their overall strength
compared to a basket of all the other currencies. This strength can be calculated from
incoming signals or the price gain within the time frame configured for the price
columns in the dashboard.
Clicking a currency of a trade pair filters the dashboard by this currency. The list of
currencies is also filtered by the view selected for the dashboard. The "Open all charts"
button at the bottom now only opens the charts for the instruments that are actually
shown in the dashboard.
Metals, commodities, CFDs, futures and the like are now fully supported. Forex-specific
functions like currency strength colouring and so on are disabled for these instruments.
There are new price columns in the dashboard. The main column shows the actual
price quote (bid) for each symbol. The price quotes can get aligned in different ways
and coloured by price gain within a configurable time frame. Detail columns show price
gain in pips or percent and ATR in pips or percent. ATR can be coloured according to
increase/decrease to show market expansion/contraction.
There are also new cost columns in the dashboard. The main column shows the total
cost of this symbol’s trades. Detail columns show paid commission, paid swap and
swap rates for this symbol. All data can be filtered by the switchable time frames.
Enhanced columns
TDesk (optionally) scrapes the upcoming events from the FF calendar, sorts them by
importance and warns about the nearest and most important one for each symbol.
The sorting and prioritizing algorithm got improved to nearly always show the most
important news first. News offsets and contents can now be clicked to show all known
news details.
If you open the "News content" column, there is a link to open a Forex calendar in
your standard browser. You can now select your preferred calendar (ForexFactory or
FXStreet) via the input PreferredCalendar.
All time-related columns (signal ages, news offsets) can now be shown compact or
detailed. Compact columns are displayed with only one time unit (days, hours, minutes
or seconds), otherwise two time units are shown (for example hours and minutes).
All pips/points-based columns (except spreads) can now be shown with a precision of
pips or points (pips with one additional digit).
TDesk shows tooltips when hovering over certain items. This system got completed
and each clickable item now has it's own explanatory tooltip for better user guidance.
The menu line above the dashboard offers links to some windows with important
information. The "Account" window information got enhanced and the information in
some of the other windows got amended.
Signals that have special attributes like being provided by EAX-Pins or contained in a
list of veto/exit signals have headers coloured as clickable in the detailed signal list and
a button "View" in the footer. Click on any of these to see explanations for the
respective signal's attributes.
All Super/Multi/Solo/Veto signals can tell you how they got computed. Just click one
of them to see the details. Understand those details, refine your signal settings and
better master TDesk.
Background and heartbeat
In order to produce a very clean and sleek look, TDesk now takes total control over its
own chart’s colors and settings. If you have additional thingies on the TDesk chart and
experience display problems, you can disable this feature.
A little blinking heartbeat label in the top right screen corner indicates that TDesk is
still running. This label got improved and now shows some additional information:
TDesk calculation time (ms) with warning colors on sudden increase and average ticks
per second per instrument (tps) with warning colors on sudden increase.
TDesk can alert you in many different ways to changed signals. It can even draw
signals and price marks on the trade charts. It now lets you control the level of
annoyance in detail. You can disable alerts for FLAT and/or EXIT signals and receive
only directional signals. Alerts can be delayed to receive only those that have been
stable for a configurable time span. This avoids alerts when signals flip-flop.
TDesk can now save screenshots of the dashboard and/or the respective trade chart
each time a Super Signal changes. The trade chart screenshots are highly configurable.
Trade charts don’t have to be open for this function to work.
TDESK’S SIGNAL PROCESSING
This chapter will be demanding. The signal processing part of TDesk is complex and
things can get somewhat theoretical. Many examples will hopefully help.
If you intend to use TDesk solely as a dashboard you might skip this chapter. But be
aware that parts of the following chapters refer to this one and you might have
problems to understand some details. For example, signal-related inputs can only be
understood in context with this chapter. Hence you better read it anyway.
Overview
Here is a flow chart that gives us some structure for discussing the signal processing
details of TDesk:
On the left side, outside of TDesk, signals get generated by different sources and are
sent to TDesk. The sources are sending signals directly or indirectly via Universal
Drones. For TDesk, these are all equal incoming signals.
Within TDesk, there first is a stage of signal modification. The incoming signals get
manipulated by excluding/filtering, inverting or nullifying them. You will learn what
that means in detail.
Second stage within TDesk is the signal aggregation one. All the incoming and
eventually modified signals get combined by specific rules to build four intermediate
signals: The Solo Signal and Multi Signal representing the trading direction, the Veto
Signal blocking further entries and the Exit Signal that forces closing of all positions.
In the last step within TDesk, the four intermediate signals get aggregated again into
one final signal, the Super Signal. In this stage, special market conditions also come
into play and can influence the Super Signal: spreads and news.
The Super Signal is the final result of TDesk’s processing and made available for further
use outside of TDesk. It is TDesk’s final recommendation what to do with an instrument
and is broadcasted as by a radio station. It can have five states: NONE, FLAT, LONG,
SHORT, EXIT.
On the right side, outside of TDesk, are the receivers of TDesk’s Super Signal. They
can be trading drones (experts) like Steve’s Desky or other thingies like my
experimental simulation programs TDesk Viewer and TDesk Player.
We will now work through the single parts in the sequence of processing.
Signal sources
Signal sources are the point of origin for all trading decisions. By nature they all are
indicators contributing their unique view to the overall picture. Each of them can have
a state of NONE, FLAT, LONG or SHORT and tells TDesk what it would recommend to
do with respect to each of the trading instruments. Out of this noise of contradicting
voices, TDesk will forge a single, decisive and clear tone.
Let us have a look at the different groups of possible signal sources: Indicator drones,
EAX PINs and regular indicators.
Indicator Drones
Indicator Drones are specialized signal sources that are genuinely compatible to TDesk.
This means they can send signals to TDesk fully on their own. There are two different
types of them: TDesk-compatible indicators and TDesk-compatible experts.
TDesk-compatible indicators
This group contains all indicators that are based on regular MT4 indicators and have
been made compatible to TDesk by the community. They are a result of TDesk’s early
days and something like a legacy. You can find a whole world of compatible indicators
at TDesk Drone Indicators Collection and TDesk User Indicators Playground.
Many, if not all of them have a big drawback: They are single-symbol indicators and
must be running on an open trading chart in order to permanently send signals to
TDesk. Which means you must have umpteen charts open if you want TDesk to trade
more than a few pairs. I can’t really recommend to base new trading systems on them
as long as they are not multi-symbol and chart-independent ones.
This group will probably get a fresh push in the near future. There is a “TDesk indicator
building framework” under development that will allow very easily implementation of
any indicator logic as a multi-symbol, chart-independent indicator drone. Stay tuned.
TDesk-compatible experts
Experts can also work as indicator drones. Every expert uses internal or external
indicators to create its own trade signals. By using a provided interface library, every
expert can easily send its internal signals to TDesk. From this moment, the expert does
have a fully-fledged TDesk dashboard to supervise its operation. Instructions for using
the interface library can be found in the last chapter of this manual.
Examples for TDesk-compatible experts are Steve’s recent creations which can be
found at The Slopey Peaky Bob family and Ghostrider.
EAX Pins
EAX PINs are very special indicators with a standardized signalling interface that can
also send signals to TDesk. They were developed before and outside of TDesk and are
fully explained in two threads at the forexfactory.com forum. Just do a search there
for “dashboard eax” and “jagzfx free trading tools”.
TDesk can use up to 8 of these EAX PINs parallel. There are a lot of EAX PINS out
there to take advantage of, and one benefit is that they tend to be multi-pair so we
don't need to have umpteen charts open to get all our signals. This allows TDesk to
profit from all that work already done.
As a big drawback EAX PINs don't provide any information about the indicator or time
frame (they are just named Pin1, Pin2, Pin3). There is a solution to this, but to be
honest, it is a bit complicated. See the respective section for the TDesk inputs.
To be honest, with all the potential we have at hand now inside the TDesk world, I
can’t really recommend to base new trading systems on EAX-PINs.
Regular indicators
To date, this is our most interesting and relevant group of signal sources – plain regular
MT4 indicators. The built-in ones as well as the myriads of downloadable, free and
sometimes very inventive indicators floating around. Most of them can become multi-
symbol, multi-timeframe, chart-independent signal sources by using one of the two
interface programs (universal drones) described in the next section.
Universal drones
Universal Drones are "Swiss knifes" acting as interfaces between TDesk and
conventional indicators. They don't draw anything in any chart, but show some status
lines to let you know how they understood your configuration inputs. They can read
the output of other indicators and then send signals to TDesk. They eliminate the need
to code a drone for each indicator you want to use.
There are two different main types of indicators. The one are indicators that use
buffers to draw lines or histograms, the other are indicators that use buffers to draw
solitary symbols as entry and exit signals. Each of these types requires a different
universal drone explained below. Detailed instructions would blow up this manual, for
the time being they can be found at TDesk Universal Drones and TDesk Universal
Drones - Usage Lessons.
Universal Buffers Drone
Universal Buffers Drone (UBD) is the interface to nearly all indicators that use buffers
to draw lines or histograms in the main chart or a subchart. I estimate that 90 percent
of all indicators belong to that group. Nearly all built-in indicators like MACD,
Stochastics, Moving Averages and most custom indicators like SuperSlope belong to
this group.
Universal Signals Drone (USD) is the interface to nearly all indicators that use buffers
to draw solitary symbols as entry and exit signals in the main chart or a subchart. The
Holy Grail Indicator (HGI) is an example for this type of indicators.
Signal modification
Now all those incoming signals reaching TDesk need to be processed. The first signal
processing stage within TDesk is the signal modification stage. Here signals get
modified by excluding, inverting or nullifying them. See what that means.
Excluding
Excluding a signal is somewhat trivial. You have learned that later on all signals will be
aggregated into higher signals. To exclude a signal just means telling TDesk to ignore
this signal when building the aggregated Solo and Multi Signals. It is done by adding
the signal to the lists ExcludeFromSoloSignals and/or ExcludeFromMultiSignals.
This feature is primarily needed when it comes to signals with special purpose, for
example signals that veto (block) trading or force to exit positions. Usually you don’t
want such special signals to be included in the calculation of the market direction. But
there can also be signals you want only use in the Solo or Multi Signal calculation. You
would then exclude them from the other calculation.
Example
Let’s assume we have an indicator TREND for the market direction and an
indicator RISK which we want to use for other purposes than finding the trading
direction. We would base our Solo and Multi Signals (which represent the trading
direction) on TREND. We would exclude RISK and use it as a Veto signal, which
is explained later.
Inverting
Incoming signals can get inverted. This means their direction will be reversed. LONG
becomes SHORT, SHORT becomes LONG, FLAT and NONE stay as they are. It is done
by adding the signals to the list InvertIncomingSignals.
This feature is useful if you have signals that are somehow upside down or if you want
signals to be contrary to the trend, like for retraces.
Example
Let’s assume we have an indicator TREND for the long-term market trend and
an indicator TRIG for short-term market movements. We want to trade in the
direction of TREND (LONG or SHORT) only when there is a retracement and
TRIG points in the opposite direction of TREND. We would invert TRIG and base
the calculation of our Solo and Multi Signals (which represent the trading
direction) on an agreement of TREND and the inverted TRIG.
Nullifying
Incoming directional signals can get nullified. This means they will set to NONE if
directional. LONG becomes NONE, SHORT becomes NONE, FLAT and NONE stay as
they are. They can have only two final states: NONE or FLAT. It is done by adding the
signals to the list NullifyDirectionalSignals.
This feature is primarily needed to define "Risk On, Risk Off" signals that block trading
or exit all positions.
Example
Let’s assume we have an indicator TREND for the long-term market trend and
an indicator RISK indicating untradeable conditions by a FLAT signal. We want
to trade in the direction of TREND (LONG or SHORT) only when RISK is not flat,
no matter which direction it signals. We would nullify RISK and use it as a Veto
signal, which is explained later.
Signal aggregation
In the next stage of signal processing TDesk aggregates all incoming and eventually
modified signals by specific rules into four intermediate signals for each pair: The Solo
Signal and Multi Signal representing the trading direction, the Veto Signal blocking
further entries and the Exit Signal that forces closing of all positions.
All signals are memorized over the re-initialization of TDesk (by changing timeframes
or restarting the terminal). This is important as you will see later.
Solo Signal
The calculation of the Solo Signal is very simple. For each trading instrument, each
incoming LONG signal is counted as +1, each SHORT signal as -1 and each FLAT signal
as 0. NONE signals are ignored. The sum is then divided by the number of counted
signals. This gives us a signal percentage between -100 and +100.
Example
Let's assume we have 7 incoming signals. We then could have for instance the
following constellations (beneath many others):
The signal goes from FLAT to LONG once it reaches the entry threshold. It goes back
to FLAT only when the exit threshold is undercut, not when it falls below the entry
threshold. This means there is a range between the entry and exit thresholds where
the signal can still be LONG, although it has fallen below the entry threshold after
having reached it before. TDesk’s signals memory is important here, as otherwise
signals in this zone would be reset on a TDesk re-initialization.
Example
If you have set the entry threshold to 80% and the exit threshold to 70%, the
first two constellations of the above example would have entered LONG. But
only the last two constellations would give you an exit signal if the entry signal
had been ever reached before.
The SHORT side works identical, just with negative numbers. The signal goes from
FLAT to SHORT once it reaches the negative equivalent of the entry threshold. Think
of it as a mirror to the other side. There are no separate inputs for the SHORT side,
the system is always symmetrical.
Exit thresholds can well be negative. For example, if you want a Solo Signal that is
always LONG or SHORT and never FLAT, set the exit threshold to -100. This will never
be reached and the system will swing between the two entry thresholds on the LONG
and SHORT side.
Multi Signal
It is calculated very similar to the Solo Signal, but takes in account the overall strength
of both currencies against all other currencies. While the Solo Signal is computed on
basis of the signals for one symbol only, there is so much more information in the
matrix. Multi Signal connects the dots with a much longer rope, considering all signals
of all pairs containing one of the two currencies.
Example
Let’s say we have 10 signals for 28 pairs, all together 280 signals, and are
interested in GBPJPY. The Solo Signal is calculated from the 10 signals for
GBPJPY. The Multi Signal is calculated from all 130 signals of all pairs having
GBP and/or JPY as one of their antagonists. This way we take in account how
the two currencies are behaving compared to all other currencies.
Everything else works identical as for Solo Signals. Just be aware that Multi Signals are
not as volatile and extreme as Solo Signals. Due to the big number of signals involved
they are more damped and need lower thresholds than the Solo Signals.
Veto Signal
You can tell TDesk to treat one or more incoming signals as Veto Signals. Veto Signals
are superior to the rest as they must agree for trading decisions to be valid. TDesk will
never trade against a Veto Signal.
To define one or even a combination of several signals as Veto Signals, you have to
add them to one or more of the following TDesk input lists. For each list there is an
additional logic field to select how the signals of that list get connected (if you have
more than one).
VetoOnDisagreeSignals and VetoOnDisagreeLogic
This list and logic input let you define which signals will veto the Super Signal if they
disagree. This means that they will force the Super Signal to be FLAT if they are FLAT
or opposite to the Super Signal. Add your signals to the list as described in the TDesk
input chapter. You can also select the logic to connect the signals for a valid veto,
should you have more than one. Possible inputs are "any" (at least one of the signals
must disagree for a valid veto), "most" (more than half of the signals must disagree
for a valid veto) and "all" (all of the signals must disagree for a valid veto).
Example
Let’s assume we have a Super Signal being LONG and two signals in this list,
one being LONG and one being FLAT. The logic is set to “any”. The veto would
be valid, as the second signal disagrees with the Super Signal - it is FLAT instead
of LONG. The Super Signal would now be forced to be FLAT. Would the logic be
set to “all” or “most”, the veto would not be valid as only one signal disagrees
and the Super Signal would be allowed to stay LONG.
Usually signals that are added to one of the veto signals lists should also be added to
the ExcludeFromSoloSignals and ExcludeFromMultiSignals lists as you don’t
want them to be part of the trading direction calculation.
Exit Signal
Exit Signals are another special group of signals. They can force the trading drone to
exit from all positions if the signals disagree or are opposite to the net lot size of all
open positions. If the net lot size is zero because you have no open positions or are
perfectly hedged, no signal will be generated.
To define one or even a combination of several signals as Exit Signals, you have to
add them to one or more of the following TDesk input lists. For each list there is an
additional logic field to select how the signals of that list get connected (if you have
more than one).
ForceExitOnDisagreeSignals and ForceExitOnDisagreeLogic
This list and logic input let you define which signals will force the trading drone to exit
all positions if they disagree with the net lot size of all open positions. This means that
they will force the Super Signal to be EXIT if they are FLAT or opposite to the net lot
size. Add your signals to the list as described in the TDesk input chapter. You can also
select the logic to connect the signals for a valid exit signal, should you have more
than one. Possible inputs are "any" (at least one of the signals must disagree for a
valid signal), "most" (more than half of the signals must disagree for a valid signal)
and "all" (all of the signals must disagree for a valid signal).
Example
Let’s assume we have a net lot size of 1 lot SELL and two signals in this list, one
being SHORT and one being FLAT. The logic is set to “any”. The exit signal
would be valid, as the second signal disagrees with the open positions - it is
FLAT instead of SHORT. The Super Signal would now be forced to be EXIT and
the trading drone should immediately exit all positions. Would the logic be set
to “all” or “most”, the exit signal would not be valid as only one signal disagrees
and the Super Signal would stay unchanged.
Usually signals that are added to one of the exit signals lists should also be added to
the ExcludeFromSoloSignals and ExcludeFromMultiSignals lists as you don’t
want them to be part of the trading direction calculation.
Another thing is very important here: The Super Signal can only be forced to EXIT
when it is FLAT before the change. A LONG or SHORT Super Signal can’t be forced to
become an EXIT signal because this will almost always result in a flip-flop situation.
Therefor you usually should add all signals from these lists also to the corresponding
VetoOnDisagreeSignals or VetoOnOppositeSignals list and make sure that the
logic settings are the same. There might be exceptions.
The last stage of signal processing is the generation of the final Super Signal. This is
built from the Solo Signal and Multi Signal representing the trading direction, the Veto
Signal which may block directional signals and the Exit Signal that might forces closing
of all positions. Two market factors (spreads and news) also come into play.
The Super Signal is not allowed to become directional or even change its state at all
when it is blocked by unusual spread or important news. You can configure the
blocking mechanisms in the spread and news sections of the inputs. In case of such a
blockade, the Super Signal simply stays unchanged. It will resume calculation as soon
as the blocking condition has vanished.
The trading direction is calculated from the Solo and Multi Signal. The
SuperSignalsEntryOperator and SuperSignalsExitOperator allow to specify how
this should be done – by using only one or logically connecting both. Both inputs can
be MultiSignalsOnly, SoloSignalsOnly, MultiANDSoloSignals or MultiORSoloSignals. As
a remark, the term ExitOperator is historic legacy and a bit confusing - it actually
means “Back to FLAT”.
Setting an input to MultiSignalsOnly or SoloSignalsOnly will force the Super Signal to
strictly follow the selected signal and ignore the other. The Super Signal and the
selected signal will be identical.
Setting an input to MultiORSoloSignals means that one of the signals must reach its
entry threshold for a directional signal or one of them must be equal or less than its
exit threshold (after both had been above their entry threshold) for an exit signal.
You can mix all the operators to your heart's content as long as it makes any sense.
But never try to set both operators to MultiORSoloSignals. You would never get entry
signals as the entry condition is equivalent to the exit condition. If you don't understand
this, think about it and probably draw it on paper.
TDesk now knows the trading direction, but it has to respect Veto and Exit Signals
before it can do anything. This part is trivial as you will see.
Veto Signal
If TDesk detects a valid Veto Signal, it changes the Super Signal to FLAT, no matter
what it has been before.
Exit Signal
If TDesk detects a valid Exit Signal and the Super Signal is FLAT, it changes the Super
Signal to EXIT.
Super Signal
TDesk now broadcasts the Super Signal as the final result of processing all the
incoming data. If you have come to this point and read all the stuff in this chapter,
congratulations. You now understand the complexity of this TDesk part and probably
see its potential. Use it.
Signal receivers
Now, that TDesk has done its signal processing magic, it broadcasts its Super Signal
to the signal receivers. They are described below.
Desky
Steve has created an absolutely fantastic “trading drone” for TDesk: Desky is a full-
featured trade management expert with all the bells and whistles we are used from
Steve’s EAs. Desky reacts solely to TDesk’s Super Signals and does all the trade
management faster and better than any of us could do manually.
Maybe there will be other trading drones than Desky with other features in the future.
At the moment there are none.
TDesk Viewer and TDesk Player are experimental simulation tools using data TDesk
provides. For the time being, they are available only to traders having contributed
significantly to the TDesk world.
HOW TO USE TDESK
You have made it all the way down to here and know the theoretical aspects of TDesk.
Congratulations! Now it is time to dive into the practical lessons. In this chapter you
will download and install TDesk and get familiar with it.
Getting started
Now we create a working installation of TDesk. Stop MT4, then copy the following files
to the correct folders. Overwrite old versions. Finally restart MT4 and do the last step.
Go to the main TDesk Announcements post and download the following files:
TDesk.ex4
This is the main TDesk program. It is an expert advisor and must be copied to your
MQL4/Experts folder.
TDesk Loader.mq4
This is a script that starts TDesk with the latest settings and must be copied to your
MQL4/Scripts folder. Each time you change the inputs of TDesk, they will be
automatically saved to disk. By using this script, you can unload and load TDesk
without saving and loading a set file each time.
TDesk.mqh
TDeskSignals.mqh
These two files are needed for indicator and trading drones to communicate with
TDesk. Sooner or later you will need them to compile something. They are “include
files” and go to your MQL4/Include folder.
Fonts.zip
This archive contains the two symbol fonts TDesk uses: Wingdings and Wingdings2. If
symbols in the dashboard look weird, your machine might be missing one or both of
them. In this case download and install them by your operating system. If in doubt,
install them anyway. They won’t do any harm.
Go to the Universal Buffers Drone post and download the following files:
Go to the Universal Signals Drone post and download the following files:
hgi_lib.ex4
This is the “Holy Grail Indicator” (HGI) library. USD will not work without it being
present. It is mandatory and goes into your MQL4/Libraries folder. Download it from
the HGI thread.
Desky files
The last puzzle piece is a working trading setup. One very profitable (if you have
enough funds and balls of steel) is “Slopey Peaky Desk”, the TDesk adaption of Steve’s
famous “Slopey Peaky Bob” expert advisor. We will use it as our example.
The system uses two indicators that we need to download. Go to the Peaky Buffers
post and Slopy Buffers post and download the following files:
PeakyBuffers.mq4
SlopyBuffers.mq4
Both are indicators and go to your MQL4/Indicators folder.
Now go to the Slopey Peaky Desk thread and download the following files:
There is a little trick you can always use when specific things in MT4 go wrong.
Sometimes MT4 recognizes replaced indicators or experts as new ones and produces
an error message like “ThisAndThat[n] could not be found”. We use this trick as a
preventive measure now:
My father-in-law, who was a painter and decorator, had a favourite saying: “Good
masking is key to quick painting”. This also applies to setting up a trading system. Now
that all is prepared, the rest is very simple:
Start MT4 and load the two templates on two separate XAUUSD charts.
The first template loads TDesk, the second loads Desky and two instances of UBD
using Peaky Buffers and Slopy Buffers. All configured properly and ready to rumble.
On the first chart TDesk is running. Your chart will not have all this trade data as you
have just started. I have taken this as an example from my development machine –
don’t mind the negative numbers.
On the second chart Desky (at the top) and the two Universal Buffer Drones (at the
bottom) are running.
The system works this way: The two instances of UBD call the two indicators Peaky
Buffers and Slopy Buffers to read their signals. These indicators themselves have not
to be on any chart. The two UBDs then send the signals to TDesk which you can see
as incoming signals there. TDesk computes the Super Signal and sends it to Desky to
manage the trading part. Totally simple, isn’t it?
A directional Super Signal will be established as soon as the two incoming signals
agree. At the moment of taking the screenshots, no single symbol did meet this
condition, all Super Signals are FLAT. Follow the system for a while and you will see
one by one starting to enter positions.
TDesk dashboard explained
Let us go through the whole dashboard and its elements. Starting with common
elements, we will then look at rows and columns from top left to bottom right.
General elements
Tooltips
Each active (clickable) item shows a tooltip when you hover the cursor over it. These
tooltips tell you what will happen on clicking the item.
Windows
Many active items show pop-up windows containing information and/or other active
items on clicking them. These windows always have a lens at one of their corners to
remind you what they refer to. Windows are closed by clicking anywhere again.
Colours
As long as you stick to the default colours, different dashboard elements are easy to
distinguish. Aqua/Cyan is the colour of most active items that act like buttons. Time
frame filters are orange. Signals and positive/negative numbers are red, green or grey
with profit/loss columns having a slightly different tone than the rest. Detail columns
have the same colours as their main column, but dimmed. Alerts are yellow, orange
or red, depending on the severity. The rest is 50 shades of grey with highlights in white
or yellow. You can tweak everything to your heart’s content, of course.
Symbols
TDesk uses symbols for different signals. They are listed below, but you don’t have to
memorize them. Just hover over any symbol in the dashboard to have it explained.
Long
Short
→ Flat (selectable by input)
Exit
✓ Agree
Veto
Force exit
Veto and force exit
Beneath server and local time, the top row contains the following menu buttons:
Version
Clicking this button shows a window with version information.
Account
Clicking this button shows a window with vital account information.
Settings
Clicking this button shows a window with an overview of important settings like magic
numbers, signal operators/thresholds and alert settings.
Detected
Clicking this button shows a window with a list of all detected incoming signals and
their respective providers.
Special
Clicking this button shows a window with information about signals having special
attributes like Veto and Exit signals.
Help
Clicking this button shows a window with some usage tips.
This button is located in the top left of the table: It shows the actual view and the
method of profit/loss calculation. It can be configured to either cycle through or open
a window for selection of the following views. "Filter" means the time frame selectable
in some of the column headers.
Column headers
Some of the column headers are active elements (buttons). Clicking them generally
shows or hides detail columns depending on the respective main column. For example,
you can click the "Pending Trades" column header to see the pending trades buy and
sell lot columns. Which detail columns are shown on start of TDesk can be configured
in the inputs.
Some of the trades columns as well as the profit/loss and cost columns have a second
active element, default coloured in orange. This shows the time frame filter applied.
By clicking this element in any column, you can cycle through two filters and the
unfiltered “Sum”. The two filters are configurable in the inputs.
The detailed incoming signals are shown/hidden by clicking each of the aggregated
signal column headers. Signals that have special attributes like being provided by EAX-
Pins or contained in a list of veto/exit signals have headers coloured as active elements
as well as a button "View" in the footer. Click on any of these to see the respective
signal's attributes.
If you open up the "News Content" column by clicking the "News Offset" header, there
will be a label "Open FF Calendar" or “Open FXS calendar” in the top right corner. You
can click it to open the calendar in your standard browser.
There are two sort buttons below each column header. The dashboard is sortable by
any column. This sorting is dynamic and updates every refresh cycle. It can be frozen
by clicking the active (highlighted) sort button again. The sophisticated sort algorithm
groups and sorts data for any column meaningful by considering up to 3 additional
columns. The sort algorithm for each column is different. In the beginning some sort
orders might surprise you, but you will get the idea very quickly.
The main body of the dashboard contains the trade instrument rows, one for each
instrument. You can highlight each row by clicking it. This is especially useful when
you open a chart and then return to TDesk as the last clicked instrument is still
highlighted. Clicking the line again or somewhere else in TDesk (except some buttons)
removes the mark.
Instrument column
The symbol names are in the most left column of the table and are special as they can
show the overall strength/weakness of each currency in different colours. The
strength/weakness can get calculated by two different algorithms, based on all
incoming signals or based on the current gain against a basket of the other currencies.
You can click a single currency to filter the whole table and show only pairs with this
currency. Click it again (or the "Clear XXX filter" button in the footer) to remove the
filter. Click the ">>" button to open the respective trading chart.
Signal columns
Next are the Super/Multi/Solo/Veto Signal columns. Not every column might be shown,
as you can disable each in the inputs if you don’t need it. All signals are shown as
symbols by default, Multi and Solo Signals can also be shown as values between -100
and +100 by a button in the footer line. Super Signals blocked by news or spread can
temporarily be revealed by clicking their footer button. Click each signal to see a
window explaining how the signal was calculated. Changed signals are highlighted in
white colour for one refresh cycle and emphasized bold as long as the maximum signal
age is not reached (see next paragraph and see inputs). Clicking each signal column’s
header shows/hides the incoming signals columns.
Signal age columns
Next to each Signal column there is a Signal Age column showing you how long this
signal already exists, configurable as compact or extended version. Until the maximum
signal age (configurable in the inputs) is reached, the signal itself is highlighted and
the age is shown. Afterwards the signal is shown normal and the age is deleted. This
helps identifying only fresh signals. All signal ages can be deleted by the footer button.
Trade columns
Next are the Pending/Open/Closed trade columns showing the number of buy and sell
trades in each group. You might see all or only some of the columns depending on the
currently active view and the inputs as you can disable them. Clicking each column
header shows/hides the buy and sell lot sizes for each category and instrument. If
offered, the filter button in the header applies different time frame filters.
Profit/Loss columns
The Cash/Pips Profit/Loss columns show different types of profit/loss calculation
depending on the currently active view. You might see all or only some of the columns
as you can configure them in the inputs. Clicking each column header shows/hides the
buy and sell profit/loss for each instrument. The filter button in the header applies
different time frame filters.
Cost columns
The Cost columns show the aggregated costs of your positions depending on the
currently active view and time frame filter. Clicking the column header shows/hides
the different cost types as well as the swap rates for each instrument. The filter button
in the header applies different time frame filters. Please be aware that time-frame
filtered costs are an estimate, not an exact value as there is no historical cost data
available from the broker. The footers of the swap rates columns show averages while
all other column footers show sums.
Price columns
Next are the Price columns showing current bid quotes for all instruments. Clicking the
column header shows/hides a price gain and an ATR column for a user-configurable
time frame. The price and the gain column can be coloured according to the gain,
while the ATR column can be coloured according to market expansion/contraction. By
the footer buttons, the price column can be switched between colouring by gain or
colouring by proximity to round number levels, while the two detail columns can be
switched between absolute and percent values.
Spread columns
The Spread column shows the current spread of each instrument. TDesk calculates
different averages in real-time to alert you to unusual spreads or possible stop hunts.
The averages can be shown in detail columns by clicking the column header. The footer
tells the situation in textual form. As soon as any spread becomes unusual, the colour
of changes from white to an alarm colour. Optionally the Super Signal of the instrument
can get partially or fully blocked, what is shown there as a massive square.
News columns
Last but not least, TDesk periodically scrapes the data of upcoming events from the
ForexFactory calendar, sorts and prioritizes the different events and identifies the
nearest and most important one for each instrument. In the News Offset column, the
remaining time up to the event is shown, configurable as compact or extended version.
Clicking the column header opens the News Content column showing some more
information. You can also click any news offset or content to see a tooltip window that
shows all available details about the news event. Optionally the Super Signal of the
instrument can get blocked for a configurable time before and after the event, what is
shown there as a massive square. Finally, trade positions can even be closed due to
upcoming events.
Column footers
The column footers mostly contain sums and averages of the values above. But some
of them contain active elements as described above. You will easily understand when
you hover above or just try them.
Heartbeat indicator
In the upper right corner of the screen you will find a little blinking heartbeat label
indicating that TDesk is still running. This label blinks once each second and turns into
a blue clock icon when TDesk is calculating (refresh cycle, default 10 seconds). Below
this symbol the calculation time (ms) with warning colours on sudden increase and
average ticks per second per instrument (tps) also with warning colours on sudden
increase are shown for informational purpose.
Understanding the inputs
All TDesk inputs are explained in this section. Most software is best understood by its
inputs. If you want to unleash and use the full potential of TDesk, study this section
thoroughly. You will never know all of TDesk’s features otherwise.
The inputs related to TDesk’s signal processing will not be fully understandable if you
haven’t read and understood the respective chapter before. If you want to solely use
TDesk as a dashboard and have skipped the signal processing chapter, just ignore
those inputs.
Inputs that contain “on TDesk start” in their description, define the default look of
TDesk when it gets started. Once TDesk is running, these elements can be changed
by clicking associated buttons.
General settings
SetupName
If you are running multiple terminals with TDesk and want to distinguish their alerts,
enter unique setup names here.
TradesStartDate
Filter all data calculated and shown by a start date.
RefreshSeconds
TDesk is refreshed in this interval. Increase it if you need to save CPU resources.
TradesMagicNumber
The magic number of the trading drone must be entered here to show all respective
trades in the dashboard. "-1" means all.
SignalsMagicNumber
The magic number of the indicator drones must be entered here to show all respective
signals. "-1" means all.
DebugLevel
Change this value only if advised to. Your expert logs can become huge when you
mess around with this setting.
Trade symbols selection
CurrenciesToCombine
Enter all currencies (not pairs) you want to trade as a comma separated list. All valid
combinations of theses currencies (symbols/pairs) will be added to the trade list. For
example, if you enter AUD,USD,EUR in this field, the trade list will contain AUDUSD,
EURAUD and EURUSD.
SymbolsToInclude
Enter all additional symbols you want to trade. These can be pairs that are not
generated from the CurrenciesToCombine list or CFDs, metals, commodities and the
like. They will be added to the trade list.
SymbolsToIgnore
Enter all symbols pairs that are generated from the CurrenciesToCombine list, but you
don’t want to trade. They will be deleted from the trade list.
SymbolPrefix
Enter your broker's symbol prefix here. It will be added to all symbols.
SymbolSuffix
Enter your broker's symbol suffix here. It will be added to all symbols.
ReservedPair
Enter the symbol of charts you use for other purposes than trading (like other
dashboards). Do not add prefix or suffix. This symbol will be excluded from the chart
management. TDesk knows and excludes his own chart without this input.
SelectViewFromList
When clicking the table header, you can either select the desired table view from a
dropdown list or cycle through all the possible views. Select the desired method here.
ViewToShow
Select which view to show on TDesk start.
FirstFilterTimeFrame
SecondFilterTimeFrame
Open/closed trades, profit/loss and cost columns in the dashboard can be filtered by
two configurable time frames (or none). Select the time frames you want to use here.
FilterToApply
Select which of the above time frame filters (or none) to apply on TDesk start.
PreferredPrecision
All pips/points-based columns (except spreads) can be shown as pips or points (pips
with one additional digit). Select your desired precision here.
ShowSortButtons
If you don’t want to use the column sort buttons, you can disable them here.
ShowBottomButtons
If you don’t want to use the chart management and trade advice buttons below the
dashboard, you can disable them here.
HiddenColumnAlerts
Hiding/showing any columns in the dashboard has no effect on signal generation. All
signal generation aspects are driven by the respective inputs independent from the
dashboard settings. But TDesk will alert you when any columns involved in signal
generation are hidden in the dashboard. You can disable these alerts here.
ChartTimeFrame
New trade charts will be opened with this timeframe.
TemplateName
New trade charts will be opened with this template applied. Specify the name without
the suffix ".tpl". You can use symbol-specific templates by including a <symbol>
placeholder like in "MyTDesk<symbol>". If you open for example an AUDUSD chart
then, TDesk tries to open the chart with the template "MyTDeskAUDUSD.tpl". If this
template is not found, the <symbol> placeholder is ignored and the template to apply
will be "MyTDesk.tpl".
OpenChartsMinimized
Whether new charts will be opened minimized.
OpenDelaySeconds
MT4 has problems to open charts in exactly the order it is told. By slowing it down a
bit, the charts get arranged properly. The default of 0.3 seconds is right for my
machine. If your charts are still messed up, increase it step by step. If you care more
about speed than chart sequence, set it to 0.
Trade symbols
ColourCurrenciesBy
The currencies in trade pairs can be coloured according to their overall strength
compared to a basket of all the other currencies. This strength can be calculated from
incoming signals or the gain within a certain time frame (PriceColumnsTimeFrame in
section “Price columns”). Select the desired calculation method here.
ColourCurrenciesThreshold.
If currencies are above/below this threshold, they are considered strong or weak.
Lower values mean more coloured currencies in the table and vice versa.
Signal appearance
FlatSignalSymbol
Choose a symbol for indicating FLAT signals. A gimmick.
EmphasizeFreshSignalValues
Whether to print directional signals "bold" when TDesk signals are shown as values.
ColourBlockedSignals
Whether to show blocked signals with the alert level colour or uniformly. A gimmick.
ShowCompactSignalAges
Compact signal ages are shown with only one time unit (days, hours, minutes or
seconds), otherwise two time units are shown (for example hours and minutes).
Super signals
ShowSuperSignals
Whether to show the Super Signal columns in the dashboard at all. Nothing gets
functionally disabled by this. Read more in the signal processing chapter.
OverlayVetoSignals
TDesk can overlay the Super Signals with the Veto Signal in the Super Signal column
to show even more information. You can enable/disable that feature here.
SuperSignalsEntryOperator
SuperSignalsExitOperator
Select how to calculate the Super Signals from Solo and Multi Signals.
ShowSuperSignalsAge
MaxMultiSignalsAgeMinutes
Whether to show the signal ages and when to automatically clear them in order to
show only relatively fresh signals. Setting the second input to "0" disables the
automatic clearing and shows them always.
SendSuperSignalsAlerts
Whether to send alerts on signal changes.
DrawSuperSignalsOnCharts
Whether to draw the signals as well as a price line on the respective trading charts.
BroadcastSuperSignals
Whether to broadcast the signals as well as other data via global variables for other
experts to trade or do something else with this information.
SaveTDeskScreenshots
Whether to save a screenshot of the dashboard each time a Super Signal changes.
SaveTradeChartScreenshots
Whether to save a screenshot of the trade chart each time a Super Signal changes.
Multi signals
ShowMultiSignals
Whether to show the Multi Signal columns in the dashboard at all. Nothing gets
functionally disabled by this. Read more in the signal processing chapter.
ShowMultiSignalsAsValues
Multi Signals can be shown as values or symbols. Select your default preference on
TDesk start here.
MultiSignalsEntryThreshold
MultiSignalsExitThreshold
Define how to calculate the Multi Signals.
ShowMultiSignalsAge
MaxMultiSignalsAgeMinutes
Whether to show the signal ages and when to automatically clear them in order to
show only relatively fresh signals. Setting the second input to "0" disables the
automatic clearing and shows them always.
SendMultiSignalsAlerts
Whether to send alerts on signal changes.
DrawMultiSignalsOnCharts
Whether to draw the signals as well as a price line on the respective trading charts.
Solo signals
ShowSoloSignals
Whether to show the Multi Signal columns in the dashboard at all. Nothing gets
functionally disabled by this. Read more in the signal processing chapter.
ShowSoloSignalsAsValues
Solo Signals can be shown as values or symbols. Select your default preference on
TDesk start here.
SoloSignalsEntryThreshold
SoloSignalsExitThreshold
Define how to calculate the Solo Signals.
ShowSoloSignalsAge
MaxSoloSignalsAgeMinutes
Whether to show the signal ages and when to automatically clear them in order to
show only relatively fresh signals. Setting the second input to "0" disables the
automatic clearing and shows them always.
SendSoloSignalsAlerts
Whether to send alerts on signal changes.
DrawSoloSignalsOnCharts
Whether to draw the signals as well as a price line on the respective trading charts.
Special signals
ShowVetoSignals
Whether to show the Super Signal columns in the dashboard at all. Nothing gets
functionally disabled by this. Read more in the signal processing chapter.
ShowVetoSignalsAge
MaxVetoSignalsAgeMinutes
Whether to show the signal ages and when to automatically clear them in order to
show only relatively fresh signals. Setting the second input to "0" disables the
automatic clearing and shows them always.
InvertIncomingSignals
This list lets you define which signals will be inverted (changed to the opposite
direction). You can use this feature to define signals that you want to be AGAINST the
overall signal situation, like for trading retraces.
NullifyDirectionalSignals
Signals on this list can have only two states: NONE or FLAT. Incoming directional
signals get nullified (set to NONE). This way you can define true "Risk On, Risk Off"
signals and block trading or exit all positions together with the VetoOnDisagreeSignals
and ForceExitOnDisagreeSignals lists.
ExcludeFromSoloSignals
ExcludeFromMultiSignals
These lists let you define which signals will be excluded from the Solo and/or Multi
Signals calculation.
VetoOnDisagreeSignals
VetoOnDisagreeLogic
This list and logic input let you define which signals will veto (force FLAT) the Super
Signal if they disagree (meaning they are FLAT or opposite to the Super Signal). You
can also select the logic to connect the signals, should you have more than one.
VetoOnOppositeSignals
VetoOnOppositeLogic
This list and logic input let you define which signals will veto (force FLAT) the Super
Signal if they are opposite to the Super Signal. You can also select the logic to connect
the signals, should you have more than one.
ForceExitOnDisagreeSignals
ForceExitOnDisagreeLogic
This list and logic input let you define which signals will force the trading EA to exit
from all positions if the signals disagree (meaning they are FLAT or opposite to the net
lot size of all open positions). You can also select the logic to connect the signals,
should you have more than one.
ForceExitOnOppositeSignals
ForceExitOnOppositeLogic
This list and logic input let you define which signals will force the trading EA to exit
from all positions if the signals are opposite to the net lot size of all open positions.
You can also select the logic to connect the signals, should you have more than one.
ResetAllSignalsOnExit
This is set to "True" as default and forces the Solo and Multi Signals to FLAT when an
EXIT signal is present. This way, all the signals have to reach their entry threshold
again before new directional signals are created after an EXIT condition.
SetMissingSignalsToFlat
Setting this input to true causes all signals to be initialized with a default of FLAT
instead of NONE. Signals that are NONE get replaced with FLAT. This should only be
necessary in rare cases where signal drones send NONE instead of FLAT.
Incoming Signals
ShowIncomingSignals
Whether to show the incoming signals in the dashboard on TDesk start. Nothing gets
functionally disabled by this. Read more in the signal processing chapter.
IncomingSignalsColumnsWidth
You can fine-tune the dashboard column widths by this input.
EAX PINs are very special indicators with a standardized interface that can send signals
to TDesk. They were developed before and outside of the TDesk world. For more
information see the EAX PIN section in the signal processing chapter.
UseEaxPins
Specify here whether to use EAX-PINs or not. Usually you won’t as the TDesk world
has indicators for nearly everything.
EaxPinDescriptors
TDesk can use up to 8 EAX-PINs. The input section of each PIN indicator has a field
for the PIN number. You must give all PINs you want to use in TDesk unique numbers
between 1 and 8. PINs outside the range will be ignored. For each of the PINs you
must enter a descriptor in this input list as a comma-separated enumeration of "<pin
number>/<indicator acronym>/<time frame>" descriptors and must look similar to
"5/ADX/M15, 3/RSI/H1". The sequence of descriptors is irrelevant. Indicator acronyms
must have at least 2 and should not exceed 5 characters. Time frames must follow the
usual MQL4 notation. You can use spaces to make the list more readable. The list is
limited to 100 characters (without spaces) due to technical reasons. Use somewhat
speaking indicator acronyms, not just "PIN". Otherwise nobody can tell which
indicators were used.
Trade columns
ShowTradeColumns
Whether to show the trade columns in the dashboard at all.
ShowPendingTradeDetails
Whether to show detail columns for pending trades on TDesk start.
ShowOpenTradeDetails
Whether to show detail columns for open trades on TDesk start.
ShowClosedTradeDetails
Whether to show detail columns for closed trades on TDesk start.
TradeColumnsWidth
You can fine-tune the dashboard column widths by this input.
Cash/Pips columns
ShowCashColumn
Whether to show the cash columns in the dashboard at all.
ShowCashDetails
Whether to show cash detail columns on TDesk start.
ShowPipsColumn
Whether to show the pips columns in the dashboard at all.
ShowPipsDetails
Whether to show pips detail columns on TDesk start.
CashAndPipsColumnsWidth
You can fine-tune the dashboard column widths by this input.
Cost columns
ShowCostColumn
Whether to show the cost columns in the dashboard at all.
ShowCostDetails
Whether to show cost detail columns on TDesk start.
CostColumnsWidth
You can fine-tune the dashboard column widths by this input.
Price columns
ShowPriceColumn
Whether to show the price columns in the dashboard at all.
ShowPriceDetails
Whether to show price detail columns on TDesk start.
PriceColumnsTimeFrame
TDesk can show you the price gain and ATR for each instrument, based on a certain
time frame. Select the desired time frame here. It should be your usual trend time
frame.
AlignPriceQuotesBy
Select whether price quotes shall be aligned right or at the decimal point.
ColourPriceQuotesBy
Price quotes can be coloured according to the gain within the above time frame or
according to levels (round numbers) proximity. Select your default on TDesk start.
PriceLevelPips
Define the round numbers distance for colouring price quotes by levels.
PriceLevelThreshold
Define the round numbers proximity for colouring price quotes by levels.
ShowPriceGainAsPercent
Price gains can be shown as pips/points or percent. Select your default on TDesk start.
ShowPriceRangeAsPercent
ATR can be shown as pips/points or percent. Select your default on TDesk start.
ColourPriceRanges
ATR values can be coloured according to increase/decrease over their average. This
will tell you something about volatility and expansion. You can enable/disable this
feature here.
PriceRangesColourThreshold
If ATR values grow/shrink above/below this threshold, they are considered expanding
or collapsing. Lower values mean more colour in the table and vice versa.
PriceColumnsWidth
You can fine-tune the dashboard column widths by this input.
Spread columns
ShowSpreadColumn
Whether to show the spread columns in the dashboard at all.
ShowSpreadDetails
Whether to show spread detail columns on TDesk start.
AbnormalSpreadThreshold
PossibleStopHuntThreshold
These inputs enable you to modify the spread alerts. Change these if you want the
alerts to be more or less nervous. The thresholds are factors the spread must rise
above the average or longterm spread. TDesk keeps a running record of these spread
averages for each pair. You can see the values by clicking the spread column header
to unfold detail columns.
SpreadsBlockSignals
TDesk has algorithms to detect abnormal spreads and possible stop hunts. TDesk can
block the signals and displays a warning sign (square) when such conditions are
detected for a symbol. Enable/disable that function here.
SpreadColumnsWidth
You can fine-tune the dashboard column widths by this input.
News columns
ShowNewsColumn
Whether to show the news columns in the dashboard at all. TDesk scrapes the
upcoming events from the FF calendar, sorts them by importance and warns about the
nearest and most important one for each pair.
ShowCompactNewsOffsets
Compact news offsets are shown with only one time unit (days, hours, minutes or
seconds), otherwise two time units are shown (for example hours and minutes).
ShowNewsDetails
Whether to show the news detail column on TDesk start.
NewsRefreshMinutes
The interval to retrieve the calendar from the internet.
MinimumNewsImpact
Only news equal or above this impact will be shown.
MaximumNewsMinutes
Only news occuring at or before this offset will be shown.
NewsBlockSignals
TDesk can block (freeze) Super Signals and displays a warning symbol when news are
detected for a symbol. There are 3 levels of signal blocking: “BlockNone” deactivates
blocking, “BlockAll” freezes the Super Signals completely and “BlockEntries” prevents
Super Signals from becoming directional until the condition has vanished.
BlockBeforeNewsMinutes
Signals will be blocked when upcoming news are within this timespan.
BlockAfterNewsMinutes
Signals will be blocked when expired news are still within this timespan. The dashboard
news columns will still show expired news with a negative offset.
ExitAllTradesWhenBlocked
TDesk can automatically send an EXIT signal as soon as a pair gets blocked by news.
You can enable/disable this feature here.
PreferredCalendar
Select your preferred calendar (Forex Factory or FXStreet) to be opened by the link in
the dashboard. This does not affect the news, they are always scraped from FF.
Signal alerts
EnablePopupAlerts
EnableEmailAlerts
EnablePushAlerts
Which alerts to send when signals change.
AlertOnFlatSignals
AlertOnExitSignals
Set them to false to filter the respective alerts and get less annoyed.
AlertDelaySeconds
Alerts will only be sent when they have been stable for this time. Increasing this value
delays alerts, but reduces annoyance by flip-flop-signals.
Chart screenshots
UseOpenChartsForScreenshots
If true, TDesk will look for an open chart of the respective symbol and make a
screenshot of it. If false or an open chart is not found, a new chart is opened, shot
and then closed again.
ChartScreenshotTemplateName
New charts for screenshots will be opened with this template applied. Specify the name
without the suffix ".tpl". You can use symbol-specific templates by including a
<symbol> placeholder like in "MyTDesk<symbol>". If for example an AUDUSD chart
must be shot, TDesk tries to open the chart with the template "MyTDeskAUDUSD.tpl".
If this template is not found, the <symbol> placeholder is ignored and the template
to apply will be "MyTDesk.tpl".
ChartScreenshotTimeFrame
Timeframe for trade chart screenshots. If “current”, ChartTimeFrame input from the
“New chart settings” section will be used.
ChartScreenshotWidth
Trade chart screenshots will have this width (TDesk screenshots are automatic).
ChartScreenshotHeight
Trade chart screenshots will have this height (TDesk screenshots are automatic).
Trade advice
CalculateTradeAdvice
Whether to calculate SL/TP simulations each night. More information can be found in
the respective chapter.
ActualSetupStartDate
Used for restricting the start date of the simulation when you have changed your entry
logic.
MinimumTradeDays
MaximumTradeDays
Trades are only respected in the simulation if their age lies between these two values.
MinimumTradeCount
MaximumTradeCount
The simulation is only valid if it covers the minimum number of trades. It is restricted
to a maximum number of trades.
MaximumStopLoss
MaximumTakeProfit
SimulationStepSize
These parameters define the size and granularity of the simulation.
History writing
WriteHistoryFiles
StrategyFolderName
Whether TDesk will collect and write the signal history to disk and to which folder
under MQL4/Files to write the data. See the respective chapter in this manual.
Dashboard metrics
FontSize
FontName
Configure the TDesk font. Font size is the most important setting when it comes to
scaling the dashboard. All elements shrink or expand according to the font size.
DisplayX
DisplayY
Where the upper left corner of TDesk will be on the screen.
ScaleX
ScaleY
Shrink/expand TDesk elements in relation to the text size. This must be used especially
if you have set your Windows text aspect ratio to a value other than 100% or if you
are using a weird font with metrics very different to the default Windows Arial font.
Dashboard colors
ControlChartColors
In order to produce a very clean and sleek look, TDesk takes total control over its own
chart’s colors and settings. If you have additional thingies on the TDesk chart and
experience display problems, disable this feature.
BackgroundColor
ForegroundColor
TDesk manages the chart background and disables/hides everything that is not needed
like window frames and other stuff. You can change the look here.
TextColor
HighlightColor
TitleColor
ButtonColor
TradePairColor
Choose colors for text and headers, buttons, symbols and table text.
NoSignalColor
UpSignalColor
DnSignalColor
VetoSignalColor
DimUpSignalColor
DimDnSignalColor
Choose colors for signals and coloured trade pairs.
HeadColor
RowColor1
RowColor2
RowColorClicked
Choose background colors for table rows.
PosNumberColor
NegNumberColor
PosSumColor
NegSumColor
Choose colors for cash/pips numbers and sums in the table.
LowAlertColor
MediumAlertColor
HighAlertColor
Choose colors for spread events and news warnings.
WindowTitleColor
WindowHighlightColor
WindowTextColor
Choose colors for text elements in windows.
SPECIAL FUNCTIONS
TDesk has a unique (optional) feature called "Trade Advice". Each first hour of the
trading day, when markets are quiet, a simulation of six different stop loss and take
profit strategies is run. This simulation starts at a random minute to distribute load in
case multiple instances of TDesk are running on a machine.
General description
With the default settings unchanged, typically the last 100-200 trades are taken in
account and around 1500 different SL/TP settings are simulated over a period of 20
days. Depending on the machine, the whole process takes some seconds up to a few
minutes. All settings are configurable to your needs.
The condensed simulation result will be shown on clicking the button "Show trade
advice". A new window will open that looks like this:
Let's go through the contents of that window. The top two lines show some statistical
data about the simulation. In the middle there are the best results of each strategy
grouped in two columns. The bottom line shows some buttons or runtime feedback. If
you open the window the first time, it will most likely be empty as no strategies have
been calculated yet. The first button "Force recalculation" can be used at any time to
(re-)fill the window.
The strategies are shown in two columns: The left column shows simulation results
ignoring the real trade exits (i.e. only exiting by the calculated SL or TP), while the
right column shows simulation results respecting the real trade exits (i.e. exiting by
calculated SL or TP or the real trade exit, whatever comes first). In each column we
have the three SL/TP calculation methods we now also have in Desky (fixed pips, price
fractions and ATR percent).
How do we interpret those results? The left column tells us something about our
entries. In the above example the trades would have lost 4824 pips when totally
unmanaged. The result could have been improved by over 7000 pips applying simply
a TP of 130 percent of ATR or price percent. The right column tells us something about
our exits. In our example they have been terrible compared to the unmanaged trades.
The real trades also had a negative outcome. We could have improved that also by
applying a SL of 80 and a TP of 170 ATR percent.
So far, so good. But only very unexperienced traders would think things are as easy
as taking the best strategy, applying the advice to Desky’s inputs and you are done.
The above results are based on a very small sample, they can have been influenced
by special situations or isolated simulation highs. We all know that the law of large
numbers is in play here. This is the reason for the two other buttons at the bottom.
You will need Microsoft Excel, Open Office, Libre Office or something comparable to
fully use their magic:
Open protocol
This button opens a CSV file (TDesk-Strategy-Protocol.csv in MQL4/Files) showing
results of the last simulation for each TP, SL and strategy. Filter and sort it until you
can see sweet spots where changes of the parameters have no big effect on the
results. In the example below, a SL of 0 (which means no SL at all) and a TP of 100-
150 or 180-200 price ATR percent (strategy 3) seem to be the most promising:
Open history
This button opens a CSV file (TDesk-Strategy-History.csv in MQL4/Files) showing the
best results for each strategy and all simulations you ever calculated. This allows you
to find sweet spots over time. As each simulation is run on a different set of trades
and market situation, after a while the law of large numbers will kick in.
Caveats
As stated, don't rely too much on a single simulation even having analysed the protocol
properly. You can take it as a starting point, but do your homework regularly. To use
the system profitably, you will have to analyse both files regularly, make notes,
compare and think. Then it should give you good hints for your trade management.
Simulations will only be comparable if they are based on the same entry rules. If you
change your TDesk entry logic or the signalling indicators, start the whole process
anew. You can restrict the simulation start to a certain date in the inputs if you have
changed your entry strategy. And don't forget to (archive and) delete the history file
then. You would get a mess of different strategies otherwise.
If your exit strategy already uses SL's and/or TP's as sole exits, the right column
strategies will be of no worth for you. Rely on the left column to adjust your SL and
TP settings accordingly.
If your exit strategy already uses SL's and/or TP's together with any other exit logic,
you must set up a "shadow" instance of TDesk that is identical, but without any SL or
TP exits. Otherwise the simulation algorithm will get confused because it can't
differentiate between your SL/TP exits and your other exits.
This functionality is somewhat complex. If you don't use it, better disable it in the
settings to save resources. Any questions and ideas can be discussed in the TDesk
discussion thread.
TDESK FOR CODERS
TDesk.mqh is the include file for indicator drones or experts sending signals to TDesk.
You should already have installed it. It provides the following functions:
InitializeTDesk
This function initializes the module. You must call it somewhere in your OnInit()
function with the following syntax and parameters:
provider
This string tells TDesk a name for the signal sending drone. Keep it short and
simple. Avoid slashes, they will be removed.
magic
This optional integer tells TDesk the magic number of the signal sending drone.
TDesk can be set to react only to certain magic numbers. If omitted, 0 is sent.
PublishTDeskSignal
This function sends a signal to TDesk. You must call it in your main loop directly after
calculating the signals with the following syntax and parameters:
name
This string tells TDesk an acronym for the sent signal. Restrict it to max. 5
characters. Less is better. Avoid slashes, they will be removed.
timeframe
This parameter tells TDesk a time frame for the sent signal.
symbol
This string tells TDesk for which symbol the signal is sent. Omit prefix/suffix.
signal
This parameter tells TDesk the actual signal. It must be of enum type
TDESKSIGNALS, which is also defined in the include file and can have values of
NONE, FLAT LONG and SHORT. Don't send NONE as signal when it is actually
FLAT.
tfoverwrite
This optional string can be used to overwrite the timeframe display in TDesk’s
dashboard. You will barely need it, just omit.
DeleteTDeskSignals
This function deletes signals you have sent to TDesk. You must call it somewhere in
your OnDeinit() function with the following syntax and parameters:
The four string parameters default to “ALL”, which means you can omit them if
you want to delete all signals of your program. Only if it is running in multiple
instances, for example on different timeframes or symbols, you must specify
the signals to delete, otherwise one instance deletes all signals of all instances.
symbol
This string denotes the symbol to delete signals for. Omit prefix/suffix.
timeframe
This string denotes the time frame to delete signals for. It is the short version
of ENUM_TIMEFRAMES without “PERIOD_”, for example “D1” or “M30”.
name
This string denotes the signal name to delete signals for. It is the name you
have used in PublishTDeskSignals.
magic
This string denotes the magic number to delete signals for.
How to use signals from TDesk
TDeskSignals.mqh is the include file for trading drones and other programs wanting
to use TDesk signals. It provides the following functions:
ReadTDeskSignals
This function reads the signals TDesk is broadcasting. You must call it somewhere at
the beginning of your main loop with the following syntax:
bool result=ReadTDeskSignals()
result
The function returns a boolean value that indicates whether it was successful
(true) or not (false) in reading the signals.
After having successfully read the TDesk signals, they are provided for access in a
couple of synchronized arrays and variables. The main elements and probably all you
will ever need are:
TDeskArraySize
Integer variable holding the size of each array, i.e. the number of instruments
data is available for.
TDeskSymbols[]
Array of string values holding the symbols (names) of all instruments.
TDeskSignals[]
Array of values holding the actual Super Signals of all instruments. These values
are of enum type TDESKSIGNALS, which is defined in the include file and can
have values of NONE, FLAT, LONG, SHORT and EXIT.
In addition, there are some other arrays providing signal details you can use for more
sophisticated strategies:
TDeskVSignals[]
Array of values holding the actual Veto Signals of all instruments. These values
are also of enum type TDESKSIGNALS, but here can have values of AGREE,
VETO, FORCEEXIT and VETOANDFORCEEXIT.
TDeskSValues[]
Array of integer values holding the actual Solo Signal values of all instruments.
The values can be in the range of -100 to +100.
TDeskMValues[]
Array of integer values holding the actual Multi Signal values of all instruments.
The values can be in the range of -100 to +100.
TDeskTimes[]
Array of datetime values holding the time of the last Super Signal change for all
instruments.
TDeskSpreads[]
Array of values holding the actual spread state of all instruments. These values
are of enum type TDESKSPREADS, which is defined in the include file and can
have values of NORMAL, ABNORMAL and STOPHUNT.
TDeskNews[]
Array of values holding the actual spread state of all instruments. These values
are of enum type TDESKNEWS, which is defined in the include file and can have
values of NONEWS, LOWNEWS, MEDIUMNEWS and HIGHNEWS.
SaveTemplateIfNeeded
This function writes template files for the FXTestify database uploader. It is a legacy
element and provided for backward compatibility. I don’t recommend to use it in new
projects and hence don’t provide any instructions here.