mt4 distilled (3)

14
MT4 Distilled Project draft prepared by Eduard Samokhvalov (Operations Specialist)

Upload: eduard-samokhvalov

Post on 12-Apr-2017

226 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Mt4 distilled (3)

MT4 Distilled

Project draft prepared by Eduard Samokhvalov (Operations Specialist)

Page 2: Mt4 distilled (3)

WHY TIME: instant results

It takes time to solve user error, in the worst case the chain is:

CLIENT -> SALES -> ETRADING -> METAQUOTES -> ETRADING -> SALES -> CLIENT

EVEN some users are hesitating to call to Support because they don’t want to

show their inconvenience, these clients are often lost for the company because

they prefer to open accounts with another broker where things works right away.

CONVENIENCE: empowering clients

• Maintained database of errors empowers clients

to use MT4 more conveniently, induces a feeling of safety

and power associated with SQ entity.

Page 3: Mt4 distilled (3)

WHAT & HOW

1. Online database that stores regular expressions for every known MT4 error and is

daily updated with new errors by clients (user driven content).

2. SQ employees are maintaining the database by providing descriptions for

unrecognized error entries.

3. MT4 installer will be added a script which takes all log files from installation directory

and uploads them to this tool on SQ web site, then results are shows to user

4. If error string is not recognized by SQ database, user is directed to MQL4.COM

search by including information (parsed and cleaned from timestamps) in URL

parameter string, eg: http://www.mql4.com/search#!keyword=error%20127

Page 4: Mt4 distilled (3)

DATA FLOW

Client’s

MT4

terminal

Script

sends

logs

SQ Knowledge Base

Error string found?

HTTP

upload yes

Solution(s) shown to user

Error Solution

Err 1 Solution 1

Err 2 Solution 2

… …

Err N Solution N

no Send string(s) + log files

SQ Team

Update database with regexes & solutions

no

Redirect to MQL4.COM

And other useful forums

Certain dedicated articles can be shared on

FB to promote SQ

Search string directly

From the web site

Client receives his

personal error report Network

EA

Signals

Execution

Live Update

Server config

Generation of Reports

on every client’s issues

for the Sales Team

Page 5: Mt4 distilled (3)

DRAFT WORKTIME ESTIMATES

Task Time required

(pessimistic)

Can be done in parallel with other tasks?

1. MQL script to upload logs to SQ 3-10 working days Requires (7)

2. Include script in MT4 installer 7 working days Requires (1)

3. GUI design for web site 1 month Yes

4. Site usability testing and GUI

enchaining

2 month of active

daily use

No

5. Project plan preparation, description

of database tables, algorithms and

reports

10 working days No

6. Preparation of development

environment

2-3 working days Yes, partly requires (5) to know which

development tools will be used

7. Coding of web site with all functionality 3 months

(depends on who &

how)

Requires (3,5,6)

Page 6: Mt4 distilled (3)

INFRA & PROCESS PHASE 1

Testing VPS machine with LAMP setup and Ruby on Rails or any other framework

installed. Start as an internal project. Meanwhile neat CSS for web site is

developed.

PHASE 2

• Production version with neat GUI implemented

• Marketing campaign on social networks and FX related resources started

Page 7: Mt4 distilled (3)

MAINTAINANCE

Initially the system is loaded with descriptions/suggestions corresponding to

about 300 errors. Once the tool reaches it’s popularity peak, we will have new

issues coming every day (especially on the release of new versions of MT4).

Unique errors string which are not found in the database will be automatically

sent to a queue for ETRADING support teams to work on them and update the

database with new solutions.

Page 8: Mt4 distilled (3)

2 IN 1: USEFUL TOOL + “LANDING PAGE”

Since the tool will be dedicated to wide audience of MT4 users, some of them will be

coming to our web site not having a trading account in SQ. Using this product they will

be grateful to SQ already. Why not convert them right away?

If user error string can not be recognized, they will be asked to enter their contact

details, so that they are contacted when solution is found and added to database,

This will give them a feel of very personal approach as well as feeling of collaboration.

Finally Sales will already have a pitch story when they contact them informing about a

solution to error found. Help & convert.

Page 9: Mt4 distilled (3)

BENEFITS FOR THE COMPANY • NEW PRODUCT ON THE MARKET

• Simple product with 0 time learning curve

• Shows that SWISSQUOTE has deep expertise in Automated Trading and MT4

• Customer support becomes faster

• Customer support becomes more convenient for client 24/7: he just runs script on

MT4, and it shows him instant result from our database of errors

• We get more data and clients collaborate by sharing their experience

(collaboration is an important factor of gamification* approach).

Deeper relationships with clients as they feel that their input matters.

• New clients come to us from people who found this tool by word of mouth

(and paid ads)

