Sunteți pe pagina 1din 49

USERGUIDE MT4+ EXCEL RTD

TABLE OF CONTENTS USERGUIDE MT4+ EXCEL RTD

1. INSTALLATION OF MT4+ EXCEL RTD PAGE 03


2. ABOUT MT4+ EXCEL RTD PAGE 06
3. DISPLAYING REAL-TIME DATA IN EXCEL PAGE 07
A. ACCOUNT DATA PROPERTIES PAGE 08
B. PRICE AND SYMBOL DATA PROPERTIES PAGE 09
C. TICKET DATA PROPERTIES PAGE 11
D. BAR HISTORY PAGE 13
E. TECHNICAL INDICATORS PAGE 17
F. SYMBOL NAMES AND STANDARDISATION PAGE 34
G. TICKET VOLUMES PAGE 35
4. SENDING TRADING COMMANDS FROM EXCEL PAGE 36
A. READING DATA IN VBA CODE PAGE 37
B. SENDING TRADING COMMANDS FROM EXCEL PAGE 39
C. COMMANDS AND PARAMETERS PAGE 41
D. ASYNCHRONOUS COMMANDS PAGE 47

2
INSTALLATION OF MT4+ EXCEL RTD USERGUIDE MT4+ EXCEL RTD

In order to install MT4+ Excel RTD, follow the steps 1

below:
1. Click here to download the retrofit installer
containing the full package of JFD MT4+ exclusive
add-ons.

2. Run the installer file (1) on your computer.


3. Select the MetaTrader 4 Terminal folder (2) where
you would like to install the Add-ons package and
press the Install button (3). 2

4. Press OK in the confirmation dialog box that will


appear after successful installation.

3
NOTE

Before installing JFD’s MT4+ Add-ons, close your MT4


terminal. The add-ons cannot be installed if the MetaTrader 4
terminal is running.

3
INSTALLATION OF MT4+ EXCEL RTD USERGUIDE MT4+ EXCEL RTD

After successful installation, open your MT4+ terminal and you


will find the MT4+ Excel RTD (1) along with all other JFD Add-ons
in the Navigator window under Expert Advisors.

4
INSTALLATION OF MT4+ EXCEL RTD USERGUIDE MT4+ EXCEL RTD

In order to use the add-ons, the Expert Advisors should be enabled. Simply click the AutoTrading button (1) on the top toolbar.
Alternatively, you can open Tools main menu and select Options (2). In the dialog box that will appear, open the Expert Advisors tab (3)
and make sure that the check-box Allow Automated Trading (4) is ticked. Then press the OK button (5).

5
ABOUT MT4+ EXCEL RTD USERGUIDE MT4+ EXCEL RTD

MT4+ Excel RTD lets you do two things:


▪ Put real-time data into Excel using only Excel’s RTD() function (no macros; no programming; no XLL add-ins)
▪ Send simple trading commands from VBA code in Excel
You can run multiple copies of MT4+ Excel RTD for different accounts and combine the data for those accounts in a single spreadsheet.
The Add-On is supplied with an example spreadsheet which lets you enter up to 5 account numbers and then automatically displays a
dashboard of equity and balance etc.; symbol prices; and a consolidated list of openpositions.

6
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

In order to put real-time data into Excel you need to run the RTD Add-On. Otherwise, the relevant Excel formulas will give blank values.
The Add-On will report all the symbols which are included in the MT4 Market Watch.

Once MT4+ Excel RTD is running, you can use the following formula in Excel to insert a real-time feed of account, ticket, or price data:
=RTD("FXBlueLabs.ExcelRTD", , "account number", "property")
You simply need to fill in the account number, and the property which you want to display. For example, if your account number is
1111714580 and you want to display the account’s balance, or the bid price of GBPUSD:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "balance")


=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "bidGBPUSD")
Please note that with some language settings, Excel may want the sections of the formula to be separate by semi-colons instead of
commas. For example:
=RTD("FXBlueLabs.ExcelRTD"; ; "account number"; "property")
MT4+ Excel RTD supplies data about the account (e.g. equity and balance), symbol prices, tickets, bar history, and technical indicator
values. The list of tickets includes both open positions and pending orders.

