bjf fix api trader

23
BJF FIX TRADER Release notes Version 1.7, November 2015

Upload: boris-fesenko

Post on 14-Apr-2017

312 views

Category:

Software


0 download

TRANSCRIPT

BJF FIX TRADER

Release notes

Version 1.7, November 2015

2

©2015 BJF Trading Group | www.iticsoftware.com

Contents

Revision history ................................................................................................................................................................. 3

Introduction ...................................................................................................................................................................... 4

1. Installation steps ........................................................................................................................................................... 5

2 Getting Started ............................................................................................................................................................... 8

2.1 Program interface ................................................................................................................................................... 8

2.2 Editing FIX Connection info. .................................................................................................................................... 8

2.3. Editing External Connection info .......................................................................................................................... 11

2.4 Connecting to FIX broker. ...................................................................................................................................... 12

2.5 Logging .................................................................................................................................................................. 13

2.6 Manual Trading ..................................................................................................................................................... 14

2.7 Book information .................................................................................................................................................. 14

3 Using FIX Trader with Metatrader 4 terminal .............................................................................................................. 15

3.1 Offline charts ......................................................................................................................................................... 15

3.2 Connecting MT4 to FIX trader ............................................................................................................................... 16

3.3 New order detection methods .............................................................................................................................. 17

3.4 Additional information .......................................................................................................................................... 19

3.5 Using EA on offline charts ..................................................................................................................................... 19

4. Socket Commands Format .......................................................................................................................................... 21

3

©2015 BJF Trading Group | www.iticsoftware.com

Revision history

Ver 1.7

1. Changed symbols Common Name format from b/q to bq (so now it will be EURUSD instead of EUR/USD).

All direct trading operations from MT4 should use symbol Common Name or will be ignored.

2. Added ability to get information about position, change position S/L and T/P and close the position.

3. Added ability to get all current pending orders.

4. INTEGRAL,CQG and MATCHTRADE fix support.

5. Expert advisors instead of scripts for FIX connection.

Ver 1.8.3

1. ADSS,BBO,CURRENEX,DUKASCOPY,FORTEXFXCM,FXPIG fix support.

2. Added ability to prescribe desirable slippage for limit FOK and IOC orders.

3. Improved stability

4

©2015 BJF Trading Group | www.iticsoftware.com

Introduction

FIX Trader software developed by BJF Trading Group is a special tool that allows

traders to apply their favorite MT4 tools and EA’s to work with FIX API market data

and trading sessions. For more details about FIX Trader project please visit

http://offers.fxpartner.net/mt4-fix-api-trading/.

5

©2015 BJF Trading Group | www.iticsoftware.com

1. Installation steps

1. Click Next.

2. Click Browse… and select the directory for MT4 terminal that will be used for

sending signals and analyses. Then click Next.

6

©2015 BJF Trading Group | www.iticsoftware.com

3. Select the program folder where FIX Trader should be installed and click Next.

Important note: If you installing next instance of the program, please make sure you

install it on the same logic disk (C:\, D:\ etc.)

4. Click Install and wait until the program is installed.

7

©2015 BJF Trading Group | www.iticsoftware.com

5. If you run the program immediately after setup is finished, leave “Launch FIX

Trader” checkbox checked. If you need to see manual leave “View FIX Trader

Manual” check box checked. Then click Finish.

8

©2015 BJF Trading Group | www.iticsoftware.com

2 Getting Started

2.1 Program interface

Important: To run the program, right click on desktop shortcut “BJF FIX Trader” and

select “Run as administrator”. The other methods of program start can make

application work unproperly.

The The FIX Trader program interface is shown on Fig.1:

Fig.1 . FIX Trader interface: 1 – Connection Status panel; 2 – Market Watch window; 3 –

Manual Trading panel; 4- Book information panel; 5- Logging tabcontrol.

2.2 Editing FIX Connection info.

To start using program, you need to edit your FIX connection parameters. You can do it

by click on menu item “FIX Connection -> Edit”. The window will appear(fig. 2):

9

©2015 BJF Trading Group | www.iticsoftware.com

Fig.2. Editing FIX Connection parameters (Market Data)

First you need to select your FIX connection provider from the list near FIX Broker label.

If the provider you need is not in the list please send an email to

[email protected].