* Swissquote’s new web site www.swissquote.eu is build around game-like design, so it’s matching the image

Page 10: Mt4 distilled (3)

Appendix: Error Strings Query

48,599 Log files from old VPS:

MT4 EA logs

MT4 Terminal Logs

MAM Client logs

6,334,733 Log Lines

13 Error Categories discovered (for stats in user personal log report): MT4 Terminal Errors

Networking related errors

MQL Market

Signals service

Code Base

Technical errors related to file system

HistoryBase

LiveUpdate

Help Files

Errors related to orders

MAM Errors

Errors related to MT4 Server limitations/policies/configs

GUI related

Page 11: Mt4 distilled (3)

Appendix: Error Strings Query

/* 6,334,733 log lines from VPS were parsed */

SELECT DISTINCT Line FROM `vps-mt4` WHERE

/* these are general keywords related to issues */

(Line like '%wrong%'

or Line like '%error%'

or Line like '%reject%'

or Line like '%invalid%'

or Line like '%locked%'

or Line like '%fail%'

or Line like '%cannot%'

or Line like '%blocked%'

or Line like '%intruder%'

or Line like '%requote%'

or Line like '%offquote%'

or Line like '%bad%'

or Line like '%off%'

or Line like '%no%'

or Line like '%not%'

or Line like '%check%'

or Line like '%unallowed%'

or Line like '%try%'

or Line like '%again%'

or Line like '%multiple%'

or Line like '%long%'

or Line like '%wait%'

or Line like '%working%'

or Line like '%low%'

or Line like '%too%'

)

/* MT4 Terminal Errors */

and (Line not like '%Login failed: Invalid account%')

and (Line not like '%login failed (Invalid account)%')

and (Line not like '%login failed (Common Error)%')

and (Line not like '%login failed: Common Error%')

and (Line not like '%TradeConLine: wrong request id%')

and (Line not like '%connect failed [Old version]%')

and (Line not like '%connect failed [Invalid account]%')

and (Line not like '%connect failed [No connection]%')

and (Line not like '%cannot connect to server%')

and (Line not like '%failed [Not enough money]%')

and (Line not like '%cannot login [No connection]%')

and (Line not like '%cannot login [Old version]%')

and (Line not like '%cannot login [Invalid account]%')

and (Line not like '%cannot login to:%')

and (Line not like '%cannot change password [No connection]%')

/* MQL Market */

and (Line not like '%MQL4 Market: failed send request (send request failed [12007])%')

and (Line not like '%MQL4 Market: failed to load products (send request failed [12007])%')

and (Line not like '%MQL5.community: authorization failed%')

and (Line not like '%MQL4 Market: failed to get list of user products [403]%')

and (Line not like '%MQL5.community: authorization failed%')

and (Line not like '%DataCenter connecting failed%')

/* networking related errors */

and (Line not like '%Login failed: Network problem%')

and (Line not like '%TradeContext: ping error%')

and (Line not like '%connect failed%')

and (Line not like '%order % failed [Invalid account]%')

and (Line not like '%FTP: cannot determine host address%')

and (Line not like '%Publisher: error connecting to%')

and (Line not like '%Publisher: invalid FTP settings (Tools->Options->Publisher)%')

and (Line not like '%FTP: no connection%')

and (Line not like '%mping switch (No connection)%')

and (Line not like '%No connection)%')

Page 12: Mt4 distilled (3)

Appendix: Error Strings Query /* Signals service */

and (Line not like '%Signal - failed connect to server - login.mql5.com%')

and (Line not like '%Signal - failed send data [403]%')

and (Line not like '%Signal - failed parse json data%')

and (Line not like '%Signal - failed send data%')

and (Line not like '%Signal - failed parse signals%')

and (Line not like '%Signal - not found update signal % in base%')

and (Line not like '%Signal - failed connect to server login.mql5.com%')

and (Line not like '%Signal - failed write data [112]%')

and (Line not like '%Signal - synchronization terminated, local positions do not correspond to signal provider%')

and (Line not like '%Signal - synchronization failed, processing of trade actions disabled%')

and (Line not like '%Signal - local positions % do not correspond to signal provider, processing of trade actions disabled%')

and (Line not like '%Signal - to subscribe, not enough money%')

and (Line not like '%Signal - mismatch SL/TP for position %, trying to fix%')

and (Line not like '%Signal - failed to update stop levels of position%')

and (Line not like '%Signal - failed to start thread%')

and (Line not like '%Signal - subscription is not synchronized, trade% ignored')

and (Line not like '%Signal - position % does not exist on signal provider account, trying to close%')

and (Line not like '%Signal - subscription not found%')

and (Line not like '%Signal - synchronization terminated, cannot copy position%')

