TARGET AUDIENCE: MT4 PROGRAMMERS
I'm going to put utility libraries here in this thread.
These are NOT indicators, but are IMPORTABLE utility functions and "objects" that can help make some tasks easier for developers.
For each library, I will include the source code (MQ4) file, and a MQH file with the #IMPORTS in it that you can then simply #INCLUDE in your own indicators.
Two very important points to keep in mind:
The #INCLUDE (MQH) files need to be placed in the experts:INCLUDES folder. The MQH files are simple text files and do not need to be compiled.
The #IMPORT (MQ4 Libraries) files need to be placed in the experts:LIBRARIES folder. The MQ4 files, after placed into the LIBRARIES folder, do need to be compiled.
SNS DEVELOPER TOOL SERIES (SNS DTS)
Moderator: moderators
- snscott
- rank: 50+ posts
- Posts: 60
- Joined: Sun May 24, 2009 2:15 pm
- Reputation: 0
- Location: Great Republic Of Texas
- Real name: Steven Scott
- Gender:
SNS DEVELOPER TOOL SERIES (SNS DTS)
Last edited by snscott on Tue Dec 01, 2009 8:42 pm, edited 1 time in total.
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.
- snscott
- rank: 50+ posts
- Posts: 60
- Joined: Sun May 24, 2009 2:15 pm
- Reputation: 0
- Location: Great Republic Of Texas
- Real name: Steven Scott
- Gender:
SNS_OBJECTLIBRARY
SNS_ObjectLibrary
Version 2.0 11/29/2009
This is the source code (MQ4) and #include (MQH) file for the "utilities" library that I use in most of my indicators. It is an accumulation of commonly used functionality that I found I was typing or cut-n-pasting over and over again so I decided to gather all that common stuff together into one #IMPORT file.
Obviously, this library will be modified and expanded over time as I add more commonly used functions.
Any cool/useful and reusable functions like this that you have that you think would fit in here and you'd like to share, send me a note and I'll certainly consider adding it to this library.
[hr]By no means did I write all these utility functions myself - several of them come from indicators written by various other coders
[hr]
REMINDER: Library files go into the experts/LIBRARIES folder and the #include (NQH) files go into the experts/INCLUDES folder.
[hr]
VERSION HISTORY
11/29/2009 v2.0 Initial public release of source code
[hr]
Version 2.0 11/29/2009
This is the source code (MQ4) and #include (MQH) file for the "utilities" library that I use in most of my indicators. It is an accumulation of commonly used functionality that I found I was typing or cut-n-pasting over and over again so I decided to gather all that common stuff together into one #IMPORT file.
Obviously, this library will be modified and expanded over time as I add more commonly used functions.
Any cool/useful and reusable functions like this that you have that you think would fit in here and you'd like to share, send me a note and I'll certainly consider adding it to this library.
[hr]By no means did I write all these utility functions myself - several of them come from indicators written by various other coders
[hr]
REMINDER: Library files go into the experts/LIBRARIES folder and the #include (NQH) files go into the experts/INCLUDES folder.
[hr]
VERSION HISTORY
11/29/2009 v2.0 Initial public release of source code
[hr]
- Attachments
-
- SNS_ObjectLibrary.zip
- Put and compile MQ4 file into the LIBRARIES folder and put the MQH file into the INCLUDES folder.
- (45.79 KiB) Downloaded 238 times
Last edited by snscott on Thu Dec 03, 2009 9:29 pm, edited 4 times in total.
- snscott
- rank: 50+ posts
- Posts: 60
- Joined: Sun May 24, 2009 2:15 pm
- Reputation: 0
- Location: Great Republic Of Texas
- Real name: Steven Scott
- Gender:
SNS_TABLE_OBJECT
SNS_TABLE_OBJECT
This utility is an attempt to make it easier for developers to provide tables of data in their indicators . Commonly referred to as "gauges".
Normally a developer has to painstakingly code several OBJECT creation and setting calls for each and every item shown on a data chart.
Using this #import-able Table Object, developers simply have to provide arrays of information such as row and column coordinates and font settings for each "cell" in the table. Then, putting data into any given cell is as simple as:
While MQL4 is not an "object oriented" programming language like JAVA or C#, I have tried to maintain the spirit of OOP in how I created the API for this utility/tool. The convention I have tried to consistently follow, in an attempt to make my MQL4 code "feel" more like an object oriented language, is to use naming for variables and functions like this:
<object name>.<variable or function>
For example:
I have also provided two example indicators using the Table Object Library. One, SNS_#TABLE is a pretty simple "do nothing" example that puts a 2 row, 3 column gauge on the screen. It demonstrates the case where you want to provide externally adjustable settings to everything in your table such as coordinates and font settings. This simple example provides "cut-and-paste" reusable code that you can easily lift and drop into your own indicators.
The other sample is a modified version of the TRO_DRAGON_MONEY_MANGEMENT indicator renamed to SNS_MONEY_MGMT and provides a subset of the market/money management information that TRO's full-blown indicators provides (I shortened it down to the bits of data that I, personally, was particularly interested in).
Note that there seems to be some bug in MT4 in indicators that make use of some of the MARKETINFO() calls which results in the information not displaying until you open the indicator for editing and then close it without changing anything. I'm still trying to track down what is causing this, but it is an issue with or without the Table Object.
REMINDER: Library files go into the experts/LIBRARIES folder and the #include (MQH) files go into the experts/INCLUDES folder.
[hr]
VERSION HISTORY
11/30/2009 v1.0 [BETA] Beta Release
12/03/2009 v1.0a [BETA] Fixed bug with location of mqh file
[hr]
This utility is an attempt to make it easier for developers to provide tables of data in their indicators . Commonly referred to as "gauges".
Normally a developer has to painstakingly code several OBJECT creation and setting calls for each and every item shown on a data chart.
Using this #import-able Table Object, developers simply have to provide arrays of information such as row and column coordinates and font settings for each "cell" in the table. Then, putting data into any given cell is as simple as:
Code: Select all
Table.SetText(2,3,"Something");
While MQL4 is not an "object oriented" programming language like JAVA or C#, I have tried to maintain the spirit of OOP in how I created the API for this utility/tool. The convention I have tried to consistently follow, in an attempt to make my MQL4 code "feel" more like an object oriented language, is to use naming for variables and functions like this:
<object name>.<variable or function>
For example:
Code: Select all
Table.SetText(int row, int col, string text);
I have also provided two example indicators using the Table Object Library. One, SNS_#TABLE is a pretty simple "do nothing" example that puts a 2 row, 3 column gauge on the screen. It demonstrates the case where you want to provide externally adjustable settings to everything in your table such as coordinates and font settings. This simple example provides "cut-and-paste" reusable code that you can easily lift and drop into your own indicators.
The other sample is a modified version of the TRO_DRAGON_MONEY_MANGEMENT indicator renamed to SNS_MONEY_MGMT and provides a subset of the market/money management information that TRO's full-blown indicators provides (I shortened it down to the bits of data that I, personally, was particularly interested in).
Note that there seems to be some bug in MT4 in indicators that make use of some of the MARKETINFO() calls which results in the information not displaying until you open the indicator for editing and then close it without changing anything. I'm still trying to track down what is causing this, but it is an issue with or without the Table Object.
REMINDER: Library files go into the experts/LIBRARIES folder and the #include (MQH) files go into the experts/INCLUDES folder.
[hr]
VERSION HISTORY
11/30/2009 v1.0 [BETA] Beta Release
12/03/2009 v1.0a [BETA] Fixed bug with location of mqh file
[hr]
- Attachments
-
- SNS_TABLE_OBJECT.zip
- Includes two sample indicators that use the TABLE OBJECT library - one a simple example of usage and the other a modified version of TRO's money management indicator to show a "real world" example.
- (155.03 KiB) Downloaded 231 times
Last edited by snscott on Fri Dec 04, 2009 4:23 am, edited 2 times in total.
- snscott
- rank: 50+ posts
- Posts: 60
- Joined: Sun May 24, 2009 2:15 pm
- Reputation: 0
- Location: Great Republic Of Texas
- Real name: Steven Scott
- Gender:
SNS_TABLE_OBJECT v1.0a [BETA]
SNS_TABLE_OBJECT
Version 1.0a [BETA] 12/03/2009
Fixed a small, but annoying bug with where it looked for the MQH library/header file to include.
[hr]
Note to new MT4 programmers:
MQL4 allows for two ways of using the #INCLUDE directive which affects where the compiler looks for the MQH header file to include.
The MQL4 preprocessor replaces the above line(s) with the content of the specified MQH file. In other words, it INLCUDES the contents of the MQH file in-whole at that point.
Surrounding the file name with <angle brackets> mean that the MQH file will be taken from the default directory (usually MT4/experts/include). The current directory is not searched.
If the file name is enclosed in "quotation marks", the search will be performed in the current directory (where the main file of the source code is located). The standard default directory is not searched.
So, obviously, using <angle brackets> is much better (IMHO) than using quotation marks. In the original release of this code, I accidentally left the include using quotation marks. Version 1.0a fixes that by replacing the quotes with brackets.
[hr]
Sorry for any inconvenience this may have caused. :oops: (But that is the nature of BETA releases)
Updated version located in orignal SNS_TABLE_OBJECT post in this thread.
Version 1.0a [BETA] 12/03/2009
Fixed a small, but annoying bug with where it looked for the MQH library/header file to include.
[hr]
Note to new MT4 programmers:
MQL4 allows for two ways of using the #INCLUDE directive which affects where the compiler looks for the MQH header file to include.
Code: Select all
#include "file_name
#include <file_name>
The MQL4 preprocessor replaces the above line(s) with the content of the specified MQH file. In other words, it INLCUDES the contents of the MQH file in-whole at that point.
Surrounding the file name with <angle brackets> mean that the MQH file will be taken from the default directory (usually MT4/experts/include). The current directory is not searched.
If the file name is enclosed in "quotation marks", the search will be performed in the current directory (where the main file of the source code is located). The standard default directory is not searched.
So, obviously, using <angle brackets> is much better (IMHO) than using quotation marks. In the original release of this code, I accidentally left the include using quotation marks. Version 1.0a fixes that by replacing the quotes with brackets.
[hr]
Sorry for any inconvenience this may have caused. :oops: (But that is the nature of BETA releases)
Updated version located in orignal SNS_TABLE_OBJECT post in this thread.
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.