7
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

A. ACCOUNT DATA PROPERTIES

PROPERTY MEANING
currency The deposit currency of the account
balance Account balance
equity Account equity
pl Floating profit/loss
usedmargin Margin in use
freemargin Free margin
tickets Number of tickets: open positions and pending orders

8
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

B. PRICE AND SYMBOL DATA PROPERTIES


MT4+ Excel RTD supplies the current ask and bid prices for all symbols configured. For example, if the symbol name you are interested in
is EURUSD, then the property name for its ask price is askEURUSD. For example:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "askEURUSD")

PROPERTY MEANING
bidSymbol Bid price of symbol
askSymbol Ask price of symbol
Daily high of the symbol. Not available on all platforms. The definition of the day’s start (e.g. GMT, or
highSymbol
some other time zone) depends on the broker/platform.
Daily low of the symbol. Not available on all platforms. The definition of the day’s start (e.g. GMT, or
lowSymbol
some other time zone) depends on the broker/platform.

9
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

MT4+ Excel RTD also provides a count and a list of all configured symbols. For example, the following formulas return the number of
available symbols and the name of the 5th symbol on the list (which can be in any order):

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "symbols")


=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "s5")

PROPERTY MEANING
symbols Number of symbols
Name of the nth symbol, e.g. EURUSD. The N value is an index between 1 and the total number of
sN
symbols

10
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

C. TICKET DATA PROPERTIES


MT4+ Excel RTD supplies the following information about each ticket, i.e. each open position and pending order. The N value in each
property name is an index between 1 and the total number of tickets (reported by the tickets property). For example, you can get the
symbol name and net profit of the 2nd ticket (if there is one) using the following formulas:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "t2s")


=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "t2npl")

PROPERTY MEANING
tNt Ticket number, i.e. the ID of the open position or pending order
tNa Action: BUY, SELL, BUYLIMIT, SELLLIMIT, BUYSTOP, SELLSTOP
tNs Symbol name
tNv Volume
tNnpl Net profit (gross profit + commission + swap). Not applicable on pending orders, and reported as zero.
tNpl Gross profit. Not applicable on pending orders, and reported as zero.
tNswap Swap. Not applicable on pending orders, and reported as zero.
tNcomm Commission. Not applicable on pending orders, and reported as zero.

11
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

PROPERTY MEANING
tNsl Stop-loss price
tNtp Take-profit price
tNop Open/entry price
tNcp Current price of symbol
tNcm Order comment
tNmg Order magic number (MetaTrader 4 only)
tNot Open time (as number of seconds since 1/1/1970)

12
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

D. BAR HISTORY
You can use MT4+ Excel RTD to request recent price history from the platform. All values are bid prices. The property name for bar
history is as follows: @bh,symbol,timeframe,data,shift. For example, the following formula shows the high of the current EURUSD H1 bar:

=RTD("FXBlueLabs.ExcelRTD", ,"1111714580", "@bh,EURUSD,H1,high,0")

13
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

The bar timeframe can either be specified as a number of minutes, e.g. 60 for hourly bars, or you can use standard notations such as H1 or
M3. The available timeframes are as follows:

PERIOD TIMEFRAME VALUE PERIOD TIMEFRAME VALUE


M1 1 H1 60
M2 2 H2 120
M3 3 H3 180
M4 4 H4 240
M5 5 H6 360
M6 6 H8 480
M10 10 D1 1440
M12 12 D2 2880
M15 15 W1 7200
M30 30

14
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can request the following information about each bar:

DATA MEANING
time Start time of the bar (in the format yyyy/mm/dd hh:mm:ss)
open Open price
high High price
low Low price
close Close price
range Range from high to low
median Average of high and low
typical Typical price: average of high, low, and close
weighted Weighted price: average of high, low, close, and close – i.e. double-weighting on the close value
change Change in bar: close minus open, therefore negative for down bars and positive for up bars.
abschange Absolute change value, i.e. change converted to a positive number if negative

15
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