and (Line not like '%Signal - mismatch of position volume, trying to fix%')

and (Line not like '%Signal - closed volume % below trade symbol minimal trade volume %, correct closed volume to%')

and (Line not like '%Signal - symbol % not found%')

and (Line not like '%Signal - local position %is equal to the signal one %, no changes are made%')

and (Line not like '%Signal - synchronization terminated, cannot correct position%')

and (Line not like '%Signal - failed to close position%')

and (Line not like '%Signal - cannot close position%')

and (Line not like '%Signal: \'%\': failed get list of signals,connection error%')

and (Line not like '%Signal - account equity is below allowed value%')

and (Line not like '%Signal - no subscription or subscription is expired/canceled%')

and (Line not like '%Signal - account equity is below allowed value%')

and (Line not like '%Signal - agrees to the terms of use of the signal service for \'Now\'%')

and (Line not like '%Signal - subscribe to signal \'Now\' started%')

and (Line not like '%Signal - subscribe to signal \'Now\' successful%')

and (Line not like '%Signal - \'Now\' for \'%\' subscription found, % expiration, enabled%')

and (Line not like '%Signal - \'Now\' for \'%\' subscription found, % expiration, disabled%')

and (Line not like '%Signal - unsubscribe to signal \'Now\' started%')

and (Line not like '%Signal - unsubscribe from signal \'Now\' successful%')

and (Line not like '%Signal - agrees to the terms of use of the signal service for \'Now\'%')

and (Line not like '%Signal - failed to copy position%')

and (Line not like '%Signal - failed send signal description [send request failed [12002]],[0]%')

and (Line not like '%Signal - failed send signal description [404]%')

and (Line not like '%Signal - failed to link signal position%')

and (Line not like '%Signal - cannot to close position % probably position(s) is already closed%')

and (Line not like '%Signal - failed to link signal position%')

and (Line not like '%Signal - agrees to the terms of use of the signal service for%')

and (Line not like '%Signal - subscribe to signal %started%')

and (Line not like '%Signal - subscribe to signal % started%')

and (Line not like '%Signal - \'%\' for \'%\' subscription found,%expiration, enabled%')

and (Line not like '%Signal - \'%\' for \'%\' subscription found, % expiration, disabled%')

and (Line not like '%Signal - unsubscribe to signal \'%\' started%')

and (Line not like '%Signal - unsubscribe from signal \'%\' successful%')

and (Line not like '%Signal - trade request failed [Market is closed]%')

and (Line not like '%Signal - failed send signal description [receive response failed [12002]],[0]%')

and (Line not like '%Signal - local position % volume exceeds the signal one %, trying to fix%')

/* Code Base */

and (Line not like '%Code Base: failed connect to server - codebase.mql4.com [80]%')

and (Line not like '%Code Base: failed connect to server - data.mql5cdn.com [80]%')

and (Line not like '%Code Base: failed connect to server - content.mql5cdn.com [80]%')

and (Line not like '%Code Base: failed send request to server \'codebase.mql4.com\' [503]%')

and (Line not like '%Code Base: failed send request to server \'codebase.mql4.com\' [503]%')

and (Line not like '%Code Base: failed send request to server \'codebase.mql4.com\' [404]%')

and (Line not like '%Code Base: failed read content from server \'codebase.mql4.com\'%')

and (Line not like '%Code Base: failed parse codes%')

Page 13: Mt4 distilled (3)

Appendix: Error Strings Query

/* Techincal errors related to file system */

and (Line not like '%failed [Not enough money]%')

and (Line not like '%cannot delete file%')

and (Line not like '%CreateFile Failed%')

and (Line not like '%[Error] - File could not be written...%')

and (Line not like '%Cannot open file%')

and (Line not like '%Cannot save template \"%\" for deleted chart%')

/* HistoryBase */

and (Line not like '%HistoryBase: % errors in%')

and (Line not like '%HistoryBase: create folder \'%\' failed, check permissions')

and (Line not like '%HistoryBase: invalid database header for%')

and (Line not like '%HistoryCenter: % open failed%')

and (Line not like '%HistoryCenter: % write failed%')

and (Line not like '%HistoryCenter: cannot connect to history.metaquotes.net:80%')

/* LiveUpdate */

and (Line not like '%LiveUpdate.exe failed [5]%') /* need write access to directory where installed */

and (Line not like '%LiveUpdate: % updated%')

and (Line not like '%LiveUpdate: updater - elevated updater start failed [1223]%')

and (Line not like '%LiveUpdate: updated file start failed [%][/update % /portable][1260]%')

and (Line not like '%LiveUpdate: updated file start failed [%][/update % /portable][1223]%')

and (Line not like '%LiveUpdate: updater - files update failed%')

and (Line not like '%LiveUpdate: copy error from % to % [32]')

