Part 5. Creating application programs" is the next section in the MQL5 Programming for Traders series. This section focuses on the profundities of APIs associated with algorithmic trading, like financial data evaluation, chart visualization, automation, and user interactions.
The discussion begins with the primary principles of crafting MQL programs, followed by an examination of event types, attributes, and models in the terminal. It navigates through access to timeseries, chart operations, and graphical object interactions. It also appreciates the principles of forming and applying separate MQL program types.
MetaTrader 5 terminal accommodates five program categories: technical indicators, Expert Advisors (EAs) for automatic or semi-automatic trading, scripts for executing single tasks, services for background operations, and libraries for unique functional modules.
A more detai...
Read more...
The discussion begins with the primary principles of crafting MQL programs, followed by an examination of event types, attributes, and models in the terminal. It navigates through access to timeseries, chart operations, and graphical object interactions. It also appreciates the principles of forming and applying separate MQL program types.
MetaTrader 5 terminal accommodates five program categories: technical indicators, Expert Advisors (EAs) for automatic or semi-automatic trading, scripts for executing single tasks, services for background operations, and libraries for unique functional modules.
A more detai...
Read more...
👍4❤2👏1👀1
Following the groundwork laid in prior sections on the MQL5 programming language, it's time to intensify the application part of this series. In the fourth part, we emphasize the practical aspect of proper utilization of built-in functions (MQL5 API) that play a crucial role in actualizing real-world programming scenarios integrating automated trading and data processing.
Array operations, string processing, file interactions, data conversion, and user interaction functions are among the primary subjects to be examined, as they figure prominently in a working MQL5 program. In addition to that, mathematical functions and program environment management warrant serious attention.
MQL5 API stands apart in terms of accessibility. These built-in functions are readily available in the global context (namespace) devoid of conditional constraints along with the absence of necessities for ex...
Read more...
Array operations, string processing, file interactions, data conversion, and user interaction functions are among the primary subjects to be examined, as they figure prominently in a working MQL5 program. In addition to that, mathematical functions and program environment management warrant serious attention.
MQL5 API stands apart in terms of accessibility. These built-in functions are readily available in the global context (namespace) devoid of conditional constraints along with the absence of necessities for ex...
Read more...
👍5
Magnify your knowledge in the object-oriented programming world with "Part 3. Object Oriented Programming in MQL5". The concept of objects that form the core of OOP technology, enhances the programming convenience, boosts productivity, and ensures superior software quality. MQL5 tools are utilized skillfully by programmers to define custom types which model these metadata objects and simplify the process of program writing and maintenance.
Take a closer look at the mechanisms to define these new types - classes, structures, and unions. These custom types are a blend of data and algorithms that outline the state and behavior of application objects. In the spotlight is the "divide and conquer" principle, hinting towards the concept of objects as mini-programs, each focused on resolving a small but logically entire task.
Combine these remarkable objects to create a single system, ultim...
Read more...
Take a closer look at the mechanisms to define these new types - classes, structures, and unions. These custom types are a blend of data and algorithms that outline the state and behavior of application objects. In the spotlight is the "divide and conquer" principle, hinting towards the concept of objects as mini-programs, each focused on resolving a small but logically entire task.
Combine these remarkable objects to create a single system, ultim...
Read more...
👍4
Revealing a segment of MQL5 programming areas, the book uncovers insights into fundamental principles pivotal to the language's operation. MQL5, just like any other paradigm, plants its roots in key cornerstones that form a base for intricate programs. In the textual journey, data types, identifiers, variables, expressions, and operators receive a rich cover for learners.
The formative principles of procedural programming assume prominence, guiding learners to engineer programs following a data process sequence sequentially. The narrative further endeavours to lay sound groundwork before moving towards object-oriented programming (OOP), which receives a comprehensive overview in the upcoming segments of the book.
Highlighting an essential feature of MQL5, identifiers are presented as the linchpin of the programming field. Their role is to enable access to program elements via unique...
Read more...
The formative principles of procedural programming assume prominence, guiding learners to engineer programs following a data process sequence sequentially. The narrative further endeavours to lay sound groundwork before moving towards object-oriented programming (OOP), which receives a comprehensive overview in the upcoming segments of the book.
Highlighting an essential feature of MQL5, identifiers are presented as the linchpin of the programming field. Their role is to enable access to program elements via unique...
Read more...
❤3👍2🤔1
Part one of the upcoming book focuses on "Introduction to MQL5 and development environment". It offers a comprehensive understanding of the MQL5 languages and unfolds the development ecosystem intricacies. The book sets out to make object-oriented programming (OOP), a feature exclusive to MQL5, more accessible to those who find programming daunting.
This publication expands on the MQL5 reference, delving into various facets of MQL5 programming while unpacking all underlying processes meticulously. Developers are given the freedom to select between object-oriented and procedural programming styles, and even meld them if desired.
Those seasoned in programming can readily forgo the basics. For C++ programmers, MQL5 should be more comfortable, albeit attention must be directed towards the languages' differences to prevent slip-ups. MQL5 leads to the genesis of versatile types of appli...
Read more...
This publication expands on the MQL5 reference, delving into various facets of MQL5 programming while unpacking all underlying processes meticulously. Developers are given the freedom to select between object-oriented and procedural programming styles, and even meld them if desired.
Those seasoned in programming can readily forgo the basics. For C++ programmers, MQL5 should be more comfortable, albeit attention must be directed towards the languages' differences to prevent slip-ups. MQL5 leads to the genesis of versatile types of appli...
Read more...
👍4🔥1👌1
Efficiency in digital signal processing can be achieved using the Goertzel algorithm. This method is ideal for detecting discrete frequency components, making it suitable for real-time financial time series analysis. In this detailed discussion, practical applications of the algorithm will be demonstrated including how to understand dominant cycles for strategy development.
The Goertzel algorithm is a highly efficient computation method developed by Gerald Goertzel for the calculation of specific terms in the Discrete Fourier Transform (DFT). The primary utility of this technique is in identifying key frequency components in a digital signal. This is particularly advantageous in cases where only limited frequency components are critical.
In comparison to the Fast Fourier Transform (FFT), the Goertzel algorithm requires fewer computations for a limited number of frequency component...
Read more...
The Goertzel algorithm is a highly efficient computation method developed by Gerald Goertzel for the calculation of specific terms in the Discrete Fourier Transform (DFT). The primary utility of this technique is in identifying key frequency components in a digital signal. This is particularly advantageous in cases where only limited frequency components are critical.
In comparison to the Fast Fourier Transform (FFT), the Goertzel algorithm requires fewer computations for a limited number of frequency component...
Read more...
❤2👍1
Analyzing support and resistance levels is pivotal to strategic trading. Primarily, this unique indicator is designed to examine bouncebacks between these levels. It utilizes two input parameters: the period and overlook.
A support level is defined as the recorded lowest low within the last period bars, provided it matches the lowest low of the preceding period+overlook bars. Similarly, a resistance level is recognized as the highest high observed within the previous period bars, provided this value is identical to the highest high of the last period+overlook bars.
When both support and resistance levels are detected and a bounceback transpires (i.e. the price falls within these two levels), these levels are represented graphically on the chart. Note that this principle is not universal - variations may exist between the mql4 and mql5 versions.
In the original Indicator, the intege...
Read more...
A support level is defined as the recorded lowest low within the last period bars, provided it matches the lowest low of the preceding period+overlook bars. Similarly, a resistance level is recognized as the highest high observed within the previous period bars, provided this value is identical to the highest high of the last period+overlook bars.
When both support and resistance levels are detected and a bounceback transpires (i.e. the price falls within these two levels), these levels are represented graphically on the chart. Note that this principle is not universal - variations may exist between the mql4 and mql5 versions.
In the original Indicator, the intege...
Read more...
👍4❤3🎉1
In a continuation of developing a market simulation system, one area of focus is improving how the system generates a1-minute bar, making the analytical process run more smoothly. This article outlines a solution where additional controls would be integrated to facilitate improved handling of this operation. Though the transformation seems paramount, this is only a tiny fragment of the colossal task of constructing a fully functional system for statistical analyses and chart control.
Planning involves devising controls such as pausing, playing, and selecting a specific time to kick off a study. The biggest challenge is if one wanted to start research from the fifth market hour. In the present scenario, one would need to wait for five replay hours before starting the analysis - a process that would need a restart if the replay had to stop. Hence the article provides a clear direction ...
Read more...
Planning involves devising controls such as pausing, playing, and selecting a specific time to kick off a study. The biggest challenge is if one wanted to start research from the fifth market hour. In the present scenario, one would need to wait for five replay hours before starting the analysis - a process that would need a restart if the replay had to stop. Hence the article provides a clear direction ...
Read more...
❤2👍2👏1
Incorporate Martin Gale trading strategies into your developmental toolkit with ease using this provided include file. Fundamental to this package, classes GridStrategy and MartinGaleStrategy, derived from the Strategy class, provide an array of attributes including Startprice, Lots (volume assigned for the strategy), TakeProfit and Stoploss.
While the Strategy class invariably grounds these unique strategies shared attributes, it also contributes an onTick function to be included within an Expert Advisor's OnTick() function.
Operationally, this function manages all strategy components: generating buy and sell signals, executing trades following these cues, as well as closing trades upon reaching set Take Profit or Stop Loss levels. The crucial buy and sell signals branch out from virtual functions rooted within the Strategy class, giving Grid and Martin Gale Strategy class-specif...
Read more...
While the Strategy class invariably grounds these unique strategies shared attributes, it also contributes an onTick function to be included within an Expert Advisor's OnTick() function.
Operationally, this function manages all strategy components: generating buy and sell signals, executing trades following these cues, as well as closing trades upon reaching set Take Profit or Stop Loss levels. The crucial buy and sell signals branch out from virtual functions rooted within the Strategy class, giving Grid and Martin Gale Strategy class-specif...
Read more...
❤6👍1
Navigating through the labyrinth of programming concepts might seem difficult for newbies, but comprehending the essence of 'Function' can pave a pathway towards creating highly functional and top-quality software.
Understanding what functions are, the rationale behind using them, and how to effectively utilize them can undeniably be beneficial for any software developer. For instance, taking a small step like learning to write functions with arguments, and then gradually proceeding to function overloading can greatly enhance one's programming skills.
Implementing functions enables methods such as abstracting code, thereby reducing redundancy and promoting reusability. Apart from making the code more readable, functions boost debugging process efficiency, making error detection and resolution considerably easier.
Delving into further contexts like 'call-by-value' and 'call-by-refe...
Read more...
Understanding what functions are, the rationale behind using them, and how to effectively utilize them can undeniably be beneficial for any software developer. For instance, taking a small step like learning to write functions with arguments, and then gradually proceeding to function overloading can greatly enhance one's programming skills.
Implementing functions enables methods such as abstracting code, thereby reducing redundancy and promoting reusability. Apart from making the code more readable, functions boost debugging process efficiency, making error detection and resolution considerably easier.
Delving into further contexts like 'call-by-value' and 'call-by-refe...
Read more...
👍4👏1
Introducing a performance-boosting tool for traders: an advanced indicator that quantifies market noise with precision. Traders can now have a clearer distinction between periods of high and low volatility, thanks to its straightforward graphical representation.
A visual representation minimizes room for subjective interpretation and aids swift decision-making. Not only does this result in a smoother trading process, but also paves the way for the implementation of diverse trading strategies.
Standout features don't end there. This tool promises a new degree of accuracy and objectivity. Volatility, a key parameter in trading, can now be understood and integrated into the trading process more effectively. Take advantage of this tool, apprehend market noise like never before and enhance the quality of trading decisions.
A step towards technical sophistication, this innovative indica...
Read more...
A visual representation minimizes room for subjective interpretation and aids swift decision-making. Not only does this result in a smoother trading process, but also paves the way for the implementation of diverse trading strategies.
Standout features don't end there. This tool promises a new degree of accuracy and objectivity. Volatility, a key parameter in trading, can now be understood and integrated into the trading process more effectively. Take advantage of this tool, apprehend market noise like never before and enhance the quality of trading decisions.
A step towards technical sophistication, this innovative indica...
Read more...
👍6❤2🤝2
The crux of effective trading ventures lies in the potential astuteness within the binary of category theory and order theory. Offering insights, the previous article discussed the implementation of this theoretical union in MQL5 and elaborated on how these concepts fuel a trading system. The focus rested primarily on partial and linear orders, both concepts lending interesting perspectives to set ranking methods.
A powerful stride in syncing category theory with database schemas is the classification of calendar events. These preordained events, marked months in advance, spotlight indicators for an array of economies, including China, the US, Japan, Germany, EU, UK, South Korea, Singapore, Switzerland, Canada, New Zealand, Australia, and Brazil. Varied in their format, these indicators usually present numeric values such as forecast, actual, and previous values, but often feature co...
Read more...
A powerful stride in syncing category theory with database schemas is the classification of calendar events. These preordained events, marked months in advance, spotlight indicators for an array of economies, including China, the US, Japan, Germany, EU, UK, South Korea, Singapore, Switzerland, Canada, New Zealand, Australia, and Brazil. Varied in their format, these indicators usually present numeric values such as forecast, actual, and previous values, but often feature co...
Read more...
👍2👌1
A new ONNX script is available to aid machine learning model creation. This script offers the user an ability to select the ONNX model file seamlessly, followed by a prompt indicating model processing. Information from the input and output tensors in the model is carefully harnessed and displayed for user convenience, making the debugging process hassle-free.
If an error occurs during ONNX session creation, a prompt is displayed to facilitate immediate rectification. Additionally, the script enables the inspection of ONNX models' structure, transforming the understanding of input and output tensors, their names, and properties.
Such insight is critical in facilitating a deeper understanding of machine learning model structures, especially in ONNX models, which has significant ramifications in machine learning applications. Therefore, it simplifies the muddling task of debugging an...
Read more...
If an error occurs during ONNX session creation, a prompt is displayed to facilitate immediate rectification. Additionally, the script enables the inspection of ONNX models' structure, transforming the understanding of input and output tensors, their names, and properties.
Such insight is critical in facilitating a deeper understanding of machine learning model structures, especially in ONNX models, which has significant ramifications in machine learning applications. Therefore, it simplifies the muddling task of debugging an...
Read more...
🔥5❤3💯2
Reflecting upon the previous discourse "Developing a Replay System — Market simulation (Part 01): First experiments (I)", the concept of creating an event system for generating an adequate market simulation presented certain limitations. Notably, the 10-millisecond mark seemed unreachable, significantly impacting the system's effectiveness. Studying the related attachments elucidates this point, revealing that even the 10-millisecond range might not be sufficient.
Efforts to attain a 1- or 2-millisecond execution timeframe confronted inherent operational barriers. The operating system's timer is incapable of reaching these values, thereby creating a significant impediment. Despite this, the existing system still affords a number of computational possibilities that can be exploited.
Attempting to attribute the failure to reach the 1-minute mark to modern processor limitations reveal...
Read more...
Efforts to attain a 1- or 2-millisecond execution timeframe confronted inherent operational barriers. The operating system's timer is incapable of reaching these values, thereby creating a significant impediment. Despite this, the existing system still affords a number of computational possibilities that can be exploited.
Attempting to attribute the failure to reach the 1-minute mark to modern processor limitations reveal...
Read more...
❤4👍2👌1
Software developers targeting the application of the revered Martin Gale strategy in trading systems can cash in on this advanced library without any hitches. The 'include file' extends two essential classes - GridStrategy and MartinGaleStrategy - from the base Strategy class.
Key attributes to note include 'Startprice', 'Lots' (the volume on offer for the tactics), 'TakeProfit', and 'Stoploss' (given in financial terms). The Grid and Martin Gale strategies are inherently distinguished, but retain the fundamental characteristics tied to the Strategy class.
Attention must be drawn to a consequential function - the 'onTick' routine, a property of the Strategy class. It is to be activated within the realm of the OnTick() function in an Expert Advisor. This function plays a pivotal role, dealing with every facet of the strategy. This stretches from churning out buy and sell indicators,...
Read more...
Key attributes to note include 'Startprice', 'Lots' (the volume on offer for the tactics), 'TakeProfit', and 'Stoploss' (given in financial terms). The Grid and Martin Gale strategies are inherently distinguished, but retain the fundamental characteristics tied to the Strategy class.
Attention must be drawn to a consequential function - the 'onTick' routine, a property of the Strategy class. It is to be activated within the realm of the OnTick() function in an Expert Advisor. This function plays a pivotal role, dealing with every facet of the strategy. This stretches from churning out buy and sell indicators,...
Read more...
👍8✍1
Developers, traders, your attention, please. Let's take a meticulous look into the possibilities that lurk within MQL5 programming. How about expanding the functionality of the MetaTrader 5 platform to complement your trading process? Sounds like an intriguing experiment, doesn't it?
We'll focus on the major issue raised by several traders - the lack of a market simulation or replay system within MetaTrader 5 platform. Keeping this in mind, the aim is to develop a replay and simulation system, allowing market participants to try out, examine or study assets more effectively.
As intriguing as it sounds, don't expect an overnight win, you must have some programming knowledge to make the most of it. Replica of real-time movements, implementation of a trading system that checks each trade closely, and thorough tick data analysis for each asset are to be expected in our quest.
Yet, the...
Read more...
We'll focus on the major issue raised by several traders - the lack of a market simulation or replay system within MetaTrader 5 platform. Keeping this in mind, the aim is to develop a replay and simulation system, allowing market participants to try out, examine or study assets more effectively.
As intriguing as it sounds, don't expect an overnight win, you must have some programming knowledge to make the most of it. Replica of real-time movements, implementation of a trading system that checks each trade closely, and thorough tick data analysis for each asset are to be expected in our quest.
Yet, the...
Read more...
👍3❤1
The contemporary library presented allows an effortless interface with PNG graphic files and provides options for scaling them. PNG images can be uploaded in two ways: either via direct file upload or sourced from within an ex5 file.
When working with PNG images via resources, an immediate canvas can be formed and the images can be directly screened. Alternatively, the creation of a bmp[] bitmap array, discarding the step to create a canvas object for the image, can also be pursued. The bmp[] array can find pulse in more advanced implementations with proprietary canvases.
An imperative feature of the CPng class is the Resize(double NewWidth) method. It fosters the generation of new image sizes within the _bmp[] array, which can be screened by forming the canvas of corresponding size. The class instance will thus carry two bmp[] arrays (original size) with width "width" and height "h...
Read more...
When working with PNG images via resources, an immediate canvas can be formed and the images can be directly screened. Alternatively, the creation of a bmp[] bitmap array, discarding the step to create a canvas object for the image, can also be pursued. The bmp[] array can find pulse in more advanced implementations with proprietary canvases.
An imperative feature of the CPng class is the Resize(double NewWidth) method. It fosters the generation of new image sizes within the _bmp[] array, which can be screened by forming the canvas of corresponding size. The class instance will thus carry two bmp[] arrays (original size) with width "width" and height "h...
Read more...
👍10😁1🎉1
Unveiling a technical strategy that employs a combination of indicators and tools to generate trading signals and targets. Noteworthy components include a 14-period stochastic oscillator, a 5-period stochastic oscillator, a 200-period moving average, and a Fibonacci projection tool. The stochastic oscillator, developed by George C. Lane, calculates a financial instrument's price momentum and strength. Amid trading, if the stochastic oscillator verges on the lower boundary, it indicates oversold levels and a bullish bias. Conversely, nearing the upper boundary flags overbought levels and a bearish bias.
Meanwhile, with the moving average technique, data is smoothed over a particular period to identify trends and formulate trading signals. This method calculates by averaging a given set of prices over a specific time, then updates as new data becomes available. Older data points are s...
Read more...
Meanwhile, with the moving average technique, data is smoothed over a particular period to identify trends and formulate trading signals. This method calculates by averaging a given set of prices over a specific time, then updates as new data becomes available. Older data points are s...
Read more...
👍7❤3👏1
In the ever-evolving world of web development and programming, staying updated about the latest trends, technologies, and best practices is paramount. Recent advancements in Cloud Computing, Continuous Integration/Continuous Deployment (CI/CD), and the rise of containerization have significantly influenced our workflows and approach to software development.
Artificial Intelligence and Machine Learning applications are now more accessible and prevalent, with libraries and frameworks like TensorFlow, PyTorch, and Keras leading the charge. Coding languages like Python, JavaScript, and TypeScript remain popular, while Rust and Go are also gaining traction.
Web development sees a broad adoption of JavaScript and its frameworks such as React.js and Vue.js. Full-stack JavaScript development with Node.js on the backend continues to be a preferred approach for many developers. HTML5 and CSS3...
Read more...
Artificial Intelligence and Machine Learning applications are now more accessible and prevalent, with libraries and frameworks like TensorFlow, PyTorch, and Keras leading the charge. Coding languages like Python, JavaScript, and TypeScript remain popular, while Rust and Go are also gaining traction.
Web development sees a broad adoption of JavaScript and its frameworks such as React.js and Vue.js. Full-stack JavaScript development with Node.js on the backend continues to be a preferred approach for many developers. HTML5 and CSS3...
Read more...
👍12
Invest in technical knowledge, nurture coding skills, and simplify complex tasks with the use of MQL5 classes while developing MetaTrader5 applications. The comparison of building a graphical panel application using standard code and class libraries demonstrates the efficiency gained through the latter. Without the use of classes, code lines increase considerably. In contrast, the use of pre-defined classes such as Panels, Dialogs, Button, Edit, and Trade effectively reduces this complexity and enhances functionality. Save time, avoid repetitive coding tasks, boost productivity, and focus more on logic and quality development rather than basic code creation. Developers are urged to gain mastery of ready-made classes and built-in functions for improved coding skills. It helps in better understanding and designing customized requirements for trading panels; a vital component that aids t...
Read more...
Read more...
👍4❤3👏1