On the Market data connection parameters tab(fig. 2) you need to specify the Market

Data connection parameters mailed to you by your FIX connection provider. Please pay

attention if you provider uses SSL or not. Also if you need to store in log all FIX

quotes/market data refresh messages for some reasons, check Full log checkbox.

On the Trading connection parameters tab(fig. 3) you need to specify the Trading

connection parameters mailed to you by your FIX connection provider. Please pay

attention if you provider uses SSL or not and if you need to provide user account for

trading.

On the Symbols tab (fig.4) you need to add the instrument you will use within the

program. To add new symbol, click Add button. The blank row in the grid will appear. In

the column Common name type or select from the list the common name of the symbol

you want to use. Once you leave the cell, all the other information in a row should be

filled automatically. FIX Name is the name of the subscription symbol for your particular

FIX provider. As different FIX providers use their own lot mapping, we introduced Lots

10

©2015 BJF Trading Group | www.iticsoftware.com

Multiplier column. When the order is translated by socket connection from MT4 or

other homemade program, the value of lot for FIX order command will be multiplied by

this value. In Digits column is stored the information how much digits is supported by

your FIX provider for this particular symbol. If your FIX provider (like LMAX) requires

security ids for symbol, in SymbolId column you need to specify that special Symbol ID

or otherwise keep in this column just different values (like 1,2,3 etc. by default).

Fig.3 Editing FIX Connection parameters (Trading connection)

Fig.4 Editing FIX Connection parameters (Symbols)

11

©2015 BJF Trading Group | www.iticsoftware.com

2.3. Editing External Connection info

After you finished with FIX credentials, it is time to set up your External connection

parameters. You can do it by clicking menu item “External Connection -> Edit”. The next

dialog will appear (fig. 5):

Fig. 5 External connection setting dialog (MT4 options)

On tab MT4 options you need to specify parameters that will be used for storing

information for MT4 offline charts. Please specify in MT4 Terminal Path the path to the

MT4 terminal you will use. In History files path please specify path to MT4 active account

history folder (the value will be set automatically after you finish editing MT4 terminal

path, but may need manual editing), including end slash.

NOTE: Please check if in the History folder of MT4 terminal except folders default,

deleted, downloads, mailbox, signals, symbolsets there is only one folder with the

same name as your MT4 active account server name. If there is more than one folder,

please remove unnecessary folders and all files with extension “hst” in that one folder

you kept.

If your MT4 broker uses additional prefixes/postfixes for symbols (as in the example on

fig. 5, LMAX uses .lmx postfix), put them in Symbol prefix / Symbol postfix fields. Save

market data checkbox is introduced for clients that will use multiply program instances

12

©2015 BJF Trading Group | www.iticsoftware.com

for the same terminal, so keep this checkbox checked only for one program instance to

avoid file i/o conflicts. In the group Symbols – Timeframes you can select what symbols

and what timeframes you need to store for offline charts. To add a timeframe, select it

from the combobox with timeframes list or type timeframe manually if you need custom

timeframes (like M2, H3 etc.) and then click Add-> button.

On tab Command socket options you need to specify the parameters that will be used

for interaction with external connections via socket (fig. 6). Command socket port is the

TCP port that FIX Trader program will use to receive trading commands commands(note:

should be different for each program instance). Events socket port is the TCP port that

program will use to send quotes, connection status and orders execution results (note:

should be different for each program instance). Open buy orders / Open sell orders

indicates if the current instance of the program is allowed to transfer buy / sell orders to

FIX provider.

Fig. 6. External connection settings (Command socket options)

2.4 Connecting to FIX broker.

Connection status panel (see fig.1) displays information about current connection state

of FIX Market Data, FIX Trading and Command Socket and Events Socket sessions.

13

©2015 BJF Trading Group | www.iticsoftware.com

To connect all the sessions, click on menu item “FIX Connection -> Connect”. If you have

provided the correct FIX credentials, FIX Market Data and Trading sessions should be

established in a couple of seconds and show “Connected” status. If during a long time

period status is still “Disconnected”, than you need to perform next steps:

1) Study input parameters for FIX very carefully to make sure you entered the same

values as provided by your broker.

2) If you are sure with 1, than check if your firewall is not blocking external connections

to server and port of your FIX provider.