and (Line not like '%LiveUpdate: updater - files update failed%')

and (Line not like '%LiveUpdate: MQL4 archive open error%')

and (Line not like '%LiveUpdate: updater - try to close terminal%')

and (Line not like '%LiveUpdate: updater - try to close MetaViewer%')

and (Line not like '%LiveUpdate : failed to update % [5]%')

and (Line not like '%LiveUpdate: download of \'%\' failed%')

and (Line not like '%Migration: data migration finished, no virtual folder%')

/* Help Files */

and (Line not like '%Help: failed to check version [302]%')

and (Line not like '%Help: failed to save file%')

and (Line not like '%Books base file write error%')

/* EA Errors to filter out*/

and (Line not like '%,H1%')

and (Line not like '%,M1%')

and (Line not like '%,M30%')

and (Line not like '%,M60%')

and (Line not like '%,M5%')

and (Line not like '%,H4%')

and (Line not like '%,Daily%')

and (Line not like '%Custom indicator%')

/* EA errors that are supported */

and (Line not like '%Automated trading disabled%')

and (Line not like '% is not expert and cannot be executed%')

and (Line not like '%Cannot load % [126]')

and (Line not like '%Cannot call %, % is not loaded%')

and (Line not like '%Cannot call %, DLL is not allowed%')

and (Line not like '%Expert % is not custom indicator and will be removed%')

/* errors related to orders */

and (Line not like '%modification of pending order % failed [Trade timeout]%')

and (Line not like '%modification of invalid order%')

and (Line not like '%order % failed [Market is closed]')

and (Line not like '%failed [Trade context is busy]%') /* with order sell/buy/modify */

and (Line not like '%failed [Off quotes]%')

and (Line not like '%failed [Trade is disabled]%')

and (Line not like '%failed [Trade timeout]%')

and (Line not like '%failed [Invalid volume]%')

and (Line not like '%TradeContext: wrong request id % instead of%')

and (Line not like '%deleting of invalid order%')

Page 14: Mt4 distilled (3)

Appendix: Error Strings Query

/* MAM Errors */

and (Line not like '%Pumping switch failed: No connection%')

and (Line not like '%pumping switch (No connection)%')

and (Line not like '%request Data Servers configutation (No connection)%')

and (Line not like '%request Data Servers configutation (Not enough rights)%')

and (Line not like '%Unable to connect to server: No connection%')

and (Line not like '%Processor thread error%')

and (Line not like '%Processor thread error: THREAD_UPDATE_USERS timeout%')

and (Line not like '%Credits: authorization for \'%\' failed%')

and (Line not like '%Credits: connection failed%')

and (Line not like '%Memory handler: cannot allocate %bytes of memory')

and (Line not like '%ping failed%')

and (Line not like '%investor mode [trades are not allowed]%')

and (Line not like '%Connect (No connection)%')

and (Line not like '%Credits: authorization failed (503)%')

and (Line not like '%Credits: authorization failed (404)%')

and (Line not like '%Credits: authorization failed (receive response failed [12002])%')

and (Line not like '%switch (No connection)%')

and (Line not like '%(No connection)%')

and (Line not like '%Credits: authorization failed (send request failed [12002])%')

and (Line not like '%configutation (Unknown error)%')

and (Line not like '%Credits: authorization failed (send request failed [12007])%')

and (Line not like '%Credits: authorization failed (500)%')

and (Line not like '%nown error)%')

/* Errors related to MT4 Server configs */

and (Line not like '%[Modification denied. Order too close to market]%')

and (Line not like '%[Common error]%')

and (Line not like '%[Invalid parameters]%')

and (Line not like '%[Invalid S/L or T/P]%')

and (Line not like '%cannot change password [Not enough rights]%')

and (Line not like '%cannot change password [Invalid account]%')

/* GUI related */

and (Line not like '%PenCollector: cannot load the cursor (103)%')

and (Line not like '%PenCollector: cannot load the cursor (104)%')

and (Line not like '%PenCollector: cannot load the cursor (110)%')

/* MISC - not errors */

and (Line not like '%order % was modified%')

and (Line not like '%order % at price%')

and (Line not like '%Notifications:%')

and (Line not like '%multiple close by%')

and (Line not like '%modify order % sell % at % ->%')

and (Line not like '%order % market%')

and (Line not like '%pending order sell limit%')

and (Line not like '%modifying pending order%')

and (Line not like '%modify pending order%')

and (Line not like '%delete pending order%')

and (Line not like '%order was opened%')

and (Line not like '%Mail:%')

and (Line not like '%Cannot find % in %')

and (Line not like '%modify order%')

and (Line not like '%pending order buy limit%')

and (Line not like '%Signal - subscribe to signal % successful%')