Etasoft forex generator 6 serial

Dating > Etasoft forex generator 6 serial

Download links:Etasoft forex generator 6 serialEtasoft forex generator 6 serial

Best trading indicators forex Fxdd forex peace army Forex trading secrets ebook Forex training course south africa Forex ea generator 6 keygen Ubs abbott stock options Forex combo system download Fbs forex bonus Forex z pattern How to open forex trading account in malaysia Forex trading online indicators. The danger is that once EA is left unattended power failure or some other technical problem like lost Internet connection will close terminal or turn off EA and stealth stoploss will never run. Pinnacle plus, pinnacle, studio, studio v9. Use Print Functions to Chart to see what values indicator returns. Martingale risk management is typically used to double the lot size double the risk on loss until profit is reached. It provides all of the. Each block is directly connected to On Every Tick so it will execute on every tick. Вот что-то я не понимаю прелести создания такого советника.

Expert Advisors Testing EA Custom Code Etasoft Inc. Understanding On Every New Bar block Diagram Execution Before Going Live MT5 and MT4 Differences Custom Indicator Mode new since Generator version 4 CI Example 1 High Low as Histogram CI Example 2 Detrend Price Oscillator as Chart Line CI Example 3 Support and Resistance as Dotted Line CI Example 4 Spread as Chart Text CI Example 5 - Moving Average as Two Color Line CI Example 6 MACD as Two Color Histogram CI Example 7 itrend as Two Histograms CI Example 8 Moving Average Crossing as Arrow Tags Integrating Your Custom Indicator into Expert Advisor Third Party Custom Blocks License Agreement Etasoft Inc. List of Blocks for EA and Script Generator - MT Appendix B. List of Blocks for EA and Script Generator - MT Appendix C. List of Blocks for Custom Indicator Generator MT Etasoft Inc. If you are like most you are missing out on some of the important features of the Forex Generator. Don t be like most read forgotten manual. Forex Generator is designed to help you create Forex Expert Advisors, Custom Indicators and Scripts for MetaTrader platform. You can test your ideas without programming. Generated Expert Advisor, Custom Indicators and Scripts can help with trading or trade in automated mode. Diagram based interface offers incredible flexibility. It allows you to create complex trading setups. But do not be overwhelmed by all the possibilities. First create simple diagram that just executes orders. Once you get it working build on it. Start diagram with just few basic blocks. Then generate Expert Advisor or Script. Test it make sure it works the way you expect. Add few more blocks. Hardware Pentium 1GHz, RAM 256Mbt. Permissions Use run as Administrator if you are not an Administrator on that computer. Using Windows Vista, 7 or 8 Under Windows Vista, Windows 7 or Windows 8 programs execute in much more restrictive mode than in Windows XP. As a result of this restriction in some cases Forex Generator may not be allowed to execute compiler. This is because Forex Generator is blocked by Windows and not allowed to execute external compiler program. This can be fixed in a few different ways: 1. You can run Forex Generator with Administrator privilege. You can set Forex Generator to always execute with Administrator privilege. Right click on the fxgen. MT4 Compiler MT4 compiler mql. Then use Forex Generator Options screen to setup path to MT4 compiler. See our website Support page if you have troubles setting this up. Depending on what version of the terminal you choose you will get different set of building blocks. Therefore diagrams you create for MT4 cannot produce code that will run under MT5. If you do not setup compiler Generator will not be able to create Expert Advisor, Custom Indicators or Script for you. Target terminal is indicated on the main screen. Central part of the program is a diagram that helps you setup Expert Advisor and generate final compiled EA file. Top pane allows you to drop building blocks on to main diagram. Central pane contain diagram. Left pane contains properties and short description for selected block. Bottom pane contains results for generated EA. Professional Edition also shows generated source code in Source Code tab. All diagrams you build have to start with rounded block. Starting from it EA Generator will produce output EA file. All other blocks connect down from rounded block. Rounded block is the first function that will start Expert Advisor once it runs in the Forex terminal. We recommend you to use On Every Tick block in almost all setups. This is important if you are accessing current bar values in your blocks down below. On Every New Bar or Once Per Bar executes other blocks connected to it only when new bar starts forming in the chart, and therefore current bar bar with index 0 is not fully formed yet. Once you have rounded block on the diagram drop other blocks below it and connect them using a line from toolbar. You can draw a line following these steps: 1. Click left button of the mouse. Move mouse pointer over second block. Click on the second block by pressing left mouse button. This should draw a line with arrow pointing from rounded block down to second block. There are some useful shortcut keystrokes: 1. You can delete object from the diagram by simply pressing Delete key on your keyboard. Generate EA using F7 key. Generate Script using F5 key. One of the most important building blocks is a Technical Analysis block. It allows you to compare two indicators, bars or constant values. Once you click on any of those properties small button with three dots will appear in the corner of the field. Once you press it, pop up window will allow you to setup the expression. You can compare two moving averages or compare current bar value with previous bar closing value, etc. Use button to setup Technical Block expression. Tip: Instead of using button you can also edit property manually and enter indicator function or other expression by hand. It is not recommended unless you know MQL and have some programming knowledge. Once you have Technical Analysis block setup attach other blocks to it. In this example we are using Moving Average indicator that comes with the terminal. You can name exported variables and they will show up in the input parameters list when EA is used in the terminal. Important: Almost everything you enter in the Generator is case-sensitive. If you make this seemingly small mistake, nothing will work and you will probably get number of compilation errors. Restrictions for exported variables: 1. Exported variable name can not start with the number and must contain only letters and numbers. Exported variable name should be unique within Expert Advisor. In other words, you can not have two variables named period, but you can have one variable named period1 and another named period2. Such as double or string or int. Avoid using accent characters non-english letters. As you can see, the list of restrictions for variable names is rather long. One easy way to avoid some of the problems is to use 2-3 letter prefix for your variable names. Example: myperiod, myshift, mymethod, etc. Here prefix my is used to form unique names that do not conflict with the rules above. Instead of my you can use initials of your first and last name as prefix. Import Other Custom Indicators EA Generator can import some of the custom indicators found on the Internet. Use Import Custom Indicator menu and after import selected custom indicator will appear in the Expression drop down list. Compiled custom indicators do not return information on how many and what parameters they use. You can still call compiled custom indicators via Technical Analysis block, but you need to manually enter call syntax in a form of: double icustom string symbol, int timeframe, string name,... See below for sample. Problem with most custom indicators found online is that they come with zero documentation. If you drop them on the chart they show some graphical information but what values they return is not documented. Without knowing what values they return it is not possible to understand how to integrate them into your EA. Some custom indicators are simply not designed to be used via Expert Advisor. Since most custom indicators found on Internet forums are free they come with no support. Authors of the custom indicators are usually only interested in developing indicators but not documenting or supporting them. Use button next to property value to setup exact syntax for the call. There are a lot of custom indicators on the Internet. Most indicators have no documentation on how to use them in EA. Because some can not be used in EA since they do not return any meaningful values for EA to use. Most indicators designed in a way to return different value based on your request. Mode can have values from 0 to 7 inclusive. It is that simple. There are steps on how to do it: 1. Create another new EA in Forex Generator. Run new EA in demo account in MT4 and see what values come back from the indicator and are displayed on the chart. That way you can decide what value you need. Use Print Functions to Chart to see what values indicator returns. Another way is to have someone with programming skills look into source code for the indicator and find used Line index value as well. It is not difficult. Look for SetIndexBuffer function in custom indicator source code. There might be many SetIndexBuffer functions. In that case it is not so simple to understand which one you need. How to Combine Blocks You can combine blocks so they would execute one after the other or would execute independent of each other. If you chain one Etasoft Inc. And if block in sequence fails with error or conditions for its execution are not met, other blocks below it will not run. In this diagram both Technical Analysis blocks will be executed in generated EA. If any one of the Technical Analysis blocks meets conditions following below blocks will be executed as well. In this diagram if any one of the Technical Analysis blocks meets conditions following below chains of blocks will be executed. It is also possible that both chains will execute if both Technical Analysis blocks meet conditions. In this diagram setup is more complete with Trailing Stop attached to rounded block so it would execute every time EA is executed in the terminal. This helps you to setup various trading scenarios where blocks can be combined in different ways to generate conditional code. If you want certain blocks to execute every time generated EA is executed in the terminal, connect those blocks to the first rounded Etasoft Inc. Typical blocks that should be executed all the time are Trailing Stop, Crawling Stop and other order management blocks. They should all be connected closer to the rounded block. In this diagram we have connected blocks in the circle. EA Generator will produce output file but if resulting EA is started in the terminal it might be running in infinite loop notice how arrows are connected in circle. While in some rare cases it might be desired behavior we recommend to avoid these setups and always draw arrows down and never make infinite loops. You can change names of the blocks on the diagram. You can also add text labels on the diagram that could help you to identify what each block chain is setup for. Use menu Edit to perform various operations on the diagram. You can cut, copy and paste blocks in the diagram. There are also operations for undo and redo changes made to the diagram. Order Id Most order execution and order management blocks contain Order Id property. This property sets unique identifier number for new order so later those order s could be identified by order management blocks and handled separately from other orders. Using different Order Id you can separate long buy positions from short sell positions. Order Id is most useful property when it comes to order execution and management in scenarios when you have more than one order open at one time. Let s say you have scenario where you open two orders at once, one with smaller stop loss and take profit than the other. Now you can setup Trailing Stop to trail only second order, simply use different Order Id for both orders and set Trailing Stop with Order Id from the second order. Order Id is important when you want to use Close Order block in cases when you have more than one order open at a time. Then you can identify what specific order to close. If you ever programmed MT4 or MT5 you have probably came across so called magic number. Order Id is the same as magic number. We have used a term Order Id because it is easier to understand main purpose of this numeric identifier and its use in the Generator. Usually it is best to start your EA small and then build on it. Use incremental development technique add few blocks to the diagram, compile EA, test it in the terminal. If it works, then add few more blocks. In initial stages use various diagnostic blocks that print messages to the log or on the screen when EA runs in the terminal. This helps to see that EA is actually working. Finding Orders with Order Id Once you start to work with more than one order at a time understanding and using Order Id becomes essential. Before taking any action on list of orders or deciding to open close more orders you need to find out if you have any orders with specific Order Id already. Simplest situation would be when you get signal from Technical Analysis blocks and would like to open more orders but only if there are no orders open already. Forex Generator contains number of blocks that check if there are already orders with specific Order Id. All of those blocks work with current pair of the chart. They do not check other currency pairs for open orders on them. If No Order Exist - is most generic one. It simply checks if there is no market or pending order already. If Order Exists - checks for market orders. Uses both Order Id and Order Type. If Order Does Not Exist - checks if market orders do not exist. Uses both Order Id and Order Type. Exist is similar to If Order Exists but it can check set of Order Ids not just one Order Id. Do Not Exist is similar to If Order Does Not Exist but can also check set of Order Ids. Orders If ECN or STP Broker parameter is set to True market orders are executed in two steps: order is sent and then it is modified. One box such as Buy Order represents two operations. But you do not need two boxes: one to open order and one to modify it, single Buy Order or Sell Order box does both operations internally. If ECN or STP Broker parameter is set to Etasoft Inc. Forex Generator version 6. When testing new EA set high values for Stoploss and Takeprofit. Some Forex brokers do not allow small values and will keep on throwing errors at you if Stoploss and Takeprofit values are below they allowed limit. Pending orders also have special parameter Expiration. It is a number of minutes for the order to be pending. If you want it to be good for an hour set it to 60. In that case you have to leave it at zero since any other value will cause error. Price Offset is special parameter that can have negative value depending on what type of pending order you want to create. BUY LIMIT and ASK LIMIT may have negative offset values. Let s say you want to open BUY LIMIT order that is 5 pips below current Asking price. Simply enter -5 in the property sheet. If you setup compiler via Options screen EA Generator will create and compile EA in.. After compilation restart your MetaTrader platform and your Expert Advisor will be imported and show up in the list of Expert Advisors in MetaTrader. Otherwise Expert Advisor will not be allowed to open new orders. Generated EA uses symbol pair that is displayed on the chart. So if you start EA on the chart for EURUSD then it will use that pair for all the orders and technical analysis functions. General Guide on Building Blocks Expert Advisor you are building may be used to assist you in trading or trade by itself in automated mode. Depending on this you have to choose what building blocks to include and how to arrange them. EA Generator comes with number of building blocks grouped based on they functionality: 1. Those are main blocks that start EA execution. You can have only one Event block in your diagram. Signals contain technical analysis blocks. Technical Analysis blocks where you make a decision to open, modify or close traded positions. Order execution blocks open, modify or close positions. You can choose to use Risk Managed blocks where you can setup Risk parameter in percentage and Lots will be calculated based on that number and Free Account Margin. Order management blocks perform various automated management tasks, such as trailing stops, etc. Filters perform additional filtering before your EA gets to technical analysis and order execution. You can limit your EA execution to certain days of the week, certain hours and limited spreads. Utility blocks help with other extra tasks such as output extra information in the log, on the chart or sound beep. Custom code blocks give you ability to add your own functions and blocks of MQL to the diagram. Signals and Filters are special blocks because they execute other connected blocks only if conditions are met. This allows you to setup processing to execute certain blocks only under special circumstances. Some blocks in Order Management group also act as filters. They start with word If or Check. Such blocks are If Order Exists or If Order Does Not Exist. Those are useful in cases when you want to check if certain order s are open and take special actions on them. Example: check if order with specific Order Id is still open and then close or modify it. Some Expert Advisors get very complex and when you run them in backtest it is impossible to understand why they work the way they work. There are few diagnostics building blocks that can help you with that: 1. If you are using MT4, run backtested EA in Visual Mode, and pause it at critical moments when trades are made, modified or closed. If you are not sure indicators give you right signals use block Print Functions to Chart to see what values they return. If you not sure certain parts of the diagram gets executed or not, or just want to check processing flow, use blocks Print to Log. Place those blocks in critical spots in the diagram. Once backtested EA is paused, check Experts tab for your log entries. Blocks like Trailing Stop, Break Even or Trade Up have to be attached directly or almost directly to the On Every Tick. These blocks monitor every tick and perform order management on already open orders. If they are not attached in a way to run on every tick, they might miss an opportunity to open more trades in case of Trade Up , or miss break even opportunity in case of Break Even , etc. Break Even, Trailing Stop, Trade Up, Trade Up Trailing, etc. Note: If you use Break Even you do not need Trailing Stop in the same diagram since Break Even also trails orders. You may try to open two orders one for long buy and one for short sell position but Expert Advisor opens only one of them. This is probably because your broker does not allow hedging. Check the log for Expert Advisor look under Expert tab in the Forex terminal. Set Detect Broker Digits to True or make sure to setup 5-digit broker support on rounded block in the diagram if you are using broker that uses 5 digits after the decimal point to represent currency values. When using Stoploss and Takeprofit values make sure to set them above broker limit. Example: some brokers limit how small your Stoploss can be. If you set it to 2-3 pips your broker may not accept values that small and your order will be open but will not have any Stoploss or TakeProfit set. Some brokers increase spreads when there is heavy trading and currencies fluctuate widely. If you are scalping or using other trading strategies that are very sensitive to spreads use Spread Filter block before you open a position. This will reduce your chance to open the position at a specific moment because EA will wait for spreads to calm down. But EA will not open position when spreads are huge and all your profits are eaten away by broker spreads. I am using moving averages and want to open position when they cross. Why does generated EA open a Buy position? Here was no crossing! There was crossing, but it has disappeared. The chart reflects indicator values on already formed bars and you can see their changes in a bar development process only using a visual testing mode or in real operation. Believe me, there was an intersection at the moment of position opening. If you wish, you can make the EA so, that positions will be opened upon the signals of formed bars. In such a case all signals will be visible on a chart. Use Shift parameter in Technical Analysis block and set it to 1 to access previous bar. If you set Shift to 0 you will access current bar that is still moving. Using already formed bars not current bar has a negative side effect - you might be too late for a trade because you are waiting for the bar to form before you make a decision to trade. EA Generator produces Expert Advisor and shows compilation successful message but when I run it in terminal it does not work. What do I do now? Simplify, simplify, simplify If you use pending orders change them to non-pending open market orders. If you use a lot of indicators for opening and closing positions change it to use only one simplest indicator. If your broker uses 5 digits after decimal point, make sure to check that option in EA Generator. Restart your MT terminal for changes to EA take effect. Once you have simplest EA working, build on it by adding more indicators. But test every additional feature you add. This is critical error. Most values you enter in property sheet are validated and should not cause compilation to fail. Some values in technical analysis block are not validated and can be manually edited and this could be source of errors. There might be some parameters that escape validation and cause compilation error. You can find our support on our website support page. License Initially installed product comes as time limited trial. If trial license expires you can purchase retail version online. Single retail license allows time unlimited product use on one computer. This will remove time limit and turn product into retail version. This information will be in the you receive after the purchase. Product comes in two Editions: Standard and Professional. Professional Edition creates both compiled and original source code files. It also shows source code in Source Code tab. They are simplified versions of Technical Analysis blocks. This chapter below describes how cross up and cross down can be done with Technical Analysis blocks. Question: when to use Cross Up and Cross Down blocks and when to use Technical Analysis blocks? Answer: If you need finer control over how indicators are used then Technical Analysis blocks are only way. Understanding Technical Analysis blocks is essential to effective use of the software. In many technical analysis blocks there are cases when you want to check when indicator crossed certain value going up or going down. This is especially true when working with Moving Averages. You want to know if faster moving Moving Average crossed slower one from the bottom going up or from the top going down and based on that trading decision would be made. Same applies to many other indicators like RSI, CCI or Stochastics. Basic idea is very simple: you use current and previous bar values of the indicator and compare them. There is example with Stochastics: 1. Check Stochastics for previous bar and then check Stochastics for current bar. If previous Stochastics value was above and current value is below some line fixed number then it is cross down going down. If previous Stochastics value was below and current value is above some line fixed number then it is cross up going up. There is also screenshot of similar setup with Moving Average MA : In this example only one Technical Analysis 2 is used. For both cross up and cross down you would need two Technical Analysis 2 blocks. One block would have reversed Compare and Compare2 parameters in order to check for indicator line crossing in opposite direction. Reducing Blocks When creating your diagram try to keep number of blocks to the minimum. Large diagrams take more time to generate, and create big resulting MT4 Expert Advisors. One way of reducing number of blocks is by using Technical Analysis 2 or Technical Analysis 3 instead of two or three simple Technical Analysis blocks. Resulting EA from those two diagrams will work the same way. MT5 specific: Diagrams below use building blocks specific to MT4. The differences between MT4 and MT5 block names are minor but important. One important point: blocks If Order Does Not Exist in MT4 in most cases have to be replaced with blocks If Position Does Not Exist. See chapter on MT5 and MT4 differences for details. This simple setup executes BUY order once fast moving average crosses slow moving average. Setup also prevents opening more BUY orders if one is already open. So EA would not be opening orders endlessly on every tick one after the other once conditions are right. We start with On Every Tick block that marks a point where our EA will start executing on every new tick. You can also setup a parameter based on your broker support for currency representation. If broker supports 5 digits after decimal point, setup 5-digit Broker parameter to true. This setup is just an example on how to setup basic building blocks and use Technical Analysis and Buy Order blocks together. It is not a full trading system. Press button Generate EA to make sure you have compiler setup via Options screen and your EA gets compiled successfully. This is where decision will be made to open BUY position or not. Use button to setup each function. In this case it is moving average. If fast moving average is above slow moving average, it is our setup so let s execute other connected blocks below. Use button to modify indicator function parameters. If Order Does Not Exist checks for existing BUY positions and only executed connected blocks if there is no other BUY open at the same time. Setup BUY go long order execution block with specific lot size, Stoploss and Takeprofit. That is the same setup as before but this time we have added another branch where we make a SELL if fast moving average crosses down below slow moving average. MT5 specific: Diagrams below use building blocks specific to MT4. The differences between MT4 and MT5 block names are minor but important. One important point: blocks If Order Does Not Exist in MT4 in most cases have to be replaced with blocks If Position Does Not Exist. See chapter on MT5 and MT4 differences for details. This is more complicated sample that uses custom indicators and pending orders. Again we start with On Every Tick block and add other blocks below it. In this case we use pending orders for BUY LIMIT and SELL LIMIT. Idea behind this setup is that once our custom indicator signals BUY go long or SELL go short setup, we open only one pending order 5 pips below current price and we expect market to fluctuate a bit in opposite direction than we expected and pending order kick-in to become open market order. We start with On Every Tick block that marks a point where our EA will start executing on every new tick. You can also setup a parameter based on your broker support for currency representation. If broker supports 5 digits after decimal point, setup 5-digit Broker parameter to true. Add Trailing Stop block to manage opened orders. We want to run Trailing Stop block on every tick so it is attached directly to On Every Tick block. Tailing stop checks if there are any open market non-pending orders and tries to trail currency prices, maximize profits and minimize risk. In some scenarios trailing stops are not effective. It all depends on your specific trading setup. Let say your EA opens two orders when it gets market signal via Technical Analysis block. You use one Order Id for the first order and use another Order Id for the second order. Now you can use trailing stops on the first order and do not use trailing stops on the second order. Add two Technical Analysis blocks. Each block is directly connected to On Every Tick so it will execute on every tick. But each Technical Analysis block will execute other blocks we later connect to them only if conditions are met and custom indicator signals us that it is time to do so. Problem with most custom indicators found online is that they come with zero documentation. If you drop them on the chart they show some graphical information but what values they return is not documented. Without knowing what values they return it is not possible to understand how to integrate them into your EA. Some custom indicators are simply not designed to be used via Expert Advisor. Since most custom indicators found on Internet forums are free they come with no support. Authors of the custom indicators are usually only interested in developing indicators but not documenting or supporting them. Our indicator is very simple. It returns 1 when there is time to buy go long and -1 when there is time to sell go short. It also changes color indicating it on the chart. Because of this simplicity there is only one Technical Analysis block for buy and one Technical Analysis block for sell detection. This prevents us from keep on opening more orders of the same type. Because we are working with pending orders we may have orders that are still pending and orders that are already been filled. We want to make sure we do not open any new orders neither pending nor market orders. That s why two If Order Does Not Exist blocks are used. First prevents open market orders and second prevents more pending orders. Close any SELL orders we had open already since market signal changed direction. Another important parameter is Expiration. It is number of minutes how long pending order will be pending until it is filled or expires. We setup second branch of the diagram based on the first. You can add some text objects to the diagram to explain its execution better. EA Example 3 - Diagram Using Bollinger Bands This setup is provided for illustration purposes on how to use EA Generator and it is not a final profitable Expert Advisor. MT5 specific: Diagrams below use building blocks specific to MT4. The differences between MT4 and MT5 block names are minor but important. One important point: blocks If Order Does Not Exist in MT4 in most cases have to be replaced with blocks If Position Does Not Exist. See chapter on MT5 and MT4 differences for details. The Bollinger Trending System with ADX Filter strategy buys, goes long, when price breaks out above the second standard deviation Bollinger Band and confirms entries with the ADX index ADX above 20. It sells, goes short, when price breaks below the bottom of the second standard deviation Bollinger Band and confirms entries with the ADX index ADX above 20. When the strategy crosses back across the first standard deviation the strategy exits the trade. It works best in trending markets. This is more complicated sample that uses two indicators. There is first indicator to signal trade and second indicator to confirm it. Strategy also uses separate logic and one of the indicators to close any opened positions. Again we start with On Every Tick block and add other blocks below it. You can also setup a parameter based on your broker support for currency representation. If broker supports 5 digits after decimal point, setup 5-digit Broker parameter to true. There is our simplified setup using Bollinger Bands without closing signals indicated on the chart. There is our Bollinger Bands indicator setup. This is just an example. You can use other indicators of your choice. If it is above that value, there is possibility of a trend and that confirms our initial signal that come from Bollinger Bands. There we check if BUY order is already open and if it is not, we execute buy order. Risk parameter is a percentage based on Free Account Margin. There we add another Technical Analysis block. This one is for order closing. You can also use other indicators or parameters to close the order. If current bar Low is below Bollinger Bands first deviation, close any buy positions we might have. We add trailing stop block that will manage all open orders. Now we add more blocks that essentially mirror first part of the setup. There is complete setup. MT5 specific: Diagrams below use building blocks specific to MT4. The differences between MT4 and MT5 block names are minor but important. One important point: blocks If Order Does Not Exist in MT4 in most cases have to be replaced with blocks If Position Does Not Exist. See chapter on MT5 and MT4 differences for details. Enter long position when the current price touches Parabolic SAR indicator from below and it changes its direction. Enter short position when the current price touches Parabolic SAR indicator from above and it changes its direction. This is simple setup that relies on just one indicator. What is different about this setup it opens one type of position and does not open same type of position again until opposite position has been open. Example: if buy go long has been open, and it takes profit or stop loss, no more buy positions will be open. It will wait for sell go short and open only sell position. Once sell position is open, it takes profit or stop loss, and now waits for a chance to open buy position. We start with On Every Tick block that marks a point where our EA will start executing on every new tick. You can also setup a parameter based on your broker support for currency representation. If broker supports 5 digits after decimal point, setup 5-digit Broker parameter to true. In two Technical Analysis blocks we will compare values or previous closing bars with values of Parabolic SAR. If isar indicator value 2 bars ago is greater than closing bar value 2 bars ago AND isar indicator value 1 bar ago is lower than closing bar value 1 bar ago that means Parabolic SAR has reversed and will start going up go long buy signal. Opposite is good for signal reversal. We go short sell when isar indicator value 2 bars ago is lower than closing bar value 2 bars ago AND isar indicator value 1 bar ago is greater than closing bar value 1 bar ago that means Parabolic SAR has reversed and will start going down. We start with some utility blocks that help us to protect account from huge losses and also display useful information on the chart. But some trading strategies actually are better off without Trailing Stop. It is a matter of testing to see if Trailing Stop is worth having in any particular setup. Compare value of close 2 bars ago and Parabolic SAR indicator value 2 bars ago. Compare previous close with previous 1 bar ago isar to see if it has reversed. If the last order in history is the same as Order Type then other blocks attached below will be executed. This setup can work without Check Last Order Type block. When testing this setup initially do not use Check Last Order Type block and you should see more buy and sell orders executed. Brokers and Accounts One and the same Expert Advisor may give different trading results depending on what Forex broker and account it is running on. So you might have developed and tested your EA using one broker and it worked fine. You moved it to a different broker and results are terrible: some orders do not execute, cannot place tight stoploss, you are getting many requotes, etc. That is unfortunate truth brokers supply very different execution environments. While they all MetaTrader based but they all somewhat a little different. Forex brokers implement different rules and there are some specifics you might find: 1. Brokers have different spreads. But if you are scalping or using other method where even loss of one pip per trade means your EA is no longer profitable, spreads become very important. Broker will not allow you to open another opposite position. Not even pending position. Let say you have opened buy go long position, you see it is losing, so you try to open another position, this time sell go short just to compensate for the losses. Broker that does not allow hedging will block second request. So if market moves in either direction you close one of them. If your Forex broker does not allow hedging, second pending order will not be accepted, and you will end up with one pending order. Basically, if you open more than one position on a currency pair, you must close the first before closing the second one. That s the NFA s not-so-straightforward way of preventing hedging. If you only have one order open at a time, this is not a problem. If you open and close many orders, this can be a serious issue. Brokers have minimal stoploss and takeprofit requirements. If you set them too low you will get errors in the log Experts tab in the terminal. If you use pending orders brokers have additional requirements for order expiration and price offset. Pending order expiration can not be too short. Some brokers reject pending orders that are valid only for a few minutes. Forex Generator version 6. ECN brokers have some specifics too. How EA Generator can help you? EA Generator tries to create resulting EA code in a way that it would work on as many different brokers as possible. Some strategies are much harder to implement. There are some tips: 1. Also during heavy trading hours brokers tend to widen spreads and radically minimize your chances for success. You can use Spread Filter block just before you open any order to make sure that spreads are below expected reasonable value. There are some of the techniques shown in the diagram. If you suspect that broker is cheating and using stop hunting technique to close your orders with occasional sudden spike you can set stoploss parameter on your orders to very high value like pips. But then you need a method to close orders inside EA. One way to do it is use Close Order If block as stealth stoploss. It can close positions that drop below certain fixed amount. The danger is that once EA is left unattended power failure or some other technical problem like lost Internet connection will close terminal or turn off EA and stealth stoploss will never run. Stealth stoploss might work but the best solution is simple do not use broker that you know is stop hunting. Most building blocks use pips to indicate amounts. But Close Order If and Check Last Order Result blocks use parameter Amount. Amount is indicated as Profit in MT terminal. Currency Pair Sandbox and Order Id This chapter applies in cases when you have more than one EA running on different currency pairs different charts at the same time. While you might be using Order Id to select orders you want to work with, first question that comes to mind is usually: I know I can work with specific order using Order Id but what happens if I have same EA running on two charts two different currency pairs. Let say both EAs use same Order Id will they clobber each others processing? Short answer is no. The answer is no because each EA runs in isolation. Forex Generator automatically creates code in a way to isolate EAs on each currency pair. While at the same time 4 other instances of the same EA will be running orders on other currency pairs. This time only timeframe is different and that is not enough to isolate two instances of EAs. For most part you do not have to worry about other EAs running on other currency pairs. Only thing to remember is that all the EAs use same account information. So if you use let say Account Margin in your blocks just keep in mind that Account Margin is shared by all EAs running on different pairs. Any block that works with account information will affect EAs running in parallel. First it is best to test your strategy on single EA running without other EAs executing at the same time. But if you are into currency arbitrage you need much more advanced tools than Forex Generator anyway. Just keep in mind that currency arbitrage is prohibited by many brokers. Read fine print of your broker agreement. Expert Advisors Basic difference is that Expert Advisors in MT4 are executed on every tick and Scripts execute once only when you start them using some shortcut keystroke or drop script on the chart. Scripts are used for semi-automated trading. Use them when you need to run few commands at once. Example: you want to open 2-5 positions at once or you want to close multiple positions at once. Having good set of scripts can help you trade more effectively. You can use combination of scripts and Expert Advisor to run semi-automated trading. Semi-automated trading could be good option in cases when there is no strict system when to open orders the system is based on human expertise. But there is clear system on how to manage opened orders and when to close them. Example: create scripts to open orders and use them to start trades, and then start Expert Advisor to manage and close trades. Other combinations also possible: let Expert Advisor open orders then use scripts to close orders. Scripts are easy to generate using Generate Script menu. This simple script opens few pending orders at once. Some building blocks do not work well in scripts because they have to be executed repeatedly to produce desired outcome. Example: Trailing Stop, Crawling Stop, Execute N Times, Pause blocks do not work well in Scripts. All of these blocks rely on repeated execution by the terminal, and terminal repeatedly executes Expert Advisors not Scripts. In this case EA will work as a helper in semi-automated mode. There are many additional blocks that help you manage and log execution. Print Info to Chart and Print Functions to File are useful to see what is going on and log actual indicator values into exported text file. Additional blocks that help log and display information. Testing EA When testing EA use both Strategy Tester for back testing and demo account for forward testing in the terminal. Some building blocks do not work well in back testing and can only be tested in demo forward testing. Back testing is a simulation. Functions like local time, market price spread and history are simulated and artificially created in terminal during back testing. If you want more accurate results use demo forward testing. Sometimes when you run strategy in Strategy Tester it may not be obvious why certain trades have been placed. Use Visual Mode to see exactly what is going on. Place all the indicators you use when running Strategy Tester in Visual Mode. Then stop at the point when trades are placed. It is best to use small date time periods for initial testing - one to two days. If you run Strategy Tester all the way thru all the trades to the end without stopping, and then scroll the chart back sometimes it looks like EA entered trade for no reason. You need to run it in Visual Mode in Strategy Tester and stop at exactly the point when trade is entered. Make sure to have indicators open on chart when in Visual Mode. If you are testing EA in demo forward testing mode initially place a lot of Print to Log blocks in your diagram. This will help you see what blocks have executed and what blocks have not. Log is produced in the Experts tab in the terminal. Also use Print Info to Chart or similar blocks to print diagnostic information directly to the chart. If you want to add your own custom code you can take one of two steps: 1. Rename generated file and customize it from that point on. Now if you decide to change something in the original diagram and regenerated EA or Script you will have to move your code back into regenerated version manually. This is forwardonly approach to development, and should be used most of a time since it gives you full control over final result. Instead of taking generated MQL file and adding your own custom code you can enter your own MQL into custom generator blocks Custom Code or Custom If in the diagram and that way every time diagram is regenerated your code will not be overwritten and lost. Your code will become part of the diagram. This approach should be used only if your custom code is really small 4-8 lines of code. If you have larger blocks of custom code use Project - Code Library menu. You can add custom code that becomes individual block and gets added to the toolbar as reusable building block. This is for blocks of code up to lines. This chapter covers some of steps on how to use second approach. There are custom MQL code blocks and custom if statements. Warning: do not use Custom Code, Custom If and Utility Code unless you have programming experience and know MQ language. Custom Code, Custom If and Utility Code blocks are designed to hold small chunks of code. Generator can not check syntax of the code you place into those blocks. Inside Custom Code block you can place your own code in MQ language. However function name and braces are created by the Generator. Function naming is left for the Generator because otherwise it would not be able to call the function based on arrows pointing to the block. If you need to have complete control over function names and parameters use Utility Code blocks. Utility Code blocks are treated different from any other block on the diagram. Since generator does not create function names for functions inside Utility Code blocks they should not be connected via arrows to any other blocks. They are stand-alone pieces of your own custom code. Essentially use of Custom Code vs. Utility Code is a trade off: 1. When you use Custom Code you can draw arrows to it and it will be called from the diagram based on those arrows. But you can not create function name and pass any special parameters to the function. Your code gets wrapped with function name and brackets created by Generator. When you use Utility Code you can not draw arrows to it. If you draw arrows anyway, those arrows to and from Utility Code will not be used by the Generator. But inside Utility Code you can have any number of functions and pieces of independent code. You can name functions, have them accept number of different parameters and have various return values. Utility Code gives you more freedom but you have to call it yourself from within some other block in the diagram. You can enter your own MQ code that gets wrapped into the custom function that is called based on how arrows are arranged. There is Custom If block example. It simply checks if it is Monday and then executes Technical Analysis block below. Custom If can compare indicator values, call external functions and compare results, etc. Result of a parameter called an Expression should always evaluate to Boolean value True or False. You can also include complete functions and full code blocks via Utility Code. Generator will not create function name and Etasoft Inc. So you have to provide full function. Forex Generator version 6. Simply right click on it to get to pop up menu with options. Another option for code reuse is Code Library feature. You can add your own custom blocks to the set of existing blocks. Those blocks work as if they are Utility Code or Custom Code blocks but you can have them setup on the toolbar as separate selectable building blocks. Those blocks when dropped on the diagram are independent pieces of code same as Utility Code or Custom Code blocks. Utility Code blocks should not be connected using lines. Instead call them from Custom Code blocks. Using Code Library you can have number of common code blocks that are used in number of your EA setups ready for you whenever you start new diagram. Martingale and Semi-Martingale There are number of different risk management scenarios possible. Generator creates some scenarios via Buy Order Risk Managed and Sell Order Risk Management blocks. Both blocks are rather complex and contain number of parameters that interplay to calculate final risk value and lot size for current order. Using those blocks you can setup Martingale or Semi- Martingale system or some combination of both. Martingale risk management is typically used to double the lot size double the risk on loss until profit is reached. Once profit is reached risk gets reset to initial value and it all starts again. Building blocks provide facility to double risk on profits too. If you want to reduce risk use fractions in Risk Multiply On Loss or Risk Multiply On Profit parameters. Martingale use requires you to have large account balance and increases possibility to have full account loss. In this screenshot it doubles down until profit is reached, at which point it resets the risk to initial value set in Risk parameter. Semi-Martingale risk management is similar to Martingale but risk and lot size is increased more gradually. Instead of multiplying risk it adds or removes certain fixed percentage to or from current risk. Use negative values for Risk Change On Loss or Risk Change On Profit if you want to reduce risk. Notice negative number in Risk Change On Loss. Understanding Pending Orders There are 4 pending order types in MT4. Usually pending orders are set at some offset from the current price. Pending order becomes market order when conditions based on pending order type are met. Pending orders can not be closed instead they are deleted. That is subtle but important difference. Brokers set certain limits on how close pending order can be created to current price. Usually pending orders can not be created closer than 3-4 pips. Because there are 4 types of pending orders to open all the possible combinations you might need to use negative values on Offset, Stoploss and Takeprofit depending on pending order type. Once you get this error try setting negative values on Offset, Stoploss and Takeprofit. Use reasonable values such as -40 or -50 and do not use -2 or -3. Understanding History In many EAs you want to act on signals but also use information about already closed orders. One simple example: you want to open BUY based on the signal only if last closed order was not BUY you do not want to repeatedly open same type of order if it has been recently closed. It checks if last closed order has specific Order Id. Important: History tab is preserved even when EA is restarted. This is important if you use blocks that access History tab. If you restart EA, same last closed order is still in History. This is because History is not cleared when EA is restarted. So if you just check last closed order result and use Terminate block to terminate EA then obviously it will seem that EA can not start after restart. When in fact it checks history, finds closed order and gets terminated as soon as it starts. Important: History tab is shared by all EAs. In some scenarios this might be exactly what you want. But keep this feature of History in mind. History blocks while seemingly simple actually are not easy to work with. This is because you have EA that not just reacts to current conditions but also works with what happened in past. Extra testing is required when working with EA that uses History. It helps to setup simple diagram with just 5-7 blocks and see how it runs before you try to setup more complex scenario. Understanding Virtual Stoploss and Virtual Takeprofit Virtual Stoploss and Virtual Takeprofit setup and monitor stoploss or takeprofit inside EA instead of stoploss or takeprofit being set with the broker. Let say you have open an order but do not set its stoploss intead you use Virtual Stoploss connected to On Every Tick block and set its Stoploss parameter to 20. Now once market price moves 20 pips away from original order open price Virtual Stoploss will trigger. So these two blocks close order once market price moves set number of pips. Virtual Stoploss Trigger and Virtual Takeprofit Trigger are similar blocks but instead of closing original order they simply execute trigger other blocks connected to them. This is very useful when you want some EA operation triggered based on price action related to previously open orders. If Gap block is in essence a logical combination of Virtual Stoploss Trigger and Virtual Takeprofit Trigger. If Gap triggers connected blocks when price moves in set number of pips in any direction from original order. Example: let say you want to open Buy order and if market price moves against it 20 pips you want to open Sell order. Virtual Stoploss Trigger and Virtual Takeprofit Trigger are very powerful but rarely used blocks. Understanding Hours Forex market is open 24 hours on regular days. But most EAs trade only at certain hours in that 24 hour period. Forex Generator comes with number of time filtering blocks. Example: Hours Filter, Hours Filter as List, Weekday Filter, At Certain Time, etc. Blocks that have hours as parameters operate on 24-hour clock. Example: 1 PM is 13 and 5PM is 17, 9PM is 21 and so on. So if you want your EA to trade from 2AM till 6PM you would setup Hours Filter block to have From parameter set to 2 and To parameter set to 18. Hours Filter as List block is even easier to use as you simply list all the hours you want EA to trade separated by commas. Understanding Pending Orders There are 4 pending order types in MT4. Usually pending orders are set at some offset from the current price. Pending order becomes market order when conditions based on pending order type are met. Pending orders can not be closed instead they are deleted. Subtle but important difference. Important: Brokers set certain limits on how close pending order can be created to current price. Usually pending orders can not be created closer than 3-4 pips. Important: Because there are 4 types of pending orders to open all the possible combinations you might need to use negative values on Offset, Stoploss and Takeprofit depending on pending order type. In the example below all Offset, Stoploss and Takeprofit are negative. Situation when stoploss and takeprofit is set based on some formula that takes into consideration some of current market conditions. Simplest example would be where you want to set stoploss to lowest low of the past 10 bars. That means stoploss and takeprofit is flexible and set based on provided formula at the time of execution. Once stoploss is set it is no longer changing. So formula is used only at the time of block execution, it is not going to constantly update stoploss if lowest low keeps on changing. If you need stoploss constantly updated on very tick use other blocks like Trailing Stop or similar. Now getting formula right is usually the hardest part. This is where your math skills and chapters on Bar Values should help you. Typical cause is that you assumed common cases but forgot about edge cases. Always think about edge cases! Example: you setup stoploss to be lowest low of the previous bar. This is because your broker does not allow stoploss to be smaller than 4 pips and in some cases your formula returns lowest low that is less than 4 pips away from the current market price, EA tries to open order with stoploss less than 4 pips and broker rejects the order. You are using moving averages to check for cross on current bar. You expect to see single order open when cross happens. Instead you are sometimes getting multiple orders open on what appears as single cross. While this may seem like a defect in the EA, it is not. It is because of current value of moving average changing you are getting multiple crossing signals for the setup that suppose to report only one cross up or cross down. Same applies to Close, Low and High values. So for example current Close, Low and current High are not fixed. From EAs point of view there have been multiple signals multiple cross ups or downs. Now there are few ways to prevent multiple orders opening in this case. Tell EA to check if there are other orders already open with that same OrderId and OrderType and then do not open anymore orders if such already exists. Tell EA to open new orders only once per bar. That way you can see if EA is really getting multiple signals and how many signals it gets. Do not use current bar values. Instead use previous bar values. While in some cases it is viable solution in many cases EA strategies rely on most current signals from the market. Multiple Arrows Problem Let say you setup simple EA that will place arrow on the chart when two indicators cross up or cross down based on current bar values. But once you start this EA you notice that it paints multiple arrows on the same bar. What is going on? This is same problem as described in previous chapter called Multiple Orders. In short: EAs run on ticks, not on bars. Tick is single price change. Bars are useful visualization. See previous chapter called Multiple Orders for more detailed explanation. Exported Parameters Since version 2. Bar Values in MT5 In MT5 Generator provides functions to access current, previous, previous previous, etc. Example: to access current bar close value use Close 0 in Technical Analysis block. If you want to access previous bar value use Close 1. Previous previous close bar value is Close 2. Same applies to Low, High and Open. Current high is High 0 and previous bar high value is High 1 , etc. If you want to access low value of the bar 5 bars ago use Low 5. If you need close value of the bar 10 bars ago, it is Close 10. This still works if you use 4-digit brokers. But will not work on 5-digit brokers. PipValue variable adjusts pips based on what type of broker you use. If it is missing then EA can only be used on brokers that quote currencies in 4-digits 2-digits for some currencies but not on 5-digit 3-digit brokers. If you miss it, your EA will not work when you use it on 5-digit brokers. You need PipValue variable and Point without braces when adding or subtracting pips to bar values. Get the highest value on the 10 consecutive bars in the range from the previous bar to the 10th index inclusive on the current Etasoft Inc. So LOW is not the same as Low. If you enter LOW 1 instead of Low 1 it is not going to work. If something does not work, recheck the syntax. Make sure you have entered values, braces, special symbols the way they should be. You can also access bars for other timeframes using other set of functons: iclose, iopen, ilow and ihigh. If you want to see if overall daily price is moving up or down. You have got excited about the opportunity to build your own EAs without much programming involved. Dropped 40 blocks on the diagram, connected them but it does not work the way you expect. Why it does not work the way it should? Now diagram has too many blocks to understand and find where the problem is. Best way to approach any new trading setup is to start small. Start with 5 to 7 blocks. Make sure it works then grow it slowly by adding more blocks. Make backup copies of the diagram as work progress. If you add some blocks, and you can not find why suddenly it does not work, you can always take last backup copy and start from that point again. First place to check when your EA does not work the way it should is to check Experts tab in the terminal. Make sure that you have EA execution enabled, and live trading is allowed. If Experts tab does not list any errors you need to place more Print to Log blocks into the diagram. Use Print Functions to Chart block to see some indicator values on the chart as EA is executed. Run EA backtest in Visual Mode available in MT4. Pause execution at critical moments. Check Experts tab for Print to Log output. You can place number of graphical objects on the chart to give you some visual clues. Use Vertical Line and Arrow blocks. That way once EA runs SELL you will have price printed right on the chart. Keep in mind that charts in the terminal are by default based on Bid. That is important to understand. Especially for currency pairs that have wide spreads. The current price shown on an MT4 chart is the bid price. When looking at a price bar or candle, you need to add the spread to the high bid price to know what the high ask price would have been, or add the spread to the low bid price to know what the low ask would have been. If you are in a sell in at the Bid out at the Ask , you would not see the candle reach your stop loss if you are taken out of the trade. Sometimes it is hard to understand why diagram generated EA works the way it does. The easiest way to decipher these types of diagrams is actually rather simple. Take a piece of paper and write diagram as bunch of IF statements. Each Technical Analysis block is essentially an IF. Let say you are comparing bar values of Close in Technical Analysis 2 blocks and trading based on that. Make sure those are reasonable values. Mark them on paper. You might want to repeat this times with different numbers to make sure all kinds of scenarios are covered. Understanding On Every New Bar block Diagrams start EA or Script execution from rounded blocks. Your diagram can only have one rounded block. We recommend use On Every Tick block for almost all diagrams. The difference between blocks On Every Tick and On Every New Bar is huge. On Every New Bar is basically an extra filter on On Every Tick block. On Every New Bar receives all the ticks the same way On Every Tick block does but it executes connected blocks only when new bar starts. It basically means that if you use On Every New Bar block you are missing many ticks. You are missing information coming from the broker in a form of ticks. If you are watching a movie would you like to watch it all or just watch 1 minute of the movie out of every 5 minutes watch 1 minute and skip 4 minutes, watch another 1 minute skip some more, etc. That is basically the difference. Some building blocks do not even work accurately when connected to On Every New Bar instead of On Every Tick. Examples are Trailing Stop and BreakEven blocks. They need to run on every tick to be most accurate. In some cases you want to start some action when new bar starts. You can still do it without On Every New Bar block. That way you get the best of both worlds. You can run part of diagram on every tick while running some blocks only when new bar starts. Diagram Execution Let s say you have On Every Tick block on the diagram. Now all the other blocks directly connected to On Every Tick will run on every tick. The diagram is not going to run the way you expect. The problem is that Trailing Stop block is connected to the wrong place. For Trailing Stop to execute on next bar Moving Averages need to cross again. This will probably not going to happen for the next bars or more. So your Trailing Stop will not execute for long time missing many ticks in between. There is corrected diagram. Now Trailing Stop will run on every tick not just when Moving Averages cross. General observation that might help you understand why certain blocks run more often than others if you have many blocks between On Every Tick block and some A block, that A block will run only if every block on the way will also run because some blocks work as filters and run only under certain market conditions chances greatly reduce for the A block to run further away it is from On Every Tick block. Conditions are set via three Technical Analysis blocks. Obvious that Sell Order will execute much more often than Buy Order. If you have all the blocks in the diagram but generated EA does not run properly it is likely because blocks are connected incorrectly. You can check execution of EA by inserting Print to Log blocks in between other blocks in the diagram. Print to Log will output text into Experts tab in the terminal and help you understand order of execution of the blocks inside the diagram. Before Going Live Before you start using generated EA for live trading there are some important points to consider: 1. Make sure you have both backtested and demo forward tested your EA for at least 2 weeks. After you start trading live using your EA, do not leave it unattended for the first 2 weeks of live trading. That means, monitor your EA trading and do not leave it running by itself. Use various blocks and techniques that protect your profits or minimize losses. Example: use Stoploss, do not set it to zero. There are number of blocks that can stop EA execution if certain losses are reached. Those blocks are helpful when you start running EA in fully automated unattended mode. Such as running overnight or running during the day when you are busy at your day job. There are blocks that do not trade if spreads increase. Spreads eat your profits when you are using non-ecn broker. Spreads increase during high volatility. If your strategy depends on low spread values use blocks that check for spreads and do not open new trades at the moments when spreads increase. MT5 and MT4 Differences Visually MT5 might not seem that different from MT4 when you look at it. You have mostly the same screens and some additional features. But MT5 is very different in terms of programming of Expert Advisors and Scripts. MQ language has number of changes and code written for MT4 can not be easily reused in MT5. Also new language seems to be more verbose and generated EAs and scripts in most cases contain more code. There some new concepts in MT5 that just have to be understood. Term Order now applies to unexecuted or pending orders. Once order gets executed and is filled, it becomes Position. Therefore in version 3. Group 1 is for Orders that deal with pending orders or orders that will run and become Position. Group 2 is for Positions already executed market orders. Examples: Buy Order, Sell Order, Buy Pending Order all work with Orders while Trailing Stop, Close Position, Break Even blocks work on Positions. It was the main tool to test execution of Expert Advisors in MT4. MT5 Debugger runs very slow and does not seem to help much. Custom Indicator Mode new since Generator version 4 Since Forex Generator version 4 you can also build custom indicators using Custom Indicator Mode. Simply switch to this mode using Options screen. You can switch to Custom Indicator Generator mode using Options screen. IMPORTANT: Indicators differ in number of ways how they work inside the terminal. Indicators are executed different than Expert Advisors EA. Once you drop EA on the chart it starts executing main body of code on the first tick. But indicator dropped on the chart execute recalculate its values on all bars prior to this one. Same applies to the indicators. So instead of Shift parameter being set to zero 0 it should be set to word current no quotes. Only problem with using word current bar in Shift is that it can not be exported as parameter variable. Expert Advisors usually rely on signals from indicators therefore they mostly contain signal processing and order management code that is not very math intensive because calculations are done inside indicators outside of EA. Custom Indicators are usually more complex in terms of mathematical calculations than average Expert Advisor. Creating custom indicator in most cases requires more math skills or some background in computer science. Since Custom Indicators CI execute on every previous bar once CI is dropped on the chart special care is required in using blocks like Send , Alert and Beep. If you set Technical Analysis block incorrect and it will execute attached Send on every bar, as a result you will get as many s as many bars are displayed on the screen. It could be 50 to a 100 s at once. Same applies to Alert and Beep. Alert will be repeatedly displayed and beep will sound constantly. Instead of using Send , Alert and Beep try using Print to Log block first, and see what does get printed in the log. While Expert Advisor development required extensive use of Technical Analysis and Technical Analysis 2 blocks most Custom Indicators CI need blocks called Chart Line, Histogram, Dotted Line, etc. Other blocks like Vertical Line or Horizontal Line do not export they values as return parameters from custom indicator. It is used to create calculations Etasoft Inc. Those calculations can be used in your Expert Advisors or Scripts. Other blocks from Indicator section return result of the calculations as well and can be used in Expert Advisors but they also display some graphical information on the charts. You need have Forex Generator Professional Edition to create indicators that can be used in Forex Generator EAs. CI Example 1 High Low as Histogram We start our examples with the simplest Custom Indicator CI you can build in minutes. It is not very useful but shows basics of how to create custom indicator. We build it using only two blocks from the list of available blocks. That is On Every Tick and Histogram. On Every Tick block holds general indicator parameters such as Indicator Name, Indicator Window, etc. Histogram block helps us setup simple single color histogram on the chart or separate section of the window next to the main chart. There is our indicator open on EURUSD chart. As you can see this is simple histogram type indicator with only one type of graphical information in it. Indicators may have number of lines and graphic objects. We start small and show how to built simple things first. One indicator can contain few histograms and lines all packaged together. Internally each histogram or chart line gets unique index assigned to it. Forex Generator manages this for you automatically and assigns unique index to each histogram or chart line you place in the indicator diagram. But MT4 terminal limits number of buffer indices to 8 internally they are presented by numbers from 0 to 7. That basically means you should limit your indicator to 8 chart lines or histograms in one indicator. If you place more than 8 histograms or chart lines your indicator will most likely still work, but Expert Advisors or Scripts that use your new indicator will only be able to access calculations for the first 8 histograms or chart lines of your indicator. This limitation is lifted for MT5 terminal. You can have unlimited number of histograms or chart lines per indicator and access them all from EA or Script. CI Example 2 Detrend Price Oscillator as Chart Line This second example is different since it uses Chart Line instead of Histogram. It is called Detrended Price Oscillator. It tries to capture the short-term trend changes. Indicator's cross with zero is the best indication of such change. Indicator takes current bar close value and subtracts current Moving Average ima with specific parameters. This setup is also very simple. Main difficulty is to get Moving Average parameters entered correctly. You can enter this expression easier by using.. In the new screen simply select ima indicator from the drop down list and enter all the parameters for Moving Average. Then click OK in that dialog. Most indicators require more mathematical skills and testing until you get them right. Every time you create new Custom Indicator CI keep in mind that they get executed different from EAs or Scripts. CI Example 3 Support and Resistance as Dotted Line This example is a bit more involved. Indicator displays support and resistance levels. It shows them directly on the chart, providing an easy help when you want to set stop-loss or take-profit level, or when you want to see the next market target. This indicator uses the standard Fractals indicator. Then two separate dotted lines are used to draw indicator s support and resistance levels on the chart. Next we place Dotted Line block on the diagram and sets its parameters. There is setup for dotted line that will be displayed as red upper line. Dotted Line block can be seen as Technical Analysis block and Dot Line combined into one block. While this is useful it can be improved even more. We copy previous bar value using Buffer variable. CI Example 4 Spread as Chart Text There is another simple but useful indicator that displays spread on the main chart window. The spread is redrawn after each tick, ensuring the most current spread value. This can be useful for brokers with variable spreads or with spreads that are widened often. There is resulting indicator. We use two moving averages current and previous. There is our new indicator in action. We use Histogram 2 block and take two moving averages: fast SMA and slow SMA. You can change this indicator to use EMA or any other mode or type of moving average. CI Example 7 itrend as Two Histograms itrend shows in the manner of two-color histogram trend direction and trend power. The itrend's basic signals - zero line crossing, reaching new maximum or minimum, divergence and convergence. There are number of resources online that discuss this indicator. This is simplified version of the well known indicator as it uses number of fixed hardcoded values and does not allow much customization. But you can modify it to export variables. We use two Histogram blocks to create this Custom Indicator.

Last updated