![Library for easy and quick development of MetaTrader programs (part XXII): Trading classes - Base trading class, verification of limitations](https://c.mql5.com/2/37/MQL5-avatar-doeasy__4.png)
![Library for easy and quick development of MetaTrader programs (part XXII): Trading classes - Base trading class, verification of limitations](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XXII): Trading classes - Base trading class, verification of limitations
In this article, we will start the development of the library base trading class and add the initial verification of permissions to conduct trading operations to its first version. Besides, we will slightly expand the features and content of the base trading class.
![Library for easy and quick development of MetaTrader programs (part XXI): Trading classes - Base cross-platform trading object](https://c.mql5.com/2/37/MQL5-avatar-doeasy__3.png)
![Library for easy and quick development of MetaTrader programs (part XXI): Trading classes - Base cross-platform trading object](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XXI): Trading classes - Base cross-platform trading object
In this article, we will start the development of the new library section - trading classes. Besides, we will consider the development of a unified base trading object for MetaTrader 5 and MetaTrader 4 platforms. When sending a request to the server, such a trading object implies that verified and correct trading request parameters are passed to it.
![Library for easy and quick development of MetaTrader programs (part XX): Creating and storing program resources](https://c.mql5.com/2/37/MQL5-avatar-doeasy__2.png)
![Library for easy and quick development of MetaTrader programs (part XX): Creating and storing program resources](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XX): Creating and storing program resources
The article deals with storing data in the program's source code and creating audio and graphical files out of them. When developing an application, we often need audio and images. The MQL language features several methods of using such data.
![Library for easy and quick development of MetaTrader programs (part XIX): Class of library messages](https://c.mql5.com/2/37/MQL5-avatar-doeasy__1.png)
![Library for easy and quick development of MetaTrader programs (part XIX): Class of library messages](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XIX): Class of library messages
In this article, we will consider the class of displaying text messages. Currently, we have a sufficient number of different text messages. It is time to re-arrange the methods of their storage, display and translation of Russian or English messages to other languages. Besides, it would be good to introduce convenient ways of adding new languages to the library and quickly switching between them.
![Library for easy and quick development of MetaTrader programs (part XVII): Interactivity of library objects](https://c.mql5.com/2/36/MQL5-avatar-doeasy__12.png)
![Library for easy and quick development of MetaTrader programs (part XVII): Interactivity of library objects](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XVII): Interactivity of library objects
In this article, we are going to finish the development of the base object of all library objects, so that any library object based on it is able to interact with a user. For example, users will be able to set the maximum acceptable size of a spread for opening a position and a price level, upon reaching which an event from a symbol object is sent to the program with the spread or price level-based signal.
![Library for easy and quick development of MetaTrader programs (part XVI): Symbol collection events](https://c.mql5.com/2/36/MQL5-avatar-doeasy__11.png)
![Library for easy and quick development of MetaTrader programs (part XVI): Symbol collection events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XVI): Symbol collection events
In this article, we will create a new base class of all library objects adding the event functionality to all its descendants and develop the class for tracking symbol collection events based on the new base class. We will also change account and account event classes for developing the new base object functionality.
![Developing Pivot Mean Oscillator: a novel Indicator for the Cumulative Moving Average](https://c.mql5.com/2/37/PMO_200x200.png)
![Developing Pivot Mean Oscillator: a novel Indicator for the Cumulative Moving Average](https://c.mql5.com/i/articles/overlay.png)
Developing Pivot Mean Oscillator: a novel Indicator for the Cumulative Moving Average
This article presents Pivot Mean Oscillator (PMO), an implementation of the cumulative moving average (CMA) as a trading indicator for the MetaTrader platforms. In particular, we first introduce Pivot Mean (PM) as a normalization index for timeseries that computes the fraction between any data point and the CMA. We then build PMO as the difference between the moving averages applied to two PM signals. Some preliminary experiments carried out on the EURUSD symbol to test the efficacy of the proposed indicator are also reported, leaving ample space for further considerations and improvements.
![Library for easy and quick development of MetaTrader programs (part XV): Collection of symbol objects](https://c.mql5.com/2/36/MQL5-avatar-doeasy__10.png)
![Library for easy and quick development of MetaTrader programs (part XV): Collection of symbol objects](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XV): Collection of symbol objects
In this article, we will consider creation of a symbol collection based on the abstract symbol object developed in the previous article. The abstract symbol descendants are to clarify a symbol data and define the availability of the basic symbol object properties in a program. Such symbol objects are to be distinguished by their affiliation with groups.
![A New Approach to Interpreting Classic and Hidden Divergence. Part II](https://c.mql5.com/2/37/new_approach_divergence.png)
![A New Approach to Interpreting Classic and Hidden Divergence. Part II](https://c.mql5.com/i/articles/overlay.png)
A New Approach to Interpreting Classic and Hidden Divergence. Part II
The article provides a critical examination of regular divergence and efficiency of various indicators. In addition, it contains filtering options for an increased analysis accuracy and features description of non-standard solutions. As a result, we will create a new tool for solving the technical task.
![Optimization management (Part II): Creating key objects and add-on logic](https://c.mql5.com/2/36/mql5-avatar-opt_control__1.png)
![Optimization management (Part II): Creating key objects and add-on logic](https://c.mql5.com/i/articles/overlay.png)
Optimization management (Part II): Creating key objects and add-on logic
This article is a continuation of the previous publication related to the creation of a graphical interface for optimization management. The article considers the logic of the add-on. A wrapper for the MetaTrader 5 terminal will be created: it will enable the running of the add-on as a managed process via C#. In addition, operation with configuration files and setup files is considered in this article. The application logic is divided into two parts: the first one describes the methods called after pressing a particular key, while the second part covers optimization launch and management.
![Library for easy and quick development of MetaTrader programs (part XIV): Symbol object](https://c.mql5.com/2/36/MQL5-avatar-doeasy__9.png)
![Library for easy and quick development of MetaTrader programs (part XIV): Symbol object](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XIV): Symbol object
In this article, we will create the class of a symbol object that is to be the basic object for creating the symbol collection. The class will allow us to obtain data on the necessary symbols for their further analysis and comparison.
![Library for easy and quick development of MetaTrader programs (part XIII): Account object events](https://c.mql5.com/2/36/MQL5-avatar-doeasy__8.png)
![Library for easy and quick development of MetaTrader programs (part XIII): Account object events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XIII): Account object events
The article considers working with account events for tracking important changes in account properties affecting the automated trading. We have already implemented some functionality for tracking account events in the previous article when developing the account object collection.
![Library for easy and quick development of MetaTrader programs (part XII): Account object class and collection of account objects](https://c.mql5.com/2/36/MQL5-avatar-doeasy__7.png)
![Library for easy and quick development of MetaTrader programs (part XII): Account object class and collection of account objects](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XII): Account object class and collection of account objects
In the previous article, we defined position closure events for MQL4 in the library and got rid of the unused order properties. Here we will consider the creation of the Account object, develop the collection of account objects and prepare the functionality for tracking account events.
![Library for easy and quick development of MetaTrader programs (part XI). Compatibility with MQL4 - Position closure events](https://c.mql5.com/2/36/MQL5-avatar-doeasy__6.png)
![Library for easy and quick development of MetaTrader programs (part XI). Compatibility with MQL4 - Position closure events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part XI). Compatibility with MQL4 - Position closure events
We continue the development of a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the tenth part, we resumed our work on the library compatibility with MQL4 and defined the events of opening positions and activating pending orders. In this article, we will define the events of closing positions and get rid of the unused order properties.
![Optimization management (Part I): Creating a GUI](https://c.mql5.com/2/36/mql5-avatar-opt_control.png)
![Optimization management (Part I): Creating a GUI](https://c.mql5.com/i/articles/overlay.png)
Optimization management (Part I): Creating a GUI
This article describes the process of creating an extension for the MetaTrader terminal. The solution discussed helps to automate the optimization process by running optimizations in other terminals. A few more articles will be written concerning this topic. The extension has been developed using the C# language and design patterns, which additionally demonstrates the ability to expand the terminal capabilities by developing custom modules, as well as the ability to create custom graphical user interfaces using the functionality of a preferred programming language.
![Library for easy and quick development of MetaTrader programs (part X): Compatibility with MQL4 - Events of opening a position and activating pending orders](https://c.mql5.com/2/36/MQL5-avatar-doeasy__5.png)
![Library for easy and quick development of MetaTrader programs (part X): Compatibility with MQL4 - Events of opening a position and activating pending orders](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part X): Compatibility with MQL4 - Events of opening a position and activating pending orders
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the ninth part, we started improving the library classes for working with MQL4. Here we will continue improving the library to ensure its full compatibility with MQL4.
![Extract profit down to the last pip](https://c.mql5.com/2/36/MQL5-avatar-profit_digging__1.png)
![Extract profit down to the last pip](https://c.mql5.com/i/articles/overlay.png)
Extract profit down to the last pip
The article describes an attempt to combine theory with practice in the algorithmic trading field. Most of discussions concerning the creation of Trading Systems is connected with the use of historic bars and various indicators applied thereon. This is the most well covered field and thus we will not consider it. Bars represent a very artificial entity; therefore we will work with something closer to proto-data, namely the price ticks.
![Library for easy and quick development of MetaTrader programs (part IX): Compatibility with MQL4 - Preparing data](https://c.mql5.com/2/36/MQL5-avatar-doeasy__4.png)
![Library for easy and quick development of MetaTrader programs (part IX): Compatibility with MQL4 - Preparing data](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part IX): Compatibility with MQL4 - Preparing data
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the eighth part, we implemented the class for tracking order and position modification events. Here, we will improve the library by making it fully compatible with MQL4.
![Library for easy and quick development of MetaTrader programs (part VIII): Order and position modification events](https://c.mql5.com/2/36/MQL5-avatar-doeasy__3.png)
![Library for easy and quick development of MetaTrader programs (part VIII): Order and position modification events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part VIII): Order and position modification events
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the seventh part, we added tracking StopLimit orders activation and prepared the functionality for tracking other events involving orders and positions. In this article, we will develop the class for tracking order and position modification events.
![Grokking market "memory" through differentiation and entropy analysis](https://c.mql5.com/2/36/snip_20190614154924__2.png)
![Grokking market "memory" through differentiation and entropy analysis](https://c.mql5.com/i/articles/overlay.png)
Grokking market "memory" through differentiation and entropy analysis
The scope of use of fractional differentiation is wide enough. For example, a differentiated series is usually input into machine learning algorithms. The problem is that it is necessary to display new data in accordance with the available history, which the machine learning model can recognize. In this article we will consider an original approach to time series differentiation. The article additionally contains an example of a self optimizing trading system based on a received differentiated series.
![Evaluating the ability of Fractal index and Hurst exponent to predict financial time series](https://c.mql5.com/2/36/fraktal1.png)
![Evaluating the ability of Fractal index and Hurst exponent to predict financial time series](https://c.mql5.com/i/articles/overlay.png)
Evaluating the ability of Fractal index and Hurst exponent to predict financial time series
Studies related to search for the fractal behavior of financial data suggest that behind the seemingly chaotic behavior of economic time series there are hidden stable mechanisms of participants' collective behavior. These mechanisms can lead to the emergence of price dynamics on the exchange, which can define and describe specific properties of price series. When applied to trading, one could benefit from the indicators which can efficiently and reliably estimate the fractal parameters in the scale and time frame, which are relevant in practice.
![Library for easy and quick development of MetaTrader programs (part VII): StopLimit order activation events, preparing the functionality for order and position modification events](https://c.mql5.com/2/36/MQL5-avatar-doeasy__2.png)
![Library for easy and quick development of MetaTrader programs (part VII): StopLimit order activation events, preparing the functionality for order and position modification events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part VII): StopLimit order activation events, preparing the functionality for order and position modification events
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the sixth part, we trained the library to work with positions on netting accounts. Here we will implement tracking StopLimit orders activation and prepare the functionality to track order and position modification events.
![Library for easy and quick development of MetaTrader programs (part VI): Netting account events](https://c.mql5.com/2/36/MQL5-avatar-doeasy__1.png)
![Library for easy and quick development of MetaTrader programs (part VI): Netting account events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part VI): Netting account events
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the fifth part of the article series, we created trading event classes and the event collection, from which the events are sent to the base object of the Engine library and the control program chart. In this part, we will let the library to work on netting accounts.
![Applying OLAP in trading (part 2): Visualizing the interactive multidimensional data analysis results](https://c.mql5.com/2/36/OLAP_02__1.png)
![Applying OLAP in trading (part 2): Visualizing the interactive multidimensional data analysis results](https://c.mql5.com/i/articles/overlay.png)
Applying OLAP in trading (part 2): Visualizing the interactive multidimensional data analysis results
In this article, we consider the creation of an interactive graphical interface for an MQL program, which is designed for the processing of account history and trading reports using OLAP techniques. To obtain a visual result, we will use maximizable and scalable windows, an adaptive layout of rubber controls and a new control for displaying diagrams. To provide the visualization functionality, we will implement a GUI with the selection of variables along coordinate axes, as well as with the selection of aggregate functions, diagram types and sorting options.
![Applying OLAP in trading (part 1): Online analysis of multidimensional data](https://c.mql5.com/2/36/OLAP_02.png)
![Applying OLAP in trading (part 1): Online analysis of multidimensional data](https://c.mql5.com/i/articles/overlay.png)
Applying OLAP in trading (part 1): Online analysis of multidimensional data
The article describes how to create a framework for the online analysis of multidimensional data (OLAP), as well as how to implement this in MQL and to apply such analysis in the MetaTrader environment using the example of trading account history processing.
![Library for easy and quick development of MetaTrader programs (part V): Classes and collection of trading events, sending events to the program](https://c.mql5.com/2/35/MQL5-avatar-doeasy__4.png)
![Library for easy and quick development of MetaTrader programs (part V): Classes and collection of trading events, sending events to the program](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part V): Classes and collection of trading events, sending events to the program
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. In the fourth part, we tested tracking trading events on the account. In this article, we will develop trading event classes and place them to the event collections. From there, they will be sent to the base object of the Engine library and the control program chart.
![Selection and navigation utility in MQL5 and MQL4: Adding data to charts](https://c.mql5.com/2/35/Select_Symbols_Utility_MQL5__2.png)
![Selection and navigation utility in MQL5 and MQL4: Adding data to charts](https://c.mql5.com/i/articles/overlay.png)
Selection and navigation utility in MQL5 and MQL4: Adding data to charts
In this article, we will continue expanding the functionality of the utility. This time, we will add the ability to display data that simplifies our trading. In particular, we are going to add High and Low prices of the previous day, round levels, High and Low prices of the year, session start time, etc.
![Library for easy and quick development of MetaTrader programs (part IV): Trading events](https://c.mql5.com/2/35/MQL5-avatar-doeasy__3.png)
![Library for easy and quick development of MetaTrader programs (part IV): Trading events](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part IV): Trading events
In the previous articles, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. We already have collections of historical orders and deals, market orders and positions, as well as the class for convenient selection and sorting of orders. In this part, we will continue the development of the base object and teach the Engine Library to track trading events on the account.
![How to visualize multicurrency trading history based on HTML and CSV reports](https://c.mql5.com/2/35/mql5-article-html-csv.png)
![How to visualize multicurrency trading history based on HTML and CSV reports](https://c.mql5.com/i/articles/overlay.png)
How to visualize multicurrency trading history based on HTML and CSV reports
Since its introduction, MetaTrader 5 provides multicurrency testing options. This possibility is often used by traders. However the function is not universal. The article presents several programs for drawing graphical objects on charts based on HTML and CSV trading history reports. Multicurrency trading can be analyzed in parallel, in several sub-windows, as well as in one window using the dynamic switching command.
![Studying candlestick analysis techniques (part IV): Updates and additions to Pattern Analyzer](https://c.mql5.com/2/35/Logo__3.png)
![Studying candlestick analysis techniques (part IV): Updates and additions to Pattern Analyzer](https://c.mql5.com/i/articles/overlay.png)
Studying candlestick analysis techniques (part IV): Updates and additions to Pattern Analyzer
The article presents a new version of the Pattern Analyzer application. This version provides bug fixes and new features, as well as the revised user interface. Comments and suggestions from previous article were taken into account when developing the new version. The resulting application is described in this article.
![Using MATLAB 2018 computational capabilities in MetaTrader 5](https://c.mql5.com/2/35/ext_infin2.png)
![Using MATLAB 2018 computational capabilities in MetaTrader 5](https://c.mql5.com/i/articles/overlay.png)
Using MATLAB 2018 computational capabilities in MetaTrader 5
After the upgrade of the MATLAB package in 2015, it is necessary to consider a modern way of creating DLL libraries. The article uses a sample predictive indicator to illustrate the peculiarities of linking MetaTrader 5 and MATLAB using modern 64-bit versions of the platforms, which are utilized nowadays. With the entire sequence of connecting MATLAB considered, MQL5 developers will be able to create applications with advanced computational capabilities much faster, avoiding «pitfalls».
![MTF indicators as the technical analysis tool](https://c.mql5.com/2/35/mtf-avatar.png)
![MTF indicators as the technical analysis tool](https://c.mql5.com/i/articles/overlay.png)
MTF indicators as the technical analysis tool
Most of traders agree that the current market state analysis starts with the evaluation of higher chart timeframes. The analysis is performed downwards to lower timeframes until the one, at which deals are performed. This analysis method seems to be a mandatory part of professional approach for successful trading. In this article, we will discuss multi-timeframe indicators and their creation ways, as well as we will provide MQL5 code examples. In addition to the general evaluation of advantages and disadvantages, we will propose a new indicator approach using the MTF mode.
![Library for easy and quick development of MetaTrader programs (part III). Collection of market orders and positions, search and sorting](https://c.mql5.com/2/35/MQL5-avatar-doeasy__2.png)
![Library for easy and quick development of MetaTrader programs (part III). Collection of market orders and positions, search and sorting](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part III). Collection of market orders and positions, search and sorting
In the first part, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. Further on, we implemented the collection of history orders and deals. Our next step is creating a class for a convenient selection and sorting of orders, deals and positions in collection lists. We are going to implement the base library object called Engine and add collection of market orders and positions to the library.
![Extracting structured data from HTML pages using CSS selectors](https://c.mql5.com/2/35/MQL5-CSS_selectors.png)
![Extracting structured data from HTML pages using CSS selectors](https://c.mql5.com/i/articles/overlay.png)
Extracting structured data from HTML pages using CSS selectors
The article provides a description of a universal method for analyzing and converting data from HTML documents based on CSS selectors. Trading reports, tester reports, your favorite economic calendars, public signals, account monitoring and additional online quote sources will become available straight from MQL.
![Library for easy and quick development of MetaTrader programs (part II). Collection of historical orders and deals](https://c.mql5.com/2/35/MQL5-avatar-doeasy__1.png)
![Library for easy and quick development of MetaTrader programs (part II). Collection of historical orders and deals](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part II). Collection of historical orders and deals
In the first part, we started creating a large cross-platform library simplifying the development of programs for MetaTrader 5 and MetaTrader 4 platforms. We created the COrder abstract object which is a base object for storing data on history orders and deals, as well as on market orders and positions. Now we will develop all the necessary objects for storing account history data in collections.
![Library for easy and quick development of MetaTrader programs (part I). Concept, data management and first results](https://c.mql5.com/2/35/MQL5-avatar-doeasy.png)
![Library for easy and quick development of MetaTrader programs (part I). Concept, data management and first results](https://c.mql5.com/i/articles/overlay.png)
Library for easy and quick development of MetaTrader programs (part I). Concept, data management and first results
While analyzing a huge number of trading strategies, orders for development of applications for MetaTrader 5 and MetaTrader 4 terminals and various MetaTrader websites, I came to the conclusion that all this diversity is based mostly on the same elementary functions, actions and values appearing regularly in different programs. This resulted in DoEasy cross-platform library for easy and quick development of МetaТrader 5 and МetaТrader 4 applications.
![Color optimization of trading strategies](https://c.mql5.com/2/35/avatar-colorful.png)
![Color optimization of trading strategies](https://c.mql5.com/i/articles/overlay.png)
Color optimization of trading strategies
In this article we will perform an experiment: we will color optimization results. The color is determined by three parameters: the levels of red, green and blue (RGB). There are other color coding methods, which also use three parameters. Thus, three testing parameters can be converted to one color, which visually represents the values. Read this article to find out if such a representation can be useful.
![MetaTrader 5 and Python integration: receiving and sending data](https://c.mql5.com/2/35/mt5-3002__1.png)
![MetaTrader 5 and Python integration: receiving and sending data](https://c.mql5.com/i/articles/overlay.png)
MetaTrader 5 and Python integration: receiving and sending data
Comprehensive data processing requires extensive tools and is often beyond the sandbox of one single application. Specialized programming languages are used for processing and analyzing data, statistics and machine learning. One of the leading programming languages for data processing is Python. The article provides a description of how to connect MetaTrader 5 and Python using sockets, as well as how to receive quotes via the terminal API.
![MQL Parsing by Means of MQL](https://c.mql5.com/2/35/MQL5-avatar-analysis.png)
![MQL Parsing by Means of MQL](https://c.mql5.com/i/articles/overlay.png)
MQL Parsing by Means of MQL
The article describes a preprocessor, a scanner, and a parser to be used in parsing the MQL-based source codes. MQL implementation is attached.
![The power of ZigZag (part II). Examples of receiving, processing and displaying data](https://c.mql5.com/2/35/MQL5-avatar-zigzag_head__1.png)
![The power of ZigZag (part II). Examples of receiving, processing and displaying data](https://c.mql5.com/i/articles/overlay.png)
The power of ZigZag (part II). Examples of receiving, processing and displaying data
In the first part of the article, I have described a modified ZigZag indicator and a class for receiving data of that type of indicators. Here, I will show how to develop indicators based on these tools and write an EA for tests that features making deals according to signals formed by ZigZag indicator. As an addition, the article will introduce a new version of the EasyAndFast library for developing graphical user interfaces.