The final part of the price history formula is the bar shift, i.e. which bar to get information about. Bars are numbered with the newest at
zero, and increasing in order of age. In other words, bar 0 is the current in-progress bar; bar 1 is the last complete bar etc. Therefore, the
close price on bar 0 (for any timeframe) is the current bid price. In effect, the following two formulas are identical:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "bidGBPUSD")


=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@bh,GBPUSD,60,close,0")
The amount of data available on each timeframe depends on the underlying platform, but will typically be around 250 bars.

16
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

E. TECHNICAL INDICATORS
MT4+ Excel RTD has some built-in indicator calculations which you can request using formulas. For example, the following formula will
show 14-bar Relative Strength Index for GBP/USD M5:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@rsi,GBPUSD,M5,14,0")


The property name for a technical indicator starts with an indicator name such as @rsi or @ema, and is then followed by a list of
parameters separated by commas. The first two parameters for an indicator are always the symbol name and the timeframe, which can be
specified either as H2 or as the equivalent number of minutes such as 120. The last parameter is always the bar shift. You will normally
want to use a value of 0 for the shift, in order to get the current indicator value, but you can also use a shift of e.g. 1 to get the value of
the indicator at the end of the previous bar. The only exception are the swing-point indicators, which always return the latest swing point
and do not use a shift parameter. Many indicators can be applied to different data values from each bar, e.g. the high price or even the bar
range instead of the close price. Bear in mind that exponential moving averages and similar calculations are affected by the amount of
available bars. For convenience, everyone always refers to the N value in such calculations as "N bars" (e.g. "21-bar EMA"), but this is not
what it truly means. The N is a weighting factor, and a calculation such as an EMA always looks at the entire bar history which it has
collected, but giving increased weight to the most recent N bars. Two calculations of an EMA can be different – though only usually by
small amounts – if they are using different amounts of bar history.

17
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate a simple moving average (i.e. arithmetic mean) using the @sma indicator. For example, the following formula does an
average of the median prices for the last 10 bars on GBP/USD M5:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@sma,GBPUSD,M5,median,10,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

18
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate an exponential moving average using the @ema indicator. For example, the following formula does an average of the
ranges of the last 21 bars on GBP/USD D1:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@ema,GBPUSD,1440,range,21,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

19
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate a smoothed moving average using the @smma indicator. (A smoothed average with period N is the same as an
exponential moving average with period 2N-1). For example, the following formula does an average of the close prices of the last 21 bars
on GBP/USD H1:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@smma,GBPUSD,H1,close,21,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

20
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate a linear-weighted moving average using the @lwma indicator. For example, the following formula does an average of the
ranges of the last 21 bars on GBP/USD D1:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@lwma,GBPUSD,1440,range,21,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

21
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate MACD (the difference between a "fast" EMA and a "slow" EMA) using the @macd indicator. You can also use @macdsig
to get the smoothed "signal" value of the MACD indicator. For example, the following formula calculates MACD for GBP/USD M30, using
the standard 12-bar fast EMA and a 26-bar slow EMA, and applying the calculation to the high price of each bar:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@macd,GBPUSD,30,high,12,26,9,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
fast Number of bars for the fast EMA
slow Number of bars for the slow EMA
slowing Smoothing period for the signal value
shift Bar shift, e.g. zero in order to get the current value of the indicator

22
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate average true range using the @atr indicator. For example, the following formula calculates the average true range of the
last 21 bars on GBP/USD D1:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@atr,GBPUSD,D1,21,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

23
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate Relative Strength Index using the @rsi indicator. For example, the following formula calculates 14-bar RSI on USD/JPY
M3:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@rsi,USDJPY,3,14,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

24
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate the stochastic oscillator using the @stoch indicator. You can also calculate the slowed "signal" value for the indicator
using @stochslow. For example, the following formula calculates the oscillator on GBP/USD H2 bars, using standard parameters of (5,3,3)

– i.e. K period of 5, D period of 5, slowing value of 3.


=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@stoch,GBPUSD,120,5,3,3,0")
The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
k K period for the calculation
d D period for the calculation
slowing Slowing period (moving average of D values)
shift Bar shift, e.g. zero in order to get the current value of the indicator