3) Check if your VPS provider is not blocking your external connections to server and

port of your FIX provider

4) Contact your FIX provider and ask if the IP you are trying to connect from is

whitelisted.

5) If steps 1,2,3,4 are passed and you can telnet your FIX provider, please contact us at

[email protected] for further assistance.

2.5 Logging

In the Logging tabcontrol (see fig. 1) has 5 tabs, that contains logs for different events.

Activity log tab contains information about general application performance (session

connection/disconnections, order submission, common errors etc.).

Market data log tab contains send/received messages via FIX market data session.

Trading log tab contains send/received messages via FIX order session.

NOTE: Heartbeat messages are not stored in logs for do not overload application

memory.

Socket connection log tab contains messages received/send by command socket

from/to MT4 terminal or other external connection.

Filled orders tab contains grid with the information about the orders that were filled by

FIX provider (Order Id, Order side, Order lots, Order symbol, price at what order was

filled and fill time).

You can extract the information from logs to text buffer or file. To select the lines you

need to extract, press Shift (to select consecutive lines ) or Ctrl (to select non –

consecutive lines). To select all the lines, select first line in the log and press

14

©2015 BJF Trading Group | www.iticsoftware.com

Ctrl+Shift+End. Then right click on the log and select Copy if you want to copy selected

lines to buffer or Save if you want to save them to file.

2.6 Manual Trading

FIX Trader allows to submit orders manually and simple position control with Manual

Trading panel (see fig. 1).

To place the order manually, please select the symbol in Symbol combobox. Then please

select order type (for now only market orders are supported for manual trading). In Lots

field please specify the desired order value.

If you need position control, before placing the order, please check Algorithmic trading

checkbox. That will enable all necessary input fields.

In S/L field you need to specify initial stop loss distance (in pips) from the position

average fill price. To move s/l to breakeven price (if it is possible) click .

In T/P field you need to specify take profit distance (in pips) from the position average

fill price. To move t/p to breakeven price (if it is possible) click

To enable trailing stops, you need to put values in Trailing Stop and Trailing Step fields.

A Trailing Stop trails (moves) a stop in your favor by a specific distance as long as the

market is moving in a favorable direction. Trailing Stop trail your stop by a fixed amount

of pips (Trailing Stop) as the market moves in your favor. This results in a slower trailing

stop that waits for a certain number of pips (Trailing Step) to be accrued before moving

that amount of pips. For example, let’s say we had an initial -100 pip stop loss, that we

set to trail with a Trailing Step of 10 and Trailing Stop 50. Our stop will stay at -100 until

the price moves in our favor a full 10 pips. Once +10 pips of floating profit is reached on

the trade, our fixed-step stop would jump from -100 to -40. Our stop would then stay at

-40 until the price moved in our favor another 10 pips (then it will be set to -30).

In the Risk field please specify the balance percent you want to risk from your current

balance ( should be input in Account Balance field) and your initial S/L value.

2.7 Book information

FIX Trader allows to see full book information via Book Information panel (see fig. 1). To

enable full book display, select symbol in Symbol field and check Show books. The

maximum supported depth is 8 levels.

15

©2015 BJF Trading Group | www.iticsoftware.com

3 Using FIX Trader with Metatrader 4 terminal

3.1 Offline charts

Once the FIX Trader connected to FIX providers server and MT4 parameters are

prescribed (see section 2.3 ), the FIX Trader starting to fill the information in files that

can be used to display “offline charts”. Despite the confusing word ”offline”, that charts

can be used for online data representation and trading.

To start working the offline chart, please open your MT4 terminal and click menu item

“File -> Open offline”. You will see the next dialog (fig.7):

Fig.7 Selecting symbol and timeframe for offline chart

Please select the symbol and timeframe (from that one you provided in section 2.3 ) and

click Open.

IMPORTANT NOTE: If you want to use chart not just for indicative purposes but also for

transferring the orders opened by the EA you place on this chart to FIX Trader, press F8

on chart (or right click and select Properties), and on the tab Common uncheck

checkbox “Offline chart” (fig.8).

16

©2015 BJF Trading Group | www.iticsoftware.com

Fig.8 Making offline chart available for trading from EA

3.2 Connecting MT4 to FIX trader

To connect MT4 to FIX Trader for transferring orders to FIX providers, put EA “Fix

