Техническое задание
Building a ZigZig_EA MT5
If you used ZigZag indicator at least once, you know how many compromises you have to make when searching for optimal parameters. Too small parameter values divide a big movement into small parts, while too big parameter values skip short movements. The algorithm for searching graphical patterns is very demanding as of quality of finding extremums. While trying to find a middle ground, I decided to use the indicator with small parameter values and create an additional superstructure combining unidirectional movements with short corrections into one movement.
The attached CTrends class Trend.mqh has been developed to solve this issue. During the initialization, a reference to the indicator class object and the minimum movement value considered as a trend continuation are passed to the class.
To get data on extremums, the following methods are provided in the class Trend.mqh:
• ExtremumByTime — get the extremum number in the database for a specified time,
• Extremum — return extremum at a specified position in the database,
• IsHigh — return true if a specified extremum is a top and false if it is a bottom.
The general information block features methods returning the total number of saved extremums, used symbol and timeframe.
------------------------------------------------------------------------------------------------------------------
The main class logic of Trend.mqh is implemented in the Calculate method. Let's take a closer look at it.
At the beginning of the method, check the relevance of the reference to the indicator class object and the presence of extremums found by the indicator.
Next, define the number of unprocessed extremums. If all extremums are processed, exit the method with the true result.
After that, request the necessary amount of extremums from the indicator class.
If there have been no extremums in the database up to this time, add the oldest extremum to the database by calling the AddTrendPoint method.
Next, arrange the loop with iteration over all downloaded extremums. Previous extremums before the last saved one are skipped.
In the next step, check if the extreme points are unidirectional. If a new extremum re-draws the previous one, update the data.
For oppositely directed extreme points, check whether the new movement is a continuation of a previous trend. If yes, update data on extremums. If no, add data on the extremum by calling the AddTrendPoint method;
------------------------------------------------------------------------------------------------------------------
You need the classes:
Include/ZigZag.mqh
Include/Trends.mqh
You might need those classes also:
Include/Pattern.mqh
Include/Header.mqh
Include/Trade/LimitTakeProfit.mqh
All functions from ZigZag indicator and the optimizer ZigZag.mqh and Trends.mqh should be changeable in the EA.
Based on the smoothed ZigZag signals, the EA should sell or buy as follows:
Here is an example of the logic needed. It would be good to encapsulate this logic in a separate class, so that it can easily fit on a new base later:
Let's say (optimized) ZigZag indicator generates a sell signal for EURUSD at 1.20660 then EA checks the latest bottom price where (optimized) ZigZag indicator turned upwards. This may was 1.20563. Then ZigZag_EA calculates the difference between 1.20660 and 1.20563 that is 0.00097 and divide it by a figure I want to choose, 6 for example That comes to 0.00016. Take profit is then 1,20643.
After that EURUSD make an unexpected rise to 1.2077 and (optimized) ZigZag indicator redraws and generates a sell signal again. ZigZag_EA sells again (a number of times of the first lot I want to set, like martingale. New take profit for the new sell position would be at (1.2077- 1.20563)/6+1.20563=1.205975 but ZigZag_EA must not set a new TP .
Meanwhile I am 0.00207 in loss with the first position, of course. Then market turns and the last position generates profit. At the very point when the profit of first position plus the profit of second position equals the first TP distance of 0.00097 close all sell positions.
For buy positions vice versa.
If you used ZigZag indicator at least once, you know how many compromises you have to make when searching for optimal parameters. Too small parameter values divide a big movement into small parts, while too big parameter values skip short movements. The algorithm for searching graphical patterns is very demanding as of quality of finding extremums. While trying to find a middle ground, I decided to use the indicator with small parameter values and create an additional superstructure combining unidirectional movements with short corrections into one movement.
The attached CTrends class Trend.mqh has been developed to solve this issue. During the initialization, a reference to the indicator class object and the minimum movement value considered as a trend continuation are passed to the class.
To get data on extremums, the following methods are provided in the class Trend.mqh:
• ExtremumByTime — get the extremum number in the database for a specified time,
• Extremum — return extremum at a specified position in the database,
• IsHigh — return true if a specified extremum is a top and false if it is a bottom.
The general information block features methods returning the total number of saved extremums, used symbol and timeframe.
------------------------------------------------------------------------------------------------------------------
The main class logic of Trend.mqh is implemented in the Calculate method. Let's take a closer look at it.
At the beginning of the method, check the relevance of the reference to the indicator class object and the presence of extremums found by the indicator.
Next, define the number of unprocessed extremums. If all extremums are processed, exit the method with the true result.
After that, request the necessary amount of extremums from the indicator class.
If there have been no extremums in the database up to this time, add the oldest extremum to the database by calling the AddTrendPoint method.
Next, arrange the loop with iteration over all downloaded extremums. Previous extremums before the last saved one are skipped.
In the next step, check if the extreme points are unidirectional. If a new extremum re-draws the previous one, update the data.
For oppositely directed extreme points, check whether the new movement is a continuation of a previous trend. If yes, update data on extremums. If no, add data on the extremum by calling the AddTrendPoint method;
------------------------------------------------------------------------------------------------------------------
You need the classes:
Include/ZigZag.mqh
Include/Trends.mqh
You might need those classes also:
Include/Pattern.mqh
Include/Header.mqh
Include/Trade/LimitTakeProfit.mqh
All functions from ZigZag indicator and the optimizer ZigZag.mqh and Trends.mqh should be changeable in the EA.
Based on the smoothed ZigZag signals, the EA should sell or buy as follows:
Here is an example of the logic needed. It would be good to encapsulate this logic in a separate class, so that it can easily fit on a new base later:
Let's say (optimized) ZigZag indicator generates a sell signal for EURUSD at 1.20660 then EA checks the latest bottom price where (optimized) ZigZag indicator turned upwards. This may was 1.20563. Then ZigZag_EA calculates the difference between 1.20660 and 1.20563 that is 0.00097 and divide it by a figure I want to choose, 6 for example That comes to 0.00016. Take profit is then 1,20643.
After that EURUSD make an unexpected rise to 1.2077 and (optimized) ZigZag indicator redraws and generates a sell signal again. ZigZag_EA sells again (a number of times of the first lot I want to set, like martingale. New take profit for the new sell position would be at (1.2077- 1.20563)/6+1.20563=1.205975 but ZigZag_EA must not set a new TP .
Meanwhile I am 0.00207 in loss with the first position, of course. Then market turns and the last position generates profit. At the very point when the profit of first position plus the profit of second position equals the first TP distance of 0.00097 close all sell positions.
For buy positions vice versa.
Откликнулись
1
Оценка
Проекты
193
11%
Арбитраж
37
38%
/
35%
Просрочено
5
3%
Загружен
2
Оценка
Проекты
12
25%
Арбитраж
1
0%
/
100%
Просрочено
0
Свободен
3
Оценка
Проекты
239
70%
Арбитраж
3
67%
/
33%
Просрочено
20
8%
Свободен
4
Оценка
Проекты
400
70%
Арбитраж
3
100%
/
0%
Просрочено
2
1%
Загружен
5
Оценка
Проекты
88
14%
Арбитраж
30
30%
/
53%
Просрочено
36
41%
Работает
Похожие заказы
Hi, Thanks for looking at my requirement. Here are the details of the job(MT4) and right now, we do have 2 jobs to do in same file. The clear detailed explanation along with the pictures are in the google drive link : https://drive.google.com/drive/folders/14KMGzunkE-Hbg0eK6iUrs4DNvRetTJYc?usp=sharing Also, i am into this coding thing for more than 2 years now full time. I am a math guy and not a coder. So the
Hi, Thanks for looking at my requirement. Here are the details of the job and right now, we do have 2 jobs to do in same file. The clear detailed explanation along with the pictures are in the google drive link : https://drive.google.com/drive/folders/14KMGzunkE-Hbg0eK6iUrs4DNvRetTJYc?usp=sharing Also, i am into this coding thing for more than 2 years now full time. I am a math guy and not a coder. So the
i want a robot and an indicator that uses macd..bolingerbands And emas As well as fibonacci retracement confirmation from SMC strategy , OB+CHoCH And RTO i want it to print SL and TP using High and Lows
I need telegram EA
30+ USD
Hello, I need an expert that can help me to develop an EA. That can also work while I open trade on phone, can I get this done? I need video demo and work sample. Thanks
Скальпер по стакану на Quantower
30+ USD
Скальпер по стакану ( фронтраннинг ) : Рассчитывает средний обьем ордеров в пределах N уровней цены от текущей цены , и ставит свой ордер на покупку/продажу перед ордером который на X % больше средней цены N уровней . Стоп лосс и тейк профит всегда заданы по умолчанию из настроек ( фиксированные ) . В случае если ордер перед которым мы ставили свой ордер перестает соответствовать условиям то мы свой ордер снимаем
We have an existing EA which use specific strategy based on our propriety Indicator(Semaphores) and Stochastic. The EA is multi symbol and Multi timeframe. we need to fix it for following issues 1 - Check the Status on close of the Candle[1] or open of the Candle[0] 2 - open order with SL which meet specific requirement 3 - Amend order for TP when specific requirement meet. 4 - Update the Scanner as in the picture. 5
Simple EA
35+ USD
I am looking for an experienced developer to help me create a simple EA. EA requirements are as follows: 1. EA needs to check if a trade is open based on magic number entered in EA settings by the user. 2. If matching magic number trade is open, then EA should do the following: a. If the magic number trade closes with TP. then monitor again for magic number trade to open.. b. If the magic number trade closes with SL
CREATE EA SCANNER BREAKOUT SNR MULTI TIMEFRAME
30 - 80 USD
I want to create an EA MT5 that can 1. identify support and resistance (based on close candles) 2. mark snr breakout 3. multitimeframe breakout scanner 4. scan the valid setup that appears 5. available for manual marking, INFO SPREAD & TIME NEXT BAR 6. sends alert notification to Telegram I need a professional and experienced developer with fast and good work according to what I want. if you are interested I will
To find existing EA or to develop new one
30 - 50 USD
I wanted to have existing EA or develop new one just to place pending orders according to according to signals received ( buy stop or sell stop ) from the indicator
Hi, I have an scalping Expert Advisor for XAUUSD pair with Break Out strategy using iADX indicator and it seems other indicators too. Need a help to do reverse engineering on it. Thanks
Информация о проекте
Бюджет
100+ USD
VAT (19%):
19
USD
Итого:
119
USD
Исполнителю
90
USD