25
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate "Bollinger" bands – a simple moving average plus/minus a number of standard deviations – using the @bbupper and
@bblower indicators. For example, the following formula calculates the upper band on GBP/USD M10, using an average of the close
prices on the last 30 bars, and 2 standard deviations:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@bbupper,GBPUSD,10,close,30,2,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
deviations Number of standard deviations to calculate (e.g. 2)
shift Bar shift, e.g. zero in order to get the current value of the indicator

26
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate volatility – i.e. 1 standard deviation – using the @vol indicator. For example, the following formula calculates the
volatility of the last 21 bar-ranges on GBP/USD M10:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@vol,GBPUSD,10,range,21,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

27
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate the Commodity Channel Index using the @cci indicator. For example, the following formula calculates CCI using the
typical bar price for the last 14 bars on EUR/USD H1:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@cci,EURUSD,60,typical,14,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar. CCI is usually calculated on the typical bar price
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

28
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate the highest of a series of bar values using the @high indicator. For example, the following formula calculates the highest
high during the last 20 GBP/USD D1 bars:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@high,GBPUSD,D1,high,20,0")


The indicator can be applied to any bar data. For example, you can find the highest low as well as the highest high. You can also use it to
find the bar with the largest range or change.
The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

29
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate the lowest of a series of bar values using the @low indicator. The indicator can be applied to any bar data. For example,
you can find the lowest high as well as the lowest low. You can also use it to find the bar with the smallest range or change. The following
formula calculates the smallest D1 bar range during the last 20 GBP/USD D1 bars:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@low,GBPUSD,D1,range,20,0")


The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high
period Number of bars to calculate the average over
shift Bar shift, e.g. zero in order to get the current value of the indicator

30
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate the most recent swing points using the @swingh and @swingl indicators. A swing point is defined as a bar with lower
highs either side of it (or higher lows, for @swingl). These swing points are similar to the MT4 "Fractals" indicator. For example, the
following formulas finds the most recent swing-high and swing-low prices on GBP/USD M5, using a 5-bar swing (2 bars either side of
swing point) and not allowing an "unconfirmed" swing involving the current bar:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@swingh,GBPUSD,M5,high,2,0")


=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@swingl,GBPUSD,M5,low,2,0")
The indicator’s parameters are as follows. Please note that the @swingh and @swingl do not have a bar shift parameter. They only return
the most recent swing price.

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
Data to use from each bar. You normally use "high" with @swingh, and "low" with @swingl. However,
data you can use any value; for example, you can use "high" with @swingl to find a bar which has a lower high
than the bars around it.
Number of higher/lower bars required either side of the swing bar. The usual value is 2, for a five-bar
swingbars swing consisting of two lower highs/higher lows either side of the swing bar, but you can use any value
from 1 (i.e. three-bar swing) upwards.
Either 0 or 1. Zero ignores the current bar and only allows "confirmed" swings. 1 includes the current
unconfirmed bar, and allows "unconfirmed" swings which can change depending on price movements during the
current bar.

31
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

You can calculate Keltner channels using the @kelternupper and @keltnerlower indicators. A Keltner channel is an exponential moving
average plus/minus average true range. For example, the following formula calculates the lower Keltner channel on GBP/USD H1, using a
20-bar EMA minus half of 10-bar ATR:

=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@keltlower,GBPUSD,60,close,20,10,0.5,0")


Because Keltner channels are simply a combination of an EMA and ATR, the formula above is equivalent to the following:
=RTD("FXBlueLabs.ExcelRTD", , "1111714580", "@ema,GBPUSD,60,close,20,0") – (RTD("FXBlueLabs.ExcelRTD", , "1111714580",
"@atr,GBPUSD,60,10,0") * 0.5)

The indicator’s parameters are as follows:

PARAMETER MEANING
symbol Symbol name, e.g. GBPUSD
timeframe Bar timeframe, as a number of minutes or a notation such as H1 or M3
data Data to use from each bar, e.g. close or high, for calculating the EMA
emaPeriod Number of bars to use for the EMA
atrPeriod Number of bars to use for the ATR
atrMultiple Multiples of ATR to add to/subtract from the EMA
shift Bar shift, e.g. zero in order to get the current value of the indicator