Commands Connector EA” on the chart (fig.9). In script inputs, in

port_4_buy_commands/ port_4_sell_commands specify the port on which the running

instance of program is responsible for sending buy/sell orders. If you are using single

instance of the program, this ports should coincide. NewOrderDetectionMethod stands

for the method the new order in terminal will be detected: 0 – for Automatic method

and 1 for Manual method (see section 3.3 for explanations).

To connect MT4 to FIX Trader to receive order execution reports and quotes, put EA “Fix

Events Connector EA” on the chart. In script inputs, in port_4_events specify the port on

which the running instance of program will send quotes and execution reports.

NOTE: For running the connector scripts, you need to select for chart you are planning

to run them on, the symbol that is not used for collecting market data from FIX (see

section 2.3).

17

©2015 BJF Trading Group | www.iticsoftware.com

Fig. 9 Launching script to connect to MT4

3.3 New order detection methods

There are two ways for script to detect the new order request appearance. For users,

that do not have source code (mq4 files) of the EA, only Automatic method is

acceptable. In this case the script will catch new order request from terminal as soon as

it appears in terminal info and transfer it to the FIX Trader (please note, that script

catches not order execution event but sending event).

With Manual method in the source code of the EA before OrderSend and OrderClose

commands should be inserted line of the code that creates new Global Variable with the

name that contains information about the orders. The template for the Global Variable

name is (see Table 1 for proper values):

SO_ClientOrderID_OrderSIde_OrderType_OrderLots_OrderSymbol_OrderStopPrice_Ord

erLimitPrice_OrderSlippage_OrderTTL

So, for example, to open new market order to sell 0.1 EURUSD you need to insert next

line before order send command:

