mt4 distilled (3)
TRANSCRIPT
MT4 Distilled
Project draft prepared by Eduard Samokhvalov (Operations Specialist)
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.
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
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
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)
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
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.
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.
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
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
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)%')
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%')
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%')
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%')