32
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

Other miscellaneous data items provided by the MT4+ Excel RTD are as follows:

PROPERTY MEANING
Time of the last update from the RTD app. Will report 1/1/2000 if the RTD app is not running for the
LastUpdateTime
account.

33
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

F. SYMBOL NAMES AND STANDARDISATION


By default MT4+ Excel RTD uses standardised symbol names. All
forex symbols are converted to the form AAABBB. For example, a
name such as EUR/USD will be converted by default to EURUSD.
You can turn off this standardisation by un-ticking the option Use
standardised symbol names (1). This setting is intended for
spreadsheets where you are collecting data from multiple accounts
on different platforms, and the platforms use different symbol
names. For example, you might have something like the following
spreadsheet where there are account numbers in columns B 1

onwards, and symbol names in rows 2 onwards. You can then


have a formula which uses the symbol names in column A without
having to adjust for one account using EUR/USD and the other
using EURUSD etc. You could then fill the formula from cell B2 into B3, C2 etc. and
the cell references would automatically adjust. The
A B C CONCATENATE function in Excel simply joins two pieces of text
1 Symbol/Account 12376522 265823654 together. In the above example it is joining the text "bid" with the
2 EURUSD [see below] symbol name in column A, to produce the property name
3 GBPUSD bidEURUSD or bidGBPUSD.

34
DISPLAYING REAL-TIME DATA IN EXCEL USERGUIDE MT4+ EXCEL RTD

G. TICKET VOLUMES
MT4+ Excel RTD reports the volumes on tickets as the nominal volume, not as a lot size. For example, a size of 0.20 lots will be reported
as a volume of 20000.

35
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

MT4+ Excel RTD can also be used to send simple trading commands from VBA code in Excel. You can also programmatically read the
same data which is available via the RTD function. The features can in fact be used from any programming language which supports COM,
not just from VBA in Excel.

36
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

A. READING DATA IN VBA CODE


You can read data programmatically using the FXBlueLabs.ExcelReader object. For example:
Set reader = CreateObject("FXBlueLabs.ExcelReader")
reader.Connect ("1111714580")
MsgBox reader.Read("balance")
In other words, you create an instance of the FXBlueLabs.ExcelReader object, you use the Connect() function to link it to a specific account
number and then you can use the Read() function to get data about the account. The property names for the Read() function are the same
as the property names for use with Excel’s RTD function.

You can successfully create the ExcelReader object and call the Connect() function even if MT4+ Excel RTD is not currently running for
that account. In order to check whether data is actually available, you can use Read() to make sure that properties such as balance are not
blank, or you can read the LastUpdateTime property and check that the time is later than 1/1/2000.
If you are querying multiple pieces of data, particularly multiple pieces of ticket data, then you need to be careful about updates and data
consistency. For example, consider the following code which loops through the ticket list:
For i = 1 To reader.Read("tickets")
strSymbol = reader.Read("t" & i & "s")
vVolume = reader.Read("t" & i & "v")
Next

37
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

It is possible for the following to happen:


▪ At outset there are 2 open tickets
▪ Between the two uses of Read(), i.e. between the execution of lines 2 and 3, one of the tickets is closed.
▪ Therefore, what used to be ticket 2 becomes ticket 1.
▪ As a result, at the end of the first loop, strSymbol will hold the symbol of the ticket which is now closed, and vVolume will hold the
volume of the ticket which is still open.
To ensure consistency while reading multiple pieces of data, use Reader.ReaderLock. This will suspend any changes to the data until you
then use Reader.ReaderUnlock. For example:

Reader.ReaderLock
For i = 1 To reader.Read("tickets")
strSymbol = reader.Read("t" & i & "s")
vVolume = reader.Read("t" & i & "v")
Next
Reader.ReaderUnlock

Don’t forget to call ReaderUnlock after using ReaderLock.

38
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

B. SENDING TRADING COMMANDS FROM EXCEL


