MT4 Tracker Documentation
Introduction
MT4 Forex trading is evolving to take advantage of a new paradigm that employs dozens or hundreds of Expert Advisors. A tool is required to monitor and track the performance of each strategy. MT4 Tracker was developed just for this purpose.
MT4 Tracker is a Windows application that can be used to refine and optimize a portfolio of EAs.
In addition to collecting statistics for each strategy, MT4 Tracker can exclude or “prune” poorly performing strategies from an EA Portfolio Expert and regenerate a new Expert Advisor that trades with greater reliability and profit.
Features of MT4 Tracker:
- Import Account History Report From MT4
- Calculate And View Statistics And Performance Charts
- Monitor the performance of dozens or 100’s of Expert Advisors
- Display performance chart of every Expert Advisor
- Perform “What If” Experiments By Excluding Certain Strategies
- Prune Portfolio Expert To Remove Poorly-Performing Strategies
- Detailed Inspection Of Balance Chart To Identify Cause Of Dips
- Compare Linearity Of Balance Charts Before And After Pruning
Import Account History Report
To begin using MT4 Tracker the Account History report (*.HTM) is exported from MT4 and then imported into MT4 Tracker. The video below shows how to export MT4’s Account History
MT4 Tracker reads and parses the Account History and then populates its Table View, which shows all your trades, along with their corresponding Magic Numbers.
Calculate And View Statistics And Performance Charts
MT4 Tracker reads and parses the Account History and then populates its Table View, which shows all your trades from the MT4 Account History report, along with their corresponding Magic Numbers. Each row in the table represents a single strategy and summarizes its trading results by displaying: Magic Number, Number of Trades, Net Profit, Win Percent, Profit Factor, Expectancy, and Return/DD Ratio statistics. The last column in the table, Exclude, is used to mark the strategy for removal or “pruning” (more on this later).
Monitor Strategy Performance
With the imported data loaded into the Table View, you can now scroll through the list of Magic Numbers and actually see how each strategy is performing. And at the bottom of the window a balance chart for the portfolio as a whole is shown, along with some of its statistics.
Display EA Performance Chart
You can quickly scroll through the performance chart of each EA by pressing the
Perform “What If” Experiments
One of the most useful features of MT4 Tracker is that it gives you the ability to exclude certain strategies and then recalculates the account’s performance. In this way — that is, by comparing the account’s performance with / with out certain strategies — then you can decide which strategies to remove from your portfolio going forward.
The image below shows a couple of ways to exclude strategies. One way is to scroll down the Table View and select each strategy, one-by-one, and view its performance chart. If you don’t like its performance then click the ‘Exclude’ checkbox corresponding to that strategy. A second way is to right-click inside the Table View and a pop-up menu will appear with a few options — e.g. exclude a collection of strategies whose Expectancy, Profit Factor, Win Percent or Return/DD Ratio is below a threshold value that you specify.
Also, you can click on the column headers — e.g. Net Profit, Win Percent, Profit Factor, Expectancy — to sort the strategies from best-to-worst (or vice versa). In this way it may become more apparent which strategies are “keepers” and which should be excluded.
In the example below we show the balance chart for the portfolio “Before” and “After” excluding those strategies whose Return/DD Ratio is < 3. If you examine the statistics for the portfolio as a whole, you can see the improvement can be fairly dramatic when poor-performing strategies are removed.
Recent Trade Results
Whether you are monitoring an older strategy with many trades or a new strategy with few trades, it is often useful to analyze its most recent performance. For example, when deciding whether or not a strategy is ready to move from a demo to live account, Petko Aleksandrov from Forex Academy recommends the “10 trades / 100 pips” rule. (NOTE: When trading 0.01 lots, 100 pips is roughly equivalent to $10 USD). Alternatively, if a strategy has been trading for awhile and you want to view its most recent performance (in order to decide whether or not to exclude it from a portfolio EA), then it is desirable to view some statistics of its most recent trades. The “Recent Trades” feature allows you to view statistics for all your strategies over their last N trades — where you decide what N is.
To use this feature, right-click in the Statistics grid and a pop-up menu appears — select ‘Most Recent Trades’. A small Dialog box appears where you enter the number of most recent trades — e.g. 10.
When you click ‘OK’, then a new window with a statistics grid appears with the same magic numbers as in the main statistics grid. This new grid is a subset of the main one and displays the statistics for the last N trades — e.g. in the example below, the last 10 trades. If a strategy has fewer than 10 total trades, then those results are the same as in the main grid and are also shown.
Prune Poorly-Performing Strategies
MT4 Tracker can take a Portfolio Expert MQ4 input file, remove (or “prune”) those strategies that have been marked for exclusion, and then regenerate a new Portfolio Expert MQ4 output file. This feature is accessed by selecting the “Excluded Strategies” tab. Please note that this feature only applies to EA Studio’s Portfolio Experts.
Along the left-hand side is the list of strategies (i.e. Magic Numbers) that have been marked to be excluded. The “Before” and “After” stats and charts are also shown. To actually make the changes you will need to enter 3 pieces of information and then press the ‘Apply’ button. The 3 pieces of information are: Base Magic Number, Input Portfolio Expert (MQ4) filename, and Output Portfolio Expert (MQ4) filename.
The chart below shows the result of substituting the original Portfolio Expert with a “pruned” one. This is a live “micro” account. At around trade #58 the original Portfolio Expert was replaced with a new “pruned” version where all strategies with winning percentages less than 80% had been removed.
Input Values For Portfolio EA
When MT4 Tracker generates a modified portfolio EA for the purposes of excluding poor-performing strategies or for collecting statistics when testing the portfolio EA in MT4’s Strategy Tester, it adds some additional code to the *.mq4 source code file — including new input values intended to add trading protection when the portfolio is running in an account. The new inputs are described below.
Input Values Entered When Attaching The Portfolio EA To A Chart
Your portfolio EA may contain dozens of strategies, and managing the overall trading pattern of a portfolio EA is much different than a single EA — i.e. if you don’t pay close attention then your exposure can quickly grow larger than what you are comfortable with. These inputs allow you some control over how frequently your portfolio will open new positions.
Stop all trading: When set to ‘true’ then do not open any new trades — effective immediately. Default is ‘false’.
Stop trading when FreeMargin drops below this value: If account’s Free Margin drops below this value then do not open any new trades. Default is ‘0’.
Stop trading when Margin exceeds this value: If account’s Margin rises above this value then do not open any new trades. Default is ‘99999’.
Stop trading when floating loss drops below this value: If account’s floating loss drops below this value then do not open any new trades. Default is ‘-99999’.
For example, suppose you want to stop using a portfolio EA but there are still a number of open (pending) trades. If you set the 3rd input (‘Stop trading when Margin exceeds this value’) to ‘1’, then no new trades will be opened and pending trades will gracefully close. The alternative would be to remove the EA (or close the chart window) and then manually close each pending trade.
The 3rd input can also be useful if you wish to limit the number of pending trades if you discover the portfolio is opening more trades than you are comfortable with.
Minimum WinRatio (per strategy): If a strategy’s WinRatio falls below this value (e.g. 0.50), then it will no longer be able to open new positions. However, it will still be used to close any positions that currently remain open.
Most Recent Number of trades: This refers to how many trades are used when computing the minimum WinRatio (above).
Maximum Consecutive Losses (per strategy): If a strategy’s consecutive losses exceeds this value (e.g. 2) , then it will no longer be able to open new positions. However, it will still be used to closed any positions that currently remain open.
Ignore Strategies
If your account has been active for awhile then it may include many magic numbers you are no longer interested in and which pollute the results. Using this feature you can create a list of magic numbers to ignore. This list will be excluded from both the BEFORE and AFTER computations. You can access this feature from the main menu by selecting Tools / Ignored Strategies…
Custom Period
Similar to the “Ignored Strategies” feature, the Custom Period feature allows you to focus only on those magic numbers that have traded within a narrow data horizon. To use this feature, enter ‘Start’ and ‘End’ dates, check ‘Use Custom Period’ and press the ‘OK’ button. You will then be prompted to (re)open an Account History (*.htm) report file. Only those magic numbers that traded within your Custom Period will be included in the BEFORE and AFTER computations. You can access this feature from the main menu by selecting Tools / Custom Period…
Strategy Tester Analysis
This is one of our favorite features — you can test your portfolio EA using MT4’s Strategy Tester and then analyze the results using MT4 Tracker, just as you would using MT4’s Account History report. By default, MT4’s Strategy Tester does not keep track of magic numbers because it assumes each EA contains a single strategy. However, by adding a little bit of code to the portfolio EA’s OnDeinit() function then when back testing completes we can create a log file with a list of all the trades and their corresponding magic numbers. MT4 Tracker can analyze these back testing results in the same way as it does the Account History report. In this way you can prune the portfolio EA to remove potentially poor-performing strategies *before* adding your portfolio EA to an account.
You can access this feature from the main menu by selecting Tools / Open Tester Log…. From there you will need to navigate to MetaTrader’s “..\tester\files” folder. If you don’t know where this folder is located, you can easily find it from within MetaTrader by selecting File / Open Data Folder. The ‘tester’ folder is in the same directory as MetaTrader’s ‘terminal.exe’ program. As you can see from the image above, the name of the log file follows a specific format — e.g. StrategyTester_[Symbol]_[Period]-[ExpertName].log.
Linearity As A Measure Of Robustness
MT4 Tracker computes “linearity” charts for both the “BEFORE” and “AFTER” portfolio balance charts. How one interprets a portfolio’s balance chart is somewhat subjective, though we do place importance on linearity as a measure of robustness. The reason for this is because in the absence of being able to predict the future, a balance chart that exhibits a linear pattern over its first 200 trades gives us some confidence future trades will continue the pattern.
‘Robustness’ is an elusive property that is highly desirable in all trading systems. It refers to how a particular strategy (or portfolio of strategies) performs over a period of time that includes many trading transactions. A robust strategy is one whose performance is consistent and doesn’t vary. A portfolio that includes a diverse collection of EAs has an advantage over a single EA in terms of its ability to trade in a consistent, robust manner.
From a statistical point of view, one could claim that a linear balance chart infers the portfolio trades in a robust manner. The “Before” and “After” linearity charts allow you to compare portfolio performance before and after pruning poor-performing strategies. R-squared is a statistical measure of how close the data are to a fitted, regression line. Roughly, it is the percentage of data points that contribute to a linear, fitted curve. And if linearity can be considered a measure of robustness, then R-Squared provides a valuable metric by which we can compare one balance chart with another.
Articles of interest:
Regression analysis and interpreting R-squared and Goodness-Of-Fit.
Multi-Market techniques for robust trading strategies.
Monte Carlo approach to stress-test a trading strategy.
Correlating Strategies
The “correlation” chart displays overlaid Balance (blue) and Price (black) charts. In addition, markers can be added to show the trades for one or more strategies. In this way we can (a) determine whether there is any correlation between strategies in terms of their trading patterns, and (b) better see how our strategies and portfolio performs during different market conditions — e.g. trending up, trending down, ranging, etc.
To use this feature it is necessary to import Price chart data (in CSV format) from MetaTrader. If you are not sure how to do this, you can Google “mt4 save csv price chart”. The period (i.e. time frame) does not matter — that is up to you. However, what is important is the data horizon of this data set must include all the dates in your Account History. Also, keep in mind this is a date-based chart (i.e. the X-axis is a date), compared to a trade-based chart where the X-axis is Trade #.
Once the Price chart data is loaded then the graph displays overlaid Balance (blue) and Price (black) charts. The black squares represent the close prices for the bar data that was imported. You may see what appears to be gaps in the Price chart — these are not gaps but, rather, weekend dates when the market is closed. From these overlaid charts it may be interesting to examine how your portfolio, as a whole, performs during different market conditions (i.e. when the price trends up, down or is ranging).
By selecting strategies (magic numbers) from the list then colored markers are added to the Balance chart to show the dates their trades were closed. This information is interesting for a couple of reasons: (a) it shows how strategies perform during different market conditions, and (b) you can see whether or not there is any correlation between the trading patterns of different strategies. If the trading patterns are similar for two strategies it might mean they are duplicates, or it might mean they are equally effective at generating open and close signals.
Using the ‘Show All’ and ‘Clear’ buttons in the upper-right portion of the graph will display (or hide) all the trades for all the strategies. This may be interesting in that now you can see how your portfolio performs, as a whole, across different market conditions.
Source Code Modifications
In order to exclude a strategy from a portfolio EA it is necessary to make a few minor modifications to its source code and then rebuild. MT4 Tracker keeps these changes to a minimum and uses comments — rather than actually deleting lines of code. Below is an example of the types of modifications that are made:
Adding OnDeinit() For Strategy Tester Analysis
It turns out you can use MT4’s Strategy Tester to collect trading data on your portfolio EA that can then be analyzed by MT4 Tracker. This is very useful because it allows you to analyze each strategy’s performance and potentially exclude it from the portfolio before you use the portfolio EA in a demo or live account. Furthermore, MT4’s Strategy Tester uses your broker’s data — which may be slightly different than the data set used to generate / train the strategies in your portfolio EA.
By default, the *.mq4 portfolio EA created by EA Studio does not use an ‘OnDeinit’ function. You can safely add the code below anywhere in the source code file and it will be called by Strategy Tester when the back testing completes. The code inside this OnDeinit() function only executes during back testing — as you can see from the use of the conditional ‘if(true == MQLInfoInteger(MQL_TESTER))’.
MT4 Tracker can also insert this code for you. When you follow the procedure to exclude strategies from the portfolio EA then MT4 Tracker will insert the OnDeinit() function, in addition to modifying the source code to exclude strategies.
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // $(MT4 TRACKER ) void OnDeinit(const int reason) { if(true == MQLInfoInteger(MQL_TESTER)) { string strLogFilename = "StrategyTester" + "_" + _Symbol + "_" + IntegerToString(_Period) + ".log"; // If the file already exists, then delete it... int handle = FileOpen( strLogFilename, FILE_READ | FILE_TXT ); if (handle != INVALID_HANDLE) { FileClose(handle); FileDelete(strLogFilename); handle = INVALID_HANDLE; } // Create the LogFile... handle = FileOpen(strLogFilename,FILE_CSV|FILE_WRITE|FILE_READ,","); if (handle < 0) { Print("*** ERROR: OnDeInit: Could not create log file: ", strLogFilename ); return; } int PosType; double Lots; datetime OpenTime; double OpenPrice; double StopLossPrice; double TakeProfitPrice; double Profit; double Commission; // long Ticket; string PosComment; long MagicNumber; int iHistoryTotal = OrdersHistoryTotal(); for(int i = 0; i < iHistoryTotal; i++) { if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { // Print("Error with OrderSelect: ",GetErrorDescription(GetLastError())); // Comment("Cannot check current position!"); continue; } if(OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) { // Print("Trade [" + IntegerToString(i) + "]: Pending Order"); continue; // A pending order. } PosType = OrderType(); OpenTime = OrderOpenTime(); OpenPrice = OrderLots() * OrderOpenPrice(); Lots = OrderLots(); Commission = OrderCommission(); Profit = OrderProfit() + OrderCommission(); StopLossPrice = OrderStopLoss(); TakeProfitPrice = OrderTakeProfit(); PosComment = OrderComment(); MagicNumber = OrderMagicNumber(); string text = "Trade [" + IntegerToString(i) + "]: " "Time=" + TimeToString(OpenTime,TIME_SECONDS) +", "+ "Type=" + (PosType==OP_BUY ? "Long" : "Short") +", "+ "Lots=" + DoubleToString(Lots,2) +", "+ "Price=" + DoubleToString(OpenPrice,_Digits) +", "+ "StopLoss=" + DoubleToString(StopLossPrice,_Digits) +", "+ "TakeProfit=" + DoubleToString(TakeProfitPrice,_Digits) +", "+ "Commission=" + DoubleToString(Commission,2) +", "+ "MagicNumber=" + IntegerToString(MagicNumber) +", "+ "Profit=" + DoubleToString(Profit,2); string text2 = IntegerToString(MagicNumber) + "::" + DoubleToString(Profit,2); // Write line to log file... FileWrite( handle, text2 ); } FileFlush(handle); FileClose(handle); } return; }
Licensing
MT4 Tracker software is copyrighted © by Nuts About Nets, 2006-2017.
MT4 Tracker – Application For Managing And Optimizing MT4 Strategy Portfolios
END USER LICENSE AGREEMENT (EULA)
Except where otherwise noted, all of the documentation and software included in the MT4Tracker software package is copyrighted by Nuts About Nets, LLC.
IMPORTANT-READ CAREFULLY:
This Nuts About Nets, LLC End-User License Agreement (“EULA”) is a legal agreement between you (either an individual or a single entity) and Nuts About Nets, LLC for the MT4Tracker software product identified above, which includes computer software and may include associated media, printed materials, additional computer software applications, and “online” or electronic documentation (“SOFTWARE PRODUCT”).
By downloading, installing, copying, running, executing, or otherwise using any portion of the SOFTWARE PRODUCT, you agree to be bound by the terms of this EULA. If you do not agree to be bound to the terms of this EULA, then please do not download, install, accept (for example, and not by way of limitation, by checking the “I DO NOT ACCEPT” box in connection with this EULA at the beginning of the software download, installation, and/or initial execution process), or permit others to download, install, copy, run, execute, or otherwise use the SOFTWARE PRODUCT.
SOFTWARE PRODUCT LICENSE
The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
1. GRANT OF LICENSE. This EULA grants you the following rights:
a. SOFTWARE PRODUCT. You may install and use one copy of the SOFTWARE PRODUCT on a single computer, including a workstation, laptop or notebook machine, terminal or other digital electronic device (“COMPUTER”).
b. Storage/Network Use.
You may also store or install a copy of the SOFTWARE PRODUCT on a storage device, such as a network server, used only to install or run the SOFTWARE PRODUCT on your other COMPUTERS over an internal network; however, you must acquire and dedicate a license for each separate COMPUTER on or from which the SOFTWARE PRODUCT is installed, used, accessed, displayed or run. A license for the SOFTWARE PRODUCT may not be shared or used concurrently on different COMPUTERS.
c. No Sale. You acknowledge and agree that this copy of the SOFTWARE PRODUCT has been licensed to you pursuant to the terms and conditions of this EULA and that such copy of the SOFTWARE PRODUCT has not been sold to you. In addition, you acknowledge that this copy of the SOFTWARE PRODUCT is not subject to the “first sale” doctrine as that term is defined in United States Copyright laws.
d. Restrictions. You agree (i) not to copy, transfer, assign, rent, resell, distribute or use the SOFTWARE PRODUCT other than as expressly authorized in this EULA, (ii) not to remove any copyright notice, trademark notice, and/or other proprietary legend or indication of confidentiality set forth on or contained in the SOFTWARE PRODUCT, and (iii) to refrain from using the SOFTWARE PRODUCT for any other purpose other than as expressly authorized in this EULA.
2. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.
a. Limitations on Reverse Engineering, Decompilation, and Disassembly. You may not reverse engineer, decompile, recompile, precompile, disassemble, hack, port, or otherwise attempt to discover the source code to the SOFTWARE PRODUCT.
b. Support Services. Nuts About Nets, LLC may provide you with support services related to the SOFTWARE PRODUCT (“Support Services”). Any supplemental software code provided to you as part of the Support Services shall be considered part of the SOFTWARE PRODUCT and subject to the terms and conditions of this EULA.
c. Software Transfer. You may permanently transfer all of your rights under this EULA, provided you retain no copies, you transfer all of the SOFTWARE PRODUCT (including all component parts, the media and printed materials, any upgrades, and this EULA) and the recipient agrees to the terms of this EULA. If the SOFTWARE PRODUCT is an upgrade, any transfer must include all prior versions of the SOFTWARE PRODUCT.
d. Termination. Without prejudice to any other rights, Nuts About Nets, LLC may terminate this EULA if you fail to comply with the terms and conditions of this EULA. In such event, you must destroy all copies of the SOFTWARE PRODUCT and all of its component parts.
3. INTELLECTUAL PROPERTY RIGHTS.
All title and intellectual property rights in and to the SOFTWARE PRODUCT, and any copies you are permitted to make herein are owned by Nuts About Nets, LLC. Furthermore, you agree that Nuts About Nets, LLC owns all right, title, interest, and intellectual property rights in and to the SOFTWARE PRODUCT and in all patents, trademarks, trade names, inventions, copyrights, know how and trade secrets, and any related applications or extensions, relating to the design, manufacture, operation or service of the SOFTWARE PRODUCT.
4. EXPORT RESTRICTIONS.
You acknowledge that the SOFTWARE PRODUCT is subject to United States export jurisdiction. You agree to comply with all applicable international and national laws that apply to the Software Product and/or to the export of technical data, including the United States Export Administration Regulations, as well as end-user, end-use, and destination restrictions issued by the United States and other governments. You agree that you will not export or re-export the SOFTWARE PRODUCT (or portions thereof) to any country, person or entity subject to U.S. export restrictions. You specifically agree not to export or re-export the SOFTWARE PRODUCT (or portions thereof): (i) to any country subject to a U.S. embargo or trade restriction; (ii) to any person or entity who you know or have reason to know will utilize the SOFTWARE PRODUCT (or portion thereof) in the production of nuclear, chemical or biological weapons; or (iii) to any person or entity who has been denied export privileges by the U.S. government.
5. DISCLAIMER OF WARRANTIES.
To the maximum extent permitted by applicable law, Nuts About Nets, LLC and its suppliers provide the SOFTWARE PRODUCT and any (if any) Support Services “AS IS AND WITH ALL FAULTS”, and hereby disclaim all warranties and conditions, either express, implied or statutory, including, but not limited to, any (if any) implied warranties or conditions of merchantability, of fitness for a particular purpose, of non-infringement, of lack of viruses, of accuracy or completeness of responses, of results, of ability to achieve a particular result, of ability to execute uninterrupted or error-free, and of lack of negligence or lack of workmanlike effort, all with regard to the SOFTWARE PRODUCT, and the provision of or failure to provide Support Services. THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE PRODUCT AND SUPPORT SERVICES, IF ANY, REMAINS WITH YOU.
Specifically, and without limiting the foregoing, you acknowledge that Nuts About Nets, LLC has not made any representations or warranties with respect to the SOFTWARE PRODUCT or the functionality thereof and has made no representations or warranties with respect thereto. In addition, you acknowledge that you have selected the SOFTWARE PRODUCT, and that Nuts About Nets, LLC makes no representations or warranties with respect to the fitness of the SOFTWARE PRODUCT for any purpose.
6. NO SUPPORT
Nothing in this EULA shall obligate Nuts About Nets, LLC to provide any support for the SOFTWARE PRODUCT. Nuts About Nets, LLC may, but shall be under no obligation to, correct any defects in the SOFTWARE PRODUCT and/or provide updates to You of the SOFTWARE PRODUCT. You shall promptly report to Nuts About Nets, LLC any defects You find in the SOFTWARE PRODUCT to aid Nuts About Nets, LLC in creating improved revisions of such items.
7. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER DAMAGES.
To the maximum extent permitted by applicable law, in no event shall Nuts About Nets, LLC or its suppliers be liable under any theory of liability for any special, incidental, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profits or confidential or other information, for business interruption, for personal injury, for loss of privacy, for failure to meet any duty including of good faith or of reasonable care, for negligence, and for any other pecuniary or other loss whatsoever) arising out of or in any way related to the use of or inability to use the SOFTWARE PRODUCT, the provision of or failure to provide support services, or otherwise under or in connection with any provision of this EULA, even in the event of the fault, tort (including negligence), strict liability, breach of contract or breach of warranty of Nuts About Nets, LLC or any supplier, and even if Nuts About Nets, LLC or any supplier has been advised or should know of the possibility of such damages.
8. LIMITATION OF LIABILITY AND REMEDIES.
Notwithstanding anything to the contrary contained in this EULA, and without limiting any other rights, remedies, limitations, or restrictions in this EULA or under law, Nuts About Nets, LLC will not be liable with respect to any subject matter of this EULA under any contract, negligence, strict liability, or other theory, at law or in equity, for any amounts aggregating in excess of amounts paid to it under this agreement in the twelve (12) month period before the cause of action arose.
9. INDEMNITY
You hereby agree to indemnify, protect, defend and hold Nuts About Nets, LLC harmless from and against any and all claims, losses and damages, including without limitation, reasonable attorneys’ and experts’ fees and disbursements, (a) which may at any time be asserted against Nuts About Nets, LLC by any party for Your failure to perform any of the covenants, agreements, terms, provisions or conditions contained in this EULA, (b) by any party by reason of Your use or misuse of the SOFTWARE PRODUCT, or (c) resulting from any failure by You to comply with any term or condition of this EULA. The provisions of this Section 10 shall survive the expiration or earlier termination of the EULA.
10. ENTIRE AGREEMENT.
This EULA (including any addendum or amendment to this EULA which is included with the SOFTWARE PRODUCT) is the entire agreement between you and Nuts About Nets, LLC relating to the SOFTWARE PRODUCT and the Support Services (if any or many) and it supersedes all prior or contemporaneous oral or written communications, proposals and representations with respect to the SOFTWARE PRODUCT or any other subject matter covered by this EULA. To the extent the terms of any Nuts About Nets, LLC policies or programs for Support Services conflict with the terms of this EULA, the terms of this EULA shall control.
If any provision of this EULA shall be or become invalid, illegal, or unenforceable in any respect, the validity, legality, and enforceability of the remaining provisions contained herein shall not be affected thereby. No failure or delay in exercising any right or remedy shall operate as a waiver of any such (or any other) right or remedy. Any modification or waiver to this EULA must be in writing and signed by both parties. The language of this EULA shall be construed as a whole, according to its fair meaning and intent, and not strictly for or against either party, regardless of who drafted or was principally responsible for drafting this EULA or any specific term or conditions hereof.
Nothing in this EULA shall be deemed to create any type of agency, joint venture, or partnership relationship between the parties. Neither party shall have any right or authority to bind or obligate the other in any manner to any third party. In the event of any legal proceeding between the parties arising out of or related to this EULA, the prevailing party shall be entitled to recover, in addition to any other relief awarded or granted, its costs and expenses (including reasonable attorneys’ and expert witness’ fees) incurred in any such proceeding.