Hedging Grid EA

MQL4 Experts

Trabalho concluído

Tempo de execução 7 dias
Comentário do desenvolvedor
Good client, good business
Comentário do cliente
Good Job

Termos de Referência

Project Overview: Hedging Grid EA
The goal is to create an MQL4 Expert Advisor that employs a hedging grid strategy. This means it will open both buy and sell trades, often simultaneously, and will add to positions at predefined intervals as the price moves.
Core Strategy:
Grid Trading: The EA places new pending orders (BUYSTOP, SELLSTOP) at a set distance from existing trades.
Hedging: It manages buy and sell trades independently, allowing them to run at the same time.
Lot Sizing: It can use a multiplier (martingale-style) or a fixed increment to increase the lot size for new grid orders.
Profit/Loss Management: It closes trades based on several conditions:
Profit target for a single direction (e.g., close all buys).
Combined profit target for both directions (hedged basket).
A hard stop-loss based on total drawdown.
Dynamic Orders: It uses trailing stops on open positions and can also "trail" its pending orders, adjusting their entry price as the market moves.
Visual Interface: The EA displays key information directly on the chart, including profits, average entry prices, and trading signals.
Part 1: EA Settings (Global extern Variables)
These are the user-configurable inputs. The programmer needs to declare these at the top of the file so they appear in the EA's settings window in MetaTrader.
Order Management:
Magic: int - A unique magic number to distinguish this EA's trades from others.
slippage: int - The maximum allowed slippage in points for order execution.
Allow_BUY, Allow_SELL: bool - Master switches to enable or disable buy and sell trading.
Open_order_on_trend: bool - A setting to control grid order placement logic (either with or against the trend).
Lot Sizing:
Order_lotsize: double - The initial lot size for the first trade in a series.
Multiply_lotsize_by: double - A multiplier for the next lot size (e.g., 1.5 for a martingale strategy).
Increase_lotsize_by: double - A fixed amount to add to the next lot size (used if the multiplier is 1.0).
Round_lotsize_to_decimals: int - The number of decimal places to round the lot size to (e.g., 2 for standard lots).
Grid & Order Spacing:
First_step: int - The distance in points from the current price to place the first pending order.
Distance_between_orders: int - The minimum distance in points between orders in the grid.
Minimum_price_distance: int - The minimum distance from the current price for subsequent pending orders.
Move_step: int - The number of points the price must move before a pending order is trailed (modified).
Stop Loss & Take Profit:
Stoploss, Takeprofit: int - The initial Stop Loss and Take Profit in points for each individual order.
Trailing_type: int - The type of trailing stop to use (0 = disabled). The programmer will need to implement the logic for different types if required.
Trailing_step: int - The step, in points, for the trailing stop.
Minimum_trailing_profit: int - The minimum profit in points an order must have before the trailing stop is activated.
Basket Closing Conditions:
Profit_for_closing_1_direction: double - The profit amount in account currency to close all trades in one direction (e.g., close all buys when their total profit reaches $50).
Profit_for_closing_2_directions: double - The profit amount to close all trades (buys and sells) when the combined profit of the hedged basket reaches this target.
Loss_for_closing: double - A negative dollar amount that triggers the closing of all trades in one direction (e.g., close all buys if their total profit reaches -$100).
Maximum_allowed_loss: double - A negative dollar amount that prevents the EA from opening new trades in a direction.
Close_loss_by_drawdown: double - A profit threshold. If the profit of either side drops below this, the EA switches to its "hedged close" logic.
Auto_calculated_profit: double - A setting to automatically calculate the profit target based on lot size and tick value.
Indicators & Timing:
Opening_1_order_on_indicators: bool - If true, the very first order will only be placed if RSI conditions are met.
Timeframe_indicator: int - The timeframe to use for the RSI calculation.
RSI_Period, Oversold_zone, Overbought_zone: int - Standard RSI settings.
Delete_Orders: bool - Enable/disable the scheduled deletion of all orders.
DeleteHour: int - The server hour (0-23) to delete all orders.
Visuals:
Font_size: int - The font size for text displayed on the chart.
Color_information: color - The color for the informational text.
Part 2: Main Program Structure (OnInit, OnDeinit, OnTick)
int OnInit(): This function runs once when the EA is first attached to a chart. Its purpose is to set up the visual display. The programmer should write code here to create all the necessary text objects (OBJ_LABEL) on the chart for displaying Balance, Equity, Profits, etc.
void OnDeinit(const int reason): This function runs once when the EA is removed from the chart. It should contain a cleanup routine to delete all chart objects created in OnInit().
void OnTick(): This is the heart of the EA, running on every new price tick. The programmer should implement this function exactly as it appears in the refactored code, with the main logic flow calling the 9 helper functions in sequence.
Part 3: Helper Function Implementation
The programmer should create each of the 9 functions called by OnTick.
HandleScheduledOrderDeletion(): Simple function. Check the Delete_Orders setting and the current server hour. If they match DeleteHour, call a function to close/delete all orders.
ProcessOpenOrders(...): This is a critical data-gathering function. It must loop through all orders, filter them by the current symbol and magic number, and then calculate all the key metrics (counts, lots, profits, price points) needed by the other functions.
UpdateAveragePriceObjects(...): This function should first delete the old "SLb" and "SLs" arrows from the chart. Then, if buy or sell orders exist, it should create new arrows (OBJ_ARROW with SYMBOL_RIGHTPRICE) at the calculated averageBuyPrice and averageSellPrice.
ApplyTrailingStops(...): Loop through all open trades. For each trade, calculate the potential new trailing stop loss price. If this new price is better than the current one (higher for buys, lower for sells) and meets the minimum profit condition, modify the order using OrderModify().
ManageProfitAndLossClosing(...): Implement the series of if statements to check the various profit and loss conditions against the targets. If a condition is met, it should call the CloseOrders() function with the correct parameter (1 for buys, -1 for sells, 0 for all).
UpdateTradingSignals(...): This function updates the chart labels ("Char.b", "Char.s") that show if trading is allowed. It uses ObjectSetText() with special Wingdings font characters to display green checkmarks or red crosses.
ManagePendingOrders(...): Implement the logic to place new grid orders. This involves calculating the lot size, determining the entry price based on distance rules and RSI, and checking if there is enough free margin before calling OrderSend().
ModifyPendingOrders(...): Implement the "trailing pending order" logic. Calculate the ideal new price for the existing pending order and compare it to its current price. If the complex shouldModify condition is met, call OrderModify() to update the order's entry price.
UpdateChartInformation(...): Update all the informational text labels on the chart (Balance, Equity, ProfitB, etc.) with the latest values calculated in ProcessOpenOrders.
Part 4: Required Utility Functions
The programmer will also need to create the functions that perform the actual trading actions and calculations.
CloseOrders(int direction): This function will loop through all orders. Based on the direction parameter (1, -1, or 0), it will use OrderClose() on the matching trades.
DeleteOrders(): Similar to CloseOrders, but it will use OrderDelete() for pending orders and OrderClose() for open market orders.
TradingHours(): A function that checks the current server time against user-defined start and end hours to determine if the EA is within its allowed trading session.
CalculateTrailingStop(...): The logic to calculate the trailing stop price. This could be as simple as Bid - Trailing_Stop_Points for a buy order.
UpdateChartLabel(...): A small helper function to make creating and updating the text objects in OnInit and UpdateChartInformation cleaner and less repetitive.