As a security measure, commands are turned off by default. You
must turn on the Accept commands setting (1) in MT4+ Excel
RTD in order to send commands successfully. If this option is
turned off then all commands will return ERR:Commands not
allowed.

39
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

You can send simple commands from Excel using the FXBlueLabs.ExcelCommand object. For example:
Set cmd = CreateObject("FXBlueLabs.ExcelCommand")
strResult = cmd.SendCommand("1111714580", "BUY", "s=EURUSD|v=10000", 5)
The SendCommand() function has four parameters:
▪ The account number (e.g. 1111714580)
▪ The command, e.g. BUY
▪ Parameters for the command, e.g. symbol and volume to buy
▪ The number of seconds to wait for a response
SendCommand() is synchronous. It returns either when MT4+ Excel RTD completes the command, or when the timeout period expires.
Timeout does not mean that the request such as a market order has been withdrawn/cancelled. It only means that the broker/platform
has not responded within the acceptable time. The return value from SendCommand() is a string, beginning either with ERR: to indicate that
an error occurred, or with OKAY:. The only exception to this is the TEST command, which returns the text HELLO.

40
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

C. COMMANDS AND PARAMETERS


The parameters for a command are sent as a pipe-delimited string, consisting of a number of settings in the format name=value. The
parameters can be listed in any order, and some parameters are optional.

cmd.SendCommand("1111714580", "BUY", "s=EURUSD|v=10000", 5)


Trading volumes are always specified as cash amounts, not as lot sizes. The format of symbol names depends on whether the Use
standardised symbol names option is turned on.

The TEST command simply returns the text HELLO if successful.


The BUY or SELL commands submit buy or sell market orders. If successful, it returns the ID of the new ticket in the form OKAY:ticket-
number.

PARAMETER OPTIONAL? MEANING


S Compulsory Symbol name for the buy order
V Compulsory Trading volume
sl Optional Stop-loss price for the new position
tp Optional Take-profit price for the new position
comment Optional Comment for the new position
magic Optional Magic number for the new position

41
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

The BUYLIMIT, SELLLIMIT, BUYSTOP, and SELLSTOP commands submit a new pending order. If successful, it returns the ID of the new
ticket in the form OKAY:ticket-number.

PARAMETER OPTIONAL? MEANING


S Compulsory Symbol name for the buy order
V Compulsory Trading volume
price Compulsory Entry price for the pending stop/limit order
sl Optional Stop-loss price for the new position
tp Optional Take-profit price for the new position
comment Optional Comment for the new position
magic Optional Magic number for the new position

The CLOSE command closes an open position or deletes a pending order. Returns OKAY:okay if successful.

PARAMETER OPTIONAL? MEANING


t Compulsory ID of the position to be closed, or the pending order to be deleted

42
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

The PARTIALCLOSE command does a partial-close of an open position. Returns OKAY:okay if successful. Volumes larger than the position
size are simply treated as a full close (not as a close plus a reverse for the remaining amount). Cannot be used on pending orders.

PARAMETER OPTIONAL? MEANING


t Compulsory ID of the position to be partially closed.
v Compulsory Volume to be closed, e.g. 20000

The REVERSE command reverses an open position, e.g. closing an open sell and replacing it with a buy. Returns OKAY:okay if successful.

PARAMETER OPTIONAL? MEANING


t Compulsory ID of the position to be partially closed.
Volume for the new reversed position. If omitted, the volume of the existing position is
v Compulsory
used (i.e. symmetrical reverse)
sl Optional Stop-loss price for the new position
tp Optional Take-profit price for the new position
comment Optional Comment for the new position
magic Optional Magic number for the new position

The CLOSESYMBOL command closes all open positions and pending orders for a specific symbol. Returns OKAY:okay if successful.

PARAMETER OPTIONAL? MEANING


s Compulsory Symbol name to close

43
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

The CLOSEALL command closes all open positions and pending orders for all symbols. Returns OKAY:okay if successful. Please note that
closing everything can require a substantial timeout.

PARAMETER OPTIONAL? MEANING


(none)

For example:
cmd.SendCommand("1111714580", "CLOSEALL", "", 20) ' 20-second timeout