GlobalVariableSet("SO_3819696185399_1_1_0.1_EURUSD”,0);

To close that order, you need to insert next line before order close command:

GlobalVariableSet("SO_3819696186899_0_1_0.1_EURUSD”,0);

18

©2015 BJF Trading Group | www.iticsoftware.com

To open the new limit order to sell 0.1 EURUSD at 1.42345 you need to insert next line

before order send command:

GlobalVariableSet("SO_3819696185399_1_2_0.1_EURUSD_0_1.42345_0_0”,0);

To open the new stop order to buy 0.1 EURUSD at 1.42345 you need to insert next line

before order send command:

GlobalVariableSet("SO_3819696185399_0_3_0.1_EURUSD_1.42345_0_0_0”,0);

NOTE: Do not delete the created global variables, they will be automatically deleted

from the script when the order command is transferred to FIX Trader.

NOTE: To generate unique ClientOrderId in MQL4 you need to use following code

construction:

MathSrand(GetTickCount());

string ClOrderId = IntegerToString(GetTickCount())+IntegerToString(MathRand());

Once the order is executed and transferred from FIX trader, the new global variable will

appear in format:

RO_ClOrderId_OrderSide_OrderType_OrderLots_OrderSymbol_OrderPrice_StopPrice_Li

mitPrice_OrderStatus_NewClOrderId

where ClOrderId coincides with the ClOrderId that was sent, OrderStatus can have 4

values: 1 – filled; 2 – opened; 3 – rejected; 4 – canceled, NewClOrderId – new client

order Id for order modify command.

To Cancel existing pending order, create a global variable

CO_ClOrderId_OrderSide

To Modify existing pending order, create a global variable

MO_ClOrderId_OrderSide_OrderType_OrderLots_OrderSymbol_StopPrice_LimitPrice

The positions on symbols received from Fix Trader, are stored in the global variables in

format:

SETPOS_Symbol_AvgFillPrice_StopLoss_TakeProfit_OpenTime

19

©2015 BJF Trading Group | www.iticsoftware.com

The value of the global variable represents the position size (value is positive if the

position is long, and negative if the position is short). OpenTIme has aUnix Timestamp

format (integer number of seconds that have elapsed since 00:00:00 Coordinated

Universal Time (UTC), Thursday, 1 January 1970).

To request the position information, you need to create global variable in format:

GETPOS_Symbol_0_0_1

To modify the position, you need to create global variable in format:

GETPOS_Symbol_NewPositionStopLoss_NewPositionTakeProfit_2

To close the position, you need to create global variable in format:

GETPOS_Symbol_0_0_3

3.4 Additional information

Quotes for symbols are also stored in global variables with names

FIXTRADER_SymbolName_Side (Side can take the values BID and ASK). Available

volumes are stored in global variables with names FIXTRADER_SymbolName_VOLSide

(Side can take the values BID and ASK). Last tick times are stored in global variables with

names FIXTRADER_SymbolName_Side_TIME(global variable value is local PC UNIX

time). For the example of usage of global variables please see EA

The Market data Session status and Trading Session status are stored in global variables

Status_MarketData and Status_Trading (value 0 means disconnected and 1 means

connected).

FIX Broker name is stored in global variable FIXBROKER_BrokerName.

Symbol digits are stored in global variables DIGITS_SymbolName.

3.5 Using EA on offline charts

Before placing the EA on offline chart to start trading, please make sure automated

trading is allowed and “Offline chart” checkbox is unchecked (see section 3.1). For

testing you can use the EA NewBarCatcher, that will appear in your MT4 terminal after

program installation. It is very simple EA, its logic is the next: if there is no opened orders

(with particular magic number) on symbol on bar opening, it opens new sell order.

Otherwise, if the orders exists, it closes it. The source code of EA is available as

20

©2015 BJF Trading Group | www.iticsoftware.com

illustration to section 3.3. Furthermore, in file FixTraderFunctions.mqh you can find

already realized functions for orders commands via global variables.

21

©2015 BJF Trading Group | www.iticsoftware.com

4. Socket Commands Format

It is possible to use FIX Trader with other homemade software products. The exchange

protocol for socket messages is fairy simple and FIX – like. It contains pairs ”tag=value”

separated by “|” character. The correct tags for orders and quotes are listed in the

tables below:

Table 1. Orders command/event

Tag Description Required Type Allowed values 1 Command type Yes integer 1

100 Client order Id Yes string Unique value

101 Order request type Yes integer 1 – market 2 – limit 3 – stop

102 Order side Yes integer 0 – buy 1 - sell

103 Order symbol Yes string

104 Order lots Yes double 105 Order price No double

106 Order stoploss No double 107 Order takeprofit No double

108 Order status No integer 1 – filled 2 – opened 3 – rejected 4 – canceled 5 - replaced

109 Order slippage No double

110 Order TTL No integer 111 New Client OrderId No string Only when 108 = 5

Table 2. New quote event

Tag Description Required Type Allowed values

1 Command type Yes integer 2 200 Symbol Yes string

201 BidPrice Yes double 202 AskPrice Yes double

203 BidVolume Yes double

204 AskVolume Yes double

22

©2015 BJF Trading Group | www.iticsoftware.com

Table 3. Session status change event

Tag Description Required Type Allowed values

1 Command type Yes integer 3 300 Session type Yes integer 0 – market data

1 – orders 301 Session status Yes integer 0 – disconnected

1 – connected

Table 4. General information

Tag Description Required Type Allowed values 1 Command type Yes integer 4

400 Information type Yes integer 1 – Broker name 2 – Instrument digits

401 Information value Yes String 200 Symbol No String

Table 5. Order cancel/modification command

Tag Description Required Type Allowed values

1 Command type Yes Integer 5 100 Client order Id Yes string Unique value

101 Order request type Yes integer 1 – market 2 – limit 3 – stop

102 Order side Yes integer 0 – buy 1 - sell

103 Order symbol Yes string

104 Order lots Yes double

105 Order price No double 106 Order stoploss No double

107 Order takeprofit No double 112 Operation Y integer 1 – cancel

2 - modify

23

©2015 BJF Trading Group | www.iticsoftware.com

Table 6. Position management command

Tag Description Required Type Allowed values

1 Command type Yes Integer 6 103 Position symbol Yes string

104 Position size Yes double positive for long negative for short

zero – position closed 105 Position avg price No double

106 Position stoploss No double 107 Position takeprofit No double

112 Operation Yes integer 1 – get info 2 – modify 3 – close

113 Text message No string

114 Position open time Yes long integer UNIX Timestamp

Table 7. Pending orders management command

Tag Description Required Type Allowed values

1 Command type Yes Integer 7 101 Order type Yes Integer 2 – limit

3 – stop 103 Order symbol Yes string

112 Operation Yes integer 1 – get info