Arquivos anexados:

Respondido

1
Desenvolvedor 1
Classificação
(284)
Projetos
355
29%
Arbitragem
37
27% / 65%
Expirado
10
3%
Trabalhando
2
Desenvolvedor 2
Classificação
(111)
Projetos
183
25%
Arbitragem
25
16% / 76%
Expirado
16
9%
Livre
3
Desenvolvedor 3
Classificação
(17)
Projetos
21
19%
Arbitragem
5
40% / 40%
Expirado
0
Livre
4
Desenvolvedor 4
Classificação
(510)
Projetos
977
74%
Arbitragem
27
19% / 67%
Expirado
100
10%
Trabalhando
Publicou: 1 artigo, 6 códigos
5
Desenvolvedor 5
Classificação
(98)
Projetos
137
52%
Arbitragem
5
40% / 60%
Expirado
0
Livre
6
Desenvolvedor 6
Classificação
Projetos
0
0%
Arbitragem
0
Expirado
0
Livre
7
Desenvolvedor 7
Classificação
(68)
Projetos
127
41%
Arbitragem
19
47% / 53%
Expirado
33
26%
Livre
8
Desenvolvedor 8
Classificação
(47)
Projetos
67
37%
Arbitragem
5
40% / 40%
Expirado
1
1%
Livre
9
Desenvolvedor 9
Classificação
(365)
Projetos
507
40%
Arbitragem
159
17% / 74%
Expirado
99
20%
Carregado
10
Desenvolvedor 10
Classificação
(319)
Projetos
571
35%
Arbitragem
83
31% / 45%
Expirado
206
36%
Livre
11
Desenvolvedor 11
Classificação
(25)
Projetos
31
13%
Arbitragem
14
0% / 79%
Expirado
9
29%
Livre
12
Desenvolvedor 12
Classificação
(16)
Projetos
35
23%
Arbitragem
4
0% / 50%
Expirado
2
6%
Trabalhando
13
Desenvolvedor 13
Classificação
(12)
Projetos
13
23%
Arbitragem
7
0% / 71%
Expirado
3
23%
Trabalhando
14
Desenvolvedor 14
Classificação
(574)
Projetos
945
47%
Arbitragem
309
58% / 27%
Expirado
125
13%
Livre
15
Desenvolvedor 15
Classificação
(78)
Projetos
246
74%
Arbitragem
7
100% / 0%
Expirado
1
0%
Livre
Publicou: 1 artigo
16
Desenvolvedor 16
Classificação
(59)
Projetos
92
42%
Arbitragem
4
0% / 100%
Expirado
3
3%
Trabalhando
17
Desenvolvedor 17
Classificação
(14)
Projetos
14
36%
Arbitragem
1
0% / 100%
Expirado
1
7%
Trabalhando
18
Desenvolvedor 18
Classificação
(1)
Projetos
1
0%
Arbitragem
0
Expirado
0
Livre
19
Desenvolvedor 19
Classificação
(43)
Projetos
66
12%
Arbitragem
12
58% / 42%
Expirado
1
2%
Livre
20
Desenvolvedor 20
Classificação
(8)
Projetos
7
0%
Arbitragem
3
0% / 100%
Expirado
2
29%
Livre
21
Desenvolvedor 21
Classificação
(271)
Projetos
553
50%
Arbitragem
57
40% / 37%
Expirado
227
41%
Trabalhando
22
Desenvolvedor 22
Classificação
(1)
Projetos
2
0%
Arbitragem
2
0% / 50%
Expirado
0
Livre
23
Desenvolvedor 23
Classificação
(10)
Projetos
13
0%
Arbitragem
24
0% / 75%
Expirado
4
31%
Trabalhando
24
Desenvolvedor 24
Classificação
(52)
Projetos
65
40%
Arbitragem
15
27% / 60%
Expirado
1
2%
Trabalhando
25
Desenvolvedor 25
Classificação
(2)
Projetos
2
0%
Arbitragem
0
Expirado
0
Livre
Pedidos semelhantes
Create a fully automated MetaTrader 5 (MT5) Expert Advisor (EA) in MQL5 based on the following exact trading strategy. STRATEGY NAME: Previous Day High/Low Daily Breakout Strategy INSTRUMENTS: 1. XAUUSD — fixed lot size: 0.01 2. EURUSD — fixed lot size: 0.10 TIMEZONE: All strategy times must be calculated in Indian Standard Time (IST / UTC+5:30). The broker's server time may be different, so the EA must correctly
OVERVIEW: I am looking for an experienced MQL developer to build a proprietary Expert Advisor (EA) specifically optimized to PASS evaluation challenges on modern prop firms (specifically targeting The 5%ers execution rules). The EA must rely on momentum and volume expansions, completely avoiding toxic strategies such as Grid, Martingale, or averaging down. Every trade must protect the account's daily drawdown
Hello here, I need someone who can work on pinescript and also with Renko charts. My entries for my strategy would be based on stop orders Kindly let me know if you can work on this for me and i will send necessary file and quote in the chat
Trade XAUUSD only Support MT5 Use Buy Stop and Sell Stop pending orders around a configurable breakout range. When the market breaks the range, activate the corresponding trade. Automatically place Stop Loss and Take Profit immediately with every order. Automatically cancel the opposite pending order after one side is triggered. No Martingale No Grid No averaging down No loss recovery system No unlimited position
Hey guys, I’ve got an MT4 HFT EA that’s showing strong results on an IC Markets demo account, and I'm looking to move it over to MT5. Does anyone have a solid MT5 version that performs well on IC Markets? Having the source code (MQL5) included would be awesome. Thanks for any leads
Hello! I want to automatically trade on Sierra Charts (IronBeam Brokerage). NQ ($20 per "handle") or MNQ ($2 per point or handle) - futures Broker: IronBeam mostly for the low capital requirement for futures Chart: Sierra Charts I almost exclusively trade a 5-20 bracket with 2 contracts (first contract closes at a +5 and second bracket closes at a +20.) When the +5 is reached, I move my stop from -15 to BE
Let’s use Chart M3. Stochastic 8,3,3. 85/15 trigger for sell stochastic >85, and the reversal move need to engulf the last bar for 1 point. SL over the engulfed bar. Same trigger for buys… Stochastic <15, engulfed bar by 1 point = entrance. SL under the engulfed bar… more details as soon we start to work on it
Scalping EA/straddle 30 - 200 USD
Title: Custom EA: Dynamic Trailing Limit Grid with Volatility/Velocity Filter and Auto SL/TP Description: I am looking for an experienced MQL5 programmer to develop a high-performance, robust Expert Advisor (EA) for MetaTrader 5. The strategy relies on dynamic trailing limit orders that automatically adjust to market price changes, featuring a safety buffer during high-velocity price spikes. The EA must include the
Freelance Task — EA Recovery Layer Hello. I have a ready-made MQL5 EA. The signals, SL/TP and lot calculation should essentially not be touched. I need a recovery system added. I am not a programmer — below is how the robot should behave. What stays Entry only from an EA signal. Stop-loss is not a new signal. Trailing is already built into my EA — recovery does not implement its own trailing. If trailing is disabled
Watcher position 30 - 100 USD
//+------------------------------------------------------------------+ //| synthetic tick generator based on two assets | //+------------------------------------------------------------------+ class CSyntheticTickGenerator { private : string symbol_a; string symbol_b; string synth_name; double ratio; double last_price_a; double

Informações sobre o projeto

Orçamento
100 - 150 USD
Prazo
para 7 dias