The ORDERSL command changes the Stop Loss on an open trade or pending order. Returns OKAY:okay if successful.

PARAMETER OPTIONAL? MEANING


t Compulsory ID of the position to be partially closed.
sl Compulsory New Stop Loss price, or 0 to remove any existing Stop Loss

The ORDERTP command changes the Take Profit on an open trade or pending order. Returns OKAY:okay if successful.

PARAMETER OPTIONAL? MEANING


t Compulsory ID of the position to be partially closed.
tp Compulsory New Take Profit price, or 0 to remove any existing Take Profit

44
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

The ORDERMODIFY changes both the Stop Loss and Take Profit on an open trade or pending order. For pending orders, you can also
alter the entry price.

PARAMETER OPTIONAL? MEANING


t Compulsory ID of the position to be partially closed.
Compulsory for For pending orders, the new entry price for the order. Ignored and not required on open
p
pending orders trades.
sl Compulsory New Stop Loss price, or 0 to remove any existing Stop Loss
tp Compulsory New Take Profit price, or 0 to remove any existing Take Profit

45
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

The Standard error messages are the following:

PROPERTY MEANING
ERR:Need account Account value for SendCommand() is blank
ERR:Need command Command value for SendCommand() is blank
ERR:No listening app Cannot find an running instance of the RTD app for the specified account
ERR:No response within timeout No response from the broker/platform within the specified number of seconds
ERR:Commands not allowed The "Allow commands" option is not turned on in the RTD app
ERR:Unrecognised command The command value for SendCommand() is not understood by the RTD app
ERR:Missing parameters The command was missing one or more compulsory parameters

46
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

D. ASYNCHRONOUS COMMANDS
It is also possible to send commands asynchronously rather than blocking execution of the VBA code until the command completes or
times out. This works as follows:

1. You use SendCommandAsync() instead of SendCommand().


2. You periodically check the result of the asynchronous action using CheckAsyncResult().
3. When finished (or when you have decided to give up) you free up the command memory using FreeAsyncCommand()
For example:
Set cmd = CreateObject("FXBlueLabs.ExcelCommand")
lCommandId = cmd.SendCommandAsync("10915", "BUY", "s=EURUSD|v=10000", 60)
strResult = ""
While strResult = ""
strResult = cmd.CheckAsyncResult(lCommandId)
If strResult = "" Then MsgBox "Still waiting..."

Wend
cmd.FreeAsyncCommand (lCommandId)

47
SENDING TRADING COMMANDS FROM EXCEL USERGUIDE MT4+ EXCEL RTD

SendCommandAsync uses the same four parameters as SendCommand(), but returns a command ID for subsequent use with
CheckAsyncResult() and FreeAsyncCommand(), instead of returning the command result. Please note that SendCommandAsync() still has a
timeout value. You must eventually call FreeAsyncCommand() after SendCommandAsync(), or else your code will leak memory, albeit in
small amounts. CheckAsyncResult() either returns a blank string if the command is still executing and has not reached its specified timeout
or, if complete, it returns the same string response as SendCommand().

48
CONTACT US SUPPORT

Kakos Premier Tower Helpdesk Phone: +49 691 7537 4271

Kyrillou Loukareos 70 Helpdesk E-mail: support@jfdbank.com

4156 Limassol, Cyprus Live chat: Chat now!

Fax: +357 25763540 Web: www.jfdbank.com


Tel: +357 25878530

JFD is a leading Group of Companies offering financial and investment services and activities. “JFD Bank” is a brand name and
registered trademark owned and used by the JFD Group of Companies, which includes: JFD Group Ltd (ex. JFD Brokers Ltd), a
company with registration number HE 282265, authorized and regulated by the Cyprus Securities and Exchange Commission -
CySEC (Licence number: 150/11), JFD Overseas Ltd which is authorized and regulated by the Vanuatu Financial Services Commission
(License number 17933) and JFD Bank AG which is authorized and regulated by the Federal Financial Supervisory Authority (BaFin)
and by the Deutsche Bundesbank under license number 120056.

S-ar putea să vă placă și