Proving the Identity of EMA and SMMA Moving Averages
Info
The Proving the Identity of EMA and SMMA Moving Averages is a Script for MetaTrader 4 that this report details the mathematical identity between exponential moving average (ema) and smoothed moving average (smma) indicators under specific conditions. The identity is proven to hold when the EMA period is related to the SMMA period by the formula: EMA_period = 2 * SMMA_period - 1.
Usage
This tool is typically used for enhancing chart analysis and decision making.
Platform
This Script works exclusively on MetaTrader 4 (both build 600+ and newer versions).
Setup
Place the downloaded file in MQL4/Scripts folder via File ? Open Data Folder in MetaTrader 4.
How to Install and Use Proving the Identity of EMA and SMMA Moving Averages
1. Installation: Move your script file into the MQL/Scripts directory and restart the platform.
2. Execution: Drag the script onto a chart; it will perform a one-time action, such as closing all open orders or clearing chart objects.
3. Editing: Use MetaEditor (F4) to modify code, click "Compile," and verify no errors appear in the terminal before running.
4. Removing: Scripts stop automatically, but you can remove them manually by right-clicking the chart and choosing "Remove Script."
Frequently Asked Questions
Q: How are scripts different from EAs? A: Scripts execute a single action and then stop; EAs monitor the market and trade continuously.
Q: Can I assign a hotkey to a script? A: Yes, right-click the script in the Navigator, select "Set Hotkey," and define your preferred keyboard shortcut.
Q: Why did my script stop? A: Scripts are designed to stop immediately after finishing their programmed command; this is normal behavior.
What this tool does
This report details the mathematical identity between Exponential Moving Average (EMA) and Smoothed Moving Average (SMMA) indicators under specific conditions.
Typical Use Case
This Script excels in automated trading and technical analysis on MetaTrader 4.
Compatible Platform & Setup
This Script works on MetaTrader 4. Place the file in the MQL4/Scripts folder and restart the terminal.
Description & Settings
Related: Single Timeframe Data Downloader for MT4/MT5 - another powerful script for MetaTrader 4 traders.
This report details the mathematical identity between Exponential Moving Average (EMA) and Smoothed Moving Average (SMMA) indicators under specific conditions. The identity is proven to hold when the EMA period is related to the SMMA period by the formula: EMA_period = 2 * SMMA_period - 1.Also recommended: risk advisor: calculating lot sizes for optimal risk management - similar script with strong performance on MetaTrader 4.
While the mathematical proof itself is straightforward and may not be of primary interest to traders, the practical implication is significant: these two distinct moving average types can produce identical results.
The script provided demonstrates this identity. When run on a MetaTrader chart, it generates an output file illustrating the convergence of EMA and SMMA. The visual representation, as shown in the accompanying figure, highlights how the initial differences in calculation methods quickly become negligible as the periods increase. For example, EMA(159) and SMMA(80) demonstrate this convergence, with the blue line representing EMA and the red line representing SMMA. The script focuses on displaying the initial calculation phases and uses extended periods to emphasize how rapidly the divergence between the two indicators diminishes.
It is important to note that this script is intended for educational purposes to dispel common illusions about these indicators and is not designed for trading applications. The early-stage discrepancies observed between EMA and SMMA are attributed solely to their different initialization processes and are not considered fundamentally substantial.
You may also like: Historical Data Analysis: Identifying and Quantifying Missing Bars and Gaps - excellent alternative for script users on MetaTrader 4.
Source Code
#property show_inputs
extern int _smma_period = 21;
int start()
{
int handle = fileopen( "ema_smma.csv", file_csv | file_write, " " );
for( int i = bars - 1; i >= 0; i-- )
{
double diff = ima( null, 0, _smma_period, 0, mode_smma, price_close, i ) -
ima( null, 0, 2*_smma_period - 1, 0, mode_ema, price_close, i );
double diff_n = normalizedouble( diff, 8 );
.......
⚠ Limitations & Risk Warning
- This tool is provided for educational and testing purposes only.
- Past performance does not guarantee future results.
- Trading involves substantial risk of loss. Use on a demo account first.
- Results may vary depending on market conditions, broker, and settings.
- We recommend thorough backtesting and forward testing